From d0a8b21d939aba7ed3c624db081c578d0fc1ba5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Sun, 16 Mar 2025 10:33:14 +0100 Subject: [PATCH 1/3] Sort numeric symbols --- internal/checker/checker.go | 5 + internal/checker/utilities.go | 12 ++ .../declarationEmitLateBoundAssignments.types | 20 +-- ...arationEmitLateBoundAssignments.types.diff | 20 +-- ...eclarationEmitLateBoundJSAssignments.types | 20 +-- ...ationEmitLateBoundJSAssignments.types.diff | 20 +-- ...tionEmitPartialReuseComputedProperty.types | 12 +- ...mitPartialReuseComputedProperty.types.diff | 12 +- .../submodule/compiler/dynamicNames.types | 12 +- .../compiler/dynamicNames.types.diff | 12 +- .../isolatedDeclarationErrorsObjects.types | 4 +- ...solatedDeclarationErrorsObjects.types.diff | 4 +- .../compiler/keyofDoesntContainSymbols.types | 12 +- .../keyofDoesntContainSymbols.types.diff | 12 +- .../mappedTypeIndexedAccessConstraint.types | 8 +- ...ppedTypeIndexedAccessConstraint.types.diff | 8 +- .../normalizedIntersectionTooComplex.types | 82 ++++++------- ...ormalizedIntersectionTooComplex.types.diff | 82 ++++++------- .../numericIndexerConstraint5.errors.txt | 4 +- .../numericIndexerConstraint5.errors.txt.diff | 16 +++ .../compiler/numericIndexerConstraint5.types | 6 +- .../numericIndexerConstraint5.types.diff | 20 +++ .../compiler/objectLiteralIndexerErrors.types | 6 +- .../objectLiteralIndexerErrors.types.diff | 20 +++ .../compiler/objectLiteralIndexers.types | 10 +- .../compiler/objectLiteralIndexers.types.diff | 31 +++++ .../compiler/propertiesAndIndexers.types | 2 +- .../compiler/propertiesAndIndexers.types.diff | 9 ++ .../compiler/ramdaToolsNoInfinite2.types | 4 +- .../compiler/ramdaToolsNoInfinite2.types.diff | 4 +- .../restElementWithNumberPropertyName.types | 2 +- ...stElementWithNumberPropertyName.types.diff | 2 +- .../restParameterWithBindingPattern3.types | 2 +- ...estParameterWithBindingPattern3.types.diff | 2 +- .../arityAndOrderCompatibility01.errors.txt | 10 +- ...ityAndOrderCompatibility01.errors.txt.diff | 25 +--- .../computedPropertyNames10_ES5.types | 4 +- .../computedPropertyNames10_ES5.types.diff | 4 +- .../computedPropertyNames10_ES6.types | 4 +- .../computedPropertyNames10_ES6.types.diff | 4 +- .../computedPropertyNames11_ES5.types | 4 +- .../computedPropertyNames11_ES5.types.diff | 4 +- .../computedPropertyNames11_ES6.types | 4 +- .../computedPropertyNames11_ES6.types.diff | 4 +- .../computedPropertyNames4_ES5.types | 4 +- .../computedPropertyNames4_ES5.types.diff | 4 +- .../computedPropertyNames4_ES6.types | 4 +- .../computedPropertyNames4_ES6.types.diff | 4 +- ...utedPropertyNamesContextualType6_ES5.types | 2 +- ...ropertyNamesContextualType6_ES5.types.diff | 2 +- ...utedPropertyNamesContextualType6_ES6.types | 2 +- ...ropertyNamesContextualType6_ES6.types.diff | 2 +- ...ntiationAssignmentWithIndexingOnLHS3.types | 16 +-- ...ionAssignmentWithIndexingOnLHS3.types.diff | 51 ++++++++ .../conformance/importAttributes7.types | 4 +- .../conformance/importAttributes7.types.diff | 15 ++- .../conformance/indexSignatures1.types | 4 +- .../conformance/indexSignatures1.types.diff | 4 +- ...ndexerConstrainsPropertyDeclarations.types | 4 +- ...rConstrainsPropertyDeclarations.types.diff | 4 +- ...dexerConstrainsPropertyDeclarations2.types | 4 +- ...ConstrainsPropertyDeclarations2.types.diff | 4 +- ...ropertiesErrorFromNotUsingIdentifier.types | 8 +- ...tiesErrorFromNotUsingIdentifier.types.diff | 17 ++- ...ctTypeWithStringNamedNumericProperty.types | 30 ++--- ...eWithStringNamedNumericProperty.types.diff | 116 ++++++++++++++++++ .../objectTypesWithOptionalProperties2.types | 4 +- ...ectTypesWithOptionalProperties2.types.diff | 4 +- ...ndexerConstrainsPropertyDeclarations.types | 4 +- ...rConstrainsPropertyDeclarations.types.diff | 4 +- 70 files changed, 582 insertions(+), 303 deletions(-) create mode 100644 testdata/baselines/reference/submodule/compiler/numericIndexerConstraint5.errors.txt.diff create mode 100644 testdata/baselines/reference/submodule/compiler/numericIndexerConstraint5.types.diff create mode 100644 testdata/baselines/reference/submodule/conformance/emitCompoundExponentiationAssignmentWithIndexingOnLHS3.types.diff diff --git a/internal/checker/checker.go b/internal/checker/checker.go index ec83d74faf..19d03d3ee0 100644 --- a/internal/checker/checker.go +++ b/internal/checker/checker.go @@ -4,6 +4,8 @@ import ( "fmt" "maps" "math" + + // "runtime" "slices" "strconv" "strings" @@ -23090,6 +23092,9 @@ func (c *Checker) setStructuredTypeMembers(t *Type, members ast.SymbolTable, cal t.objectFlags |= ObjectFlagsMembersResolved data := t.AsStructuredType() data.members = members + // if t.id == 167 { + // runtime.Breakpoint() + // } data.properties = c.getNamedMembers(members) if len(callSignatures) != 0 { if len(constructSignatures) != 0 { diff --git a/internal/checker/utilities.go b/internal/checker/utilities.go index bce86c616f..d6ac26990a 100644 --- a/internal/checker/utilities.go +++ b/internal/checker/utilities.go @@ -3,6 +3,7 @@ package checker import ( "cmp" "slices" + "strconv" "strings" "sync" @@ -632,6 +633,17 @@ func (c *Checker) compareSymbolsWorker(s1, s2 *ast.Symbol) int { if s2 == nil { return -1 } + int1, err1 := strconv.Atoi(s1.Name) + int2, err2 := strconv.Atoi(s2.Name) + if err1 == nil && err2 == nil { + if rv := cmp.Compare(int1, int2); rv != 0 { + return rv + } + } else if err1 == nil { + return -1 + } else if err2 == nil { + return 1 + } if len(s1.Declarations) != 0 && len(s2.Declarations) != 0 { if r := c.compareNodes(s1.Declarations[0], s2.Declarations[0]); r != 0 { return r diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitLateBoundAssignments.types b/testdata/baselines/reference/submodule/compiler/declarationEmitLateBoundAssignments.types index 7190426992..38b38bc7b4 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitLateBoundAssignments.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitLateBoundAssignments.types @@ -2,12 +2,12 @@ === declarationEmitLateBoundAssignments.ts === export function foo() {} ->foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } +>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } foo.bar = 12; >foo.bar = 12 : 12 >foo.bar : number ->foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } +>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >bar : number >12 : 12 @@ -19,7 +19,7 @@ const _private = Symbol(); foo[_private] = "ok"; >foo[_private] = "ok" : "ok" >foo[_private] : string ->foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } +>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >_private : unique symbol >"ok" : "ok" @@ -30,7 +30,7 @@ const strMem = "strMemName"; foo[strMem] = "ok"; >foo[strMem] = "ok" : "ok" >foo[strMem] : string ->foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } +>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >strMem : "strMemName" >"ok" : "ok" @@ -41,7 +41,7 @@ const dashStrMem = "dashed-str-mem"; foo[dashStrMem] = "ok"; >foo[dashStrMem] = "ok" : "ok" >foo[dashStrMem] : string ->foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } +>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >dashStrMem : "dashed-str-mem" >"ok" : "ok" @@ -52,31 +52,31 @@ const numMem = 42; foo[numMem] = "ok"; >foo[numMem] = "ok" : "ok" >foo[numMem] : string ->foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } +>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >numMem : 42 >"ok" : "ok" const x: string = foo[_private]; >x : string >foo[_private] : string ->foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } +>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >_private : unique symbol const y: string = foo[strMem]; >y : string >foo[strMem] : string ->foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } +>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >strMem : "strMemName" const z: string = foo[numMem]; >z : string >foo[numMem] : string ->foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } +>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >numMem : 42 const a: string = foo[dashStrMem]; >a : string >foo[dashStrMem] : string ->foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } +>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >dashStrMem : "dashed-str-mem" diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitLateBoundAssignments.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitLateBoundAssignments.types.diff index 31fd477630..259387769e 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitLateBoundAssignments.types.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitLateBoundAssignments.types.diff @@ -5,13 +5,13 @@ === declarationEmitLateBoundAssignments.ts === export function foo() {} ->foo : typeof foo -+>foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } ++>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } foo.bar = 12; >foo.bar = 12 : 12 >foo.bar : number ->foo : typeof foo -+>foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } ++>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >bar : number >12 : 12 @@ -20,7 +20,7 @@ >foo[_private] = "ok" : "ok" >foo[_private] : string ->foo : typeof foo -+>foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } ++>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >_private : unique symbol >"ok" : "ok" @@ -29,7 +29,7 @@ >foo[strMem] = "ok" : "ok" >foo[strMem] : string ->foo : typeof foo -+>foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } ++>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >strMem : "strMemName" >"ok" : "ok" @@ -38,7 +38,7 @@ >foo[dashStrMem] = "ok" : "ok" >foo[dashStrMem] : string ->foo : typeof foo -+>foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } ++>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >dashStrMem : "dashed-str-mem" >"ok" : "ok" @@ -47,7 +47,7 @@ >foo[numMem] = "ok" : "ok" >foo[numMem] : string ->foo : typeof foo -+>foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } ++>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >numMem : 42 >"ok" : "ok" @@ -55,27 +55,27 @@ >x : string >foo[_private] : string ->foo : typeof foo -+>foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } ++>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >_private : unique symbol const y: string = foo[strMem]; >y : string >foo[strMem] : string ->foo : typeof foo -+>foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } ++>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >strMem : "strMemName" const z: string = foo[numMem]; >z : string >foo[numMem] : string ->foo : typeof foo -+>foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } ++>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >numMem : 42 const a: string = foo[dashStrMem]; >a : string >foo[dashStrMem] : string ->foo : typeof foo -+>foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } ++>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >dashStrMem : "dashed-str-mem" diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitLateBoundJSAssignments.types b/testdata/baselines/reference/submodule/compiler/declarationEmitLateBoundJSAssignments.types index 55206ad169..1912251cd3 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitLateBoundJSAssignments.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitLateBoundJSAssignments.types @@ -2,12 +2,12 @@ === file.js === export function foo() {} ->foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } +>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } foo.bar = 12; >foo.bar = 12 : 12 >foo.bar : number ->foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } +>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >bar : number >12 : 12 @@ -19,7 +19,7 @@ const _private = Symbol(); foo[_private] = "ok"; >foo[_private] = "ok" : "ok" >foo[_private] : string ->foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } +>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >_private : unique symbol >"ok" : "ok" @@ -30,7 +30,7 @@ const strMem = "strMemName"; foo[strMem] = "ok"; >foo[strMem] = "ok" : "ok" >foo[strMem] : string ->foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } +>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >strMem : "strMemName" >"ok" : "ok" @@ -41,7 +41,7 @@ const dashStrMem = "dashed-str-mem"; foo[dashStrMem] = "ok"; >foo[dashStrMem] = "ok" : "ok" >foo[dashStrMem] : string ->foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } +>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >dashStrMem : "dashed-str-mem" >"ok" : "ok" @@ -52,7 +52,7 @@ const numMem = 42; foo[numMem] = "ok"; >foo[numMem] = "ok" : "ok" >foo[numMem] : string ->foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } +>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >numMem : 42 >"ok" : "ok" @@ -60,27 +60,27 @@ foo[numMem] = "ok"; const x = foo[_private]; >x : string >foo[_private] : string ->foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } +>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >_private : unique symbol /** @type {string} */ const y = foo[strMem]; >y : string >foo[strMem] : string ->foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } +>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >strMem : "strMemName" /** @type {string} */ const z = foo[numMem]; >z : string >foo[numMem] : string ->foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } +>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >numMem : 42 /** @type {string} */ const a = foo[dashStrMem]; >a : string >foo[dashStrMem] : string ->foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } +>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >dashStrMem : "dashed-str-mem" diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitLateBoundJSAssignments.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitLateBoundJSAssignments.types.diff index 23ad028a06..7febaf0d5c 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitLateBoundJSAssignments.types.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitLateBoundJSAssignments.types.diff @@ -5,13 +5,13 @@ === file.js === export function foo() {} ->foo : typeof foo -+>foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } ++>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } foo.bar = 12; >foo.bar = 12 : 12 >foo.bar : number ->foo : typeof foo -+>foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } ++>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >bar : number >12 : 12 @@ -20,7 +20,7 @@ >foo[_private] = "ok" : "ok" >foo[_private] : string ->foo : typeof foo -+>foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } ++>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >_private : unique symbol >"ok" : "ok" @@ -29,7 +29,7 @@ >foo[strMem] = "ok" : "ok" >foo[strMem] : string ->foo : typeof foo -+>foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } ++>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >strMem : "strMemName" >"ok" : "ok" @@ -38,7 +38,7 @@ >foo[dashStrMem] = "ok" : "ok" >foo[dashStrMem] : string ->foo : typeof foo -+>foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } ++>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >dashStrMem : "dashed-str-mem" >"ok" : "ok" @@ -47,7 +47,7 @@ >foo[numMem] = "ok" : "ok" >foo[numMem] : string ->foo : typeof foo -+>foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } ++>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >numMem : 42 >"ok" : "ok" @@ -56,7 +56,7 @@ >x : string >foo[_private] : string ->foo : typeof foo -+>foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } ++>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >_private : unique symbol /** @type {string} */ @@ -64,7 +64,7 @@ >y : string >foo[strMem] : string ->foo : typeof foo -+>foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } ++>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >strMem : "strMemName" /** @type {string} */ @@ -72,7 +72,7 @@ >z : string >foo[numMem] : string ->foo : typeof foo -+>foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } ++>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >numMem : 42 /** @type {string} */ @@ -80,6 +80,6 @@ >a : string >foo[dashStrMem] : string ->foo : typeof foo -+>foo : { (): void; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; foo[numMem]: string; } ++>foo : { (): void; foo[numMem]: string; bar: number; foo[_private]: string; strMemName: string; foo[dashStrMem]: string; } >dashStrMem : "dashed-str-mem" diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitPartialReuseComputedProperty.types b/testdata/baselines/reference/submodule/compiler/declarationEmitPartialReuseComputedProperty.types index 4bbd6cf447..1f0547fd5d 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitPartialReuseComputedProperty.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitPartialReuseComputedProperty.types @@ -15,9 +15,9 @@ export const neg = -1; >1 : 1 export const o = () => null! as { [n]: string, foo: string, [poz]: number, [neg]: number } ->o : () => { A: string; foo: string; [poz]: number; [neg]: number; } ->() => null! as { [n]: string, foo: string, [poz]: number, [neg]: number } : () => { A: string; foo: string; [poz]: number; [neg]: number; } ->null! as { [n]: string, foo: string, [poz]: number, [neg]: number } : { A: string; foo: string; [poz]: number; [neg]: number; } +>o : () => { [neg]: number; [poz]: number; A: string; foo: string; } +>() => null! as { [n]: string, foo: string, [poz]: number, [neg]: number } : () => { [neg]: number; [poz]: number; A: string; foo: string; } +>null! as { [n]: string, foo: string, [poz]: number, [neg]: number } : { [neg]: number; [poz]: number; A: string; foo: string; } >null! : never >[n] : string >n : "A" @@ -29,9 +29,9 @@ export const o = () => null! as { [n]: string, foo: string, [poz]: number, [neg] === b.ts === import { o } from "./a"; ->o : () => { A: string; foo: string; [poz]: number; [neg]: number; } +>o : () => { [neg]: number; [poz]: number; A: string; foo: string; } export const g = o ->g : () => { A: string; foo: string; [poz]: number; [neg]: number; } ->o : () => { A: string; foo: string; [poz]: number; [neg]: number; } +>g : () => { [neg]: number; [poz]: number; A: string; foo: string; } +>o : () => { [neg]: number; [poz]: number; A: string; foo: string; } diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitPartialReuseComputedProperty.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitPartialReuseComputedProperty.types.diff index e1d9bb6334..16a7ee5728 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitPartialReuseComputedProperty.types.diff +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitPartialReuseComputedProperty.types.diff @@ -7,9 +7,9 @@ ->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 } : { foo: string; A: string; 1: number; [-1]: number; } -+>o : () => { A: string; foo: string; [poz]: number; [neg]: number; } -+>() => null! as { [n]: string, foo: string, [poz]: number, [neg]: number } : () => { A: string; foo: string; [poz]: number; [neg]: number; } -+>null! as { [n]: string, foo: string, [poz]: number, [neg]: number } : { A: string; foo: string; [poz]: number; [neg]: number; } ++>o : () => { [neg]: number; [poz]: number; A: string; foo: string; } ++>() => null! as { [n]: string, foo: string, [poz]: number, [neg]: number } : () => { [neg]: number; [poz]: number; A: string; foo: string; } ++>null! as { [n]: string, foo: string, [poz]: number, [neg]: number } : { [neg]: number; [poz]: number; A: string; foo: string; } >null! : never >[n] : string >n : "A" @@ -18,11 +18,11 @@ === b.ts === import { o } from "./a"; ->o : () => { A: string; foo: string; 1: number; [-1]: number; } -+>o : () => { A: string; foo: string; [poz]: number; [neg]: number; } ++>o : () => { [neg]: number; [poz]: number; A: string; foo: string; } export const g = o ->g : () => { A: string; foo: string; 1: number; [-1]: number; } ->o : () => { A: string; foo: string; 1: number; [-1]: number; } -+>g : () => { A: string; foo: string; [poz]: number; [neg]: number; } -+>o : () => { A: string; foo: string; [poz]: number; [neg]: number; } ++>g : () => { [neg]: number; [poz]: number; A: string; foo: string; } ++>o : () => { [neg]: number; [poz]: number; A: string; foo: string; } diff --git a/testdata/baselines/reference/submodule/compiler/dynamicNames.types b/testdata/baselines/reference/submodule/compiler/dynamicNames.types index 3750e7cd26..4e59cc7b66 100644 --- a/testdata/baselines/reference/submodule/compiler/dynamicNames.types +++ b/testdata/baselines/reference/submodule/compiler/dynamicNames.types @@ -492,8 +492,8 @@ t0 = C; // static side // object literals export const o1 = { ->o1 : { a: number; [c5]: string; [s2]: boolean; } ->{ [c4]: 1, [c5]: "a", [s2]: true} : { a: number; [c5]: string; [s2]: boolean; } +>o1 : { [c5]: string; a: number; [s2]: boolean; } +>{ [c4]: 1, [c5]: "a", [s2]: true} : { [c5]: string; a: number; [s2]: boolean; } [c4]: 1, >[c4] : number @@ -516,24 +516,24 @@ export const o1 = { export const o1_c4 = o1[c4]; >o1_c4 : number >o1[c4] : number ->o1 : { a: number; [c5]: string; [s2]: boolean; } +>o1 : { [c5]: string; a: number; [s2]: boolean; } >c4 : "a" export const o1_c5 = o1[c5]; >o1_c5 : string >o1[c5] : string ->o1 : { a: number; [c5]: string; [s2]: boolean; } +>o1 : { [c5]: string; a: number; [s2]: boolean; } >c5 : 1 export const o1_s2 = o1[s2]; >o1_s2 : boolean >o1[s2] : boolean ->o1 : { a: number; [c5]: string; [s2]: boolean; } +>o1 : { [c5]: string; a: number; [s2]: boolean; } >s2 : unique symbol export const o2: T0 = o1; >o2 : T0 ->o1 : { a: number; [c5]: string; [s2]: boolean; } +>o1 : { [c5]: string; a: number; [s2]: boolean; } // recursive declarations // (type parameter indirection courtesy of #20400) diff --git a/testdata/baselines/reference/submodule/compiler/dynamicNames.types.diff b/testdata/baselines/reference/submodule/compiler/dynamicNames.types.diff index 5290b013bc..dbe8371b59 100644 --- a/testdata/baselines/reference/submodule/compiler/dynamicNames.types.diff +++ b/testdata/baselines/reference/submodule/compiler/dynamicNames.types.diff @@ -182,8 +182,8 @@ export const o1 = { ->o1 : { a: number; 1: string; [s0]: boolean; } ->{ [c4]: 1, [c5]: "a", [s2]: true} : { a: number; 1: string; [s0]: boolean; } -+>o1 : { a: number; [c5]: string; [s2]: boolean; } -+>{ [c4]: 1, [c5]: "a", [s2]: true} : { a: number; [c5]: string; [s2]: boolean; } ++>o1 : { [c5]: string; a: number; [s2]: boolean; } ++>{ [c4]: 1, [c5]: "a", [s2]: true} : { [c5]: string; a: number; [s2]: boolean; } [c4]: 1, >[c4] : number @@ -192,27 +192,27 @@ >o1_c4 : number >o1[c4] : number ->o1 : { a: number; 1: string; [s0]: boolean; } -+>o1 : { a: number; [c5]: string; [s2]: boolean; } ++>o1 : { [c5]: string; a: number; [s2]: boolean; } >c4 : "a" export const o1_c5 = o1[c5]; >o1_c5 : string >o1[c5] : string ->o1 : { a: number; 1: string; [s0]: boolean; } -+>o1 : { a: number; [c5]: string; [s2]: boolean; } ++>o1 : { [c5]: string; a: number; [s2]: boolean; } >c5 : 1 export const o1_s2 = o1[s2]; >o1_s2 : boolean >o1[s2] : boolean ->o1 : { a: number; 1: string; [s0]: boolean; } -+>o1 : { a: number; [c5]: string; [s2]: boolean; } ++>o1 : { [c5]: string; a: number; [s2]: boolean; } >s2 : unique symbol export const o2: T0 = o1; >o2 : T0 ->o1 : { a: number; 1: string; [s0]: boolean; } -+>o1 : { a: number; [c5]: string; [s2]: boolean; } ++>o1 : { [c5]: string; a: number; [s2]: boolean; } // recursive declarations // (type parameter indirection courtesy of #20400) diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsObjects.types b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsObjects.types index 183686c48d..ba946f5d2e 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsObjects.types +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsObjects.types @@ -173,8 +173,8 @@ enum E { >10 : 10 } export const oWithComputedProperties = { ->oWithComputedProperties : { [x: string]: number; [x: number]: number; [1]: number; [prop(2)]: number; [s]: number; [E.V]: number; } ->{ [1]: 1, [1 + 3]: 1, [prop(2)]: 2, [s]: 1, [E.V]: 1, [str]: 0,} : { [x: string]: number; [x: number]: number; [1]: number; [prop(2)]: number; [s]: number; [E.V]: number; } +>oWithComputedProperties : { [x: string]: number; [x: number]: number; [1]: number; [prop(2)]: number; [E.V]: number; [s]: number; } +>{ [1]: 1, [1 + 3]: 1, [prop(2)]: 2, [s]: 1, [E.V]: 1, [str]: 0,} : { [x: string]: number; [x: number]: number; [1]: number; [prop(2)]: number; [E.V]: number; [s]: number; } [1]: 1, >[1] : number diff --git a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsObjects.types.diff b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsObjects.types.diff index 67d851d14a..29a370bb0c 100644 --- a/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsObjects.types.diff +++ b/testdata/baselines/reference/submodule/compiler/isolatedDeclarationErrorsObjects.types.diff @@ -50,8 +50,8 @@ export const oWithComputedProperties = { ->oWithComputedProperties : { [x: string]: number; [x: number]: number; 1: number; 2: number; [s]: number; 10: number; } ->{ [1]: 1, [1 + 3]: 1, [prop(2)]: 2, [s]: 1, [E.V]: 1, [str]: 0,} : { [x: string]: number; [x: number]: number; 1: number; 2: number; [s]: number; 10: number; } -+>oWithComputedProperties : { [x: string]: number; [x: number]: number; [1]: number; [prop(2)]: number; [s]: number; [E.V]: number; } -+>{ [1]: 1, [1 + 3]: 1, [prop(2)]: 2, [s]: 1, [E.V]: 1, [str]: 0,} : { [x: string]: number; [x: number]: number; [1]: number; [prop(2)]: number; [s]: number; [E.V]: number; } ++>oWithComputedProperties : { [x: string]: number; [x: number]: number; [1]: number; [prop(2)]: number; [E.V]: number; [s]: number; } ++>{ [1]: 1, [1 + 3]: 1, [prop(2)]: 2, [s]: 1, [E.V]: 1, [str]: 0,} : { [x: string]: number; [x: number]: number; [1]: number; [prop(2)]: number; [E.V]: number; [s]: number; } [1]: 1, >[1] : number diff --git a/testdata/baselines/reference/submodule/compiler/keyofDoesntContainSymbols.types b/testdata/baselines/reference/submodule/compiler/keyofDoesntContainSymbols.types index e346e42729..b7d6b53f37 100644 --- a/testdata/baselines/reference/submodule/compiler/keyofDoesntContainSymbols.types +++ b/testdata/baselines/reference/submodule/compiler/keyofDoesntContainSymbols.types @@ -11,8 +11,8 @@ const num = 0; >0 : 0 const obj = { num: 0, str: 's', [num]: num as 0, [sym]: sym }; ->obj : { num: number; str: string; [num]: 0; [sym]: symbol; } ->{ num: 0, str: 's', [num]: num as 0, [sym]: sym } : { num: number; str: string; [num]: 0; [sym]: symbol; } +>obj : { [num]: 0; num: number; str: string; [sym]: symbol; } +>{ num: 0, str: 's', [num]: num as 0, [sym]: sym } : { [num]: 0; num: number; str: string; [sym]: symbol; } >num : number >0 : 0 >str : string @@ -45,7 +45,7 @@ const val = set(obj, 'str', ''); >val : string >set(obj, 'str', '') : string >set : (obj: T, key: K, value: T[K]) => T[K] ->obj : { num: number; str: string; [num]: 0; [sym]: symbol; } +>obj : { [num]: 0; num: number; str: string; [sym]: symbol; } >'str' : "str" >'' : "" @@ -54,7 +54,7 @@ const valB = set(obj, 'num', ''); >valB : number >set(obj, 'num', '') : number >set : (obj: T, key: K, value: T[K]) => T[K] ->obj : { num: number; str: string; [num]: 0; [sym]: symbol; } +>obj : { [num]: 0; num: number; str: string; [sym]: symbol; } >'num' : "num" >'' : "" @@ -64,7 +64,7 @@ const valC = set(obj, sym, sym); >valC : symbol >set(obj, sym, sym) : symbol >set : (obj: T, key: K, value: T[K]) => T[K] ->obj : { num: number; str: string; [num]: 0; [sym]: symbol; } +>obj : { [num]: 0; num: number; str: string; [sym]: symbol; } >sym : unique symbol >sym : unique symbol @@ -74,7 +74,7 @@ const valD = set(obj, num, num); >valD : 0 >set(obj, num, num) : 0 >set : (obj: T, key: K, value: T[K]) => T[K] ->obj : { num: number; str: string; [num]: 0; [sym]: symbol; } +>obj : { [num]: 0; num: number; str: string; [sym]: symbol; } >num : 0 >num : 0 diff --git a/testdata/baselines/reference/submodule/compiler/keyofDoesntContainSymbols.types.diff b/testdata/baselines/reference/submodule/compiler/keyofDoesntContainSymbols.types.diff index 5d8956e901..4463da8ebf 100644 --- a/testdata/baselines/reference/submodule/compiler/keyofDoesntContainSymbols.types.diff +++ b/testdata/baselines/reference/submodule/compiler/keyofDoesntContainSymbols.types.diff @@ -6,8 +6,8 @@ const obj = { num: 0, str: 's', [num]: num as 0, [sym]: sym }; ->obj : { num: number; str: string; 0: 0; [sym]: symbol; } ->{ num: 0, str: 's', [num]: num as 0, [sym]: sym } : { num: number; str: string; 0: 0; [sym]: symbol; } -+>obj : { num: number; str: string; [num]: 0; [sym]: symbol; } -+>{ num: 0, str: 's', [num]: num as 0, [sym]: sym } : { num: number; str: string; [num]: 0; [sym]: symbol; } ++>obj : { [num]: 0; num: number; str: string; [sym]: symbol; } ++>{ num: 0, str: 's', [num]: num as 0, [sym]: sym } : { [num]: 0; num: number; str: string; [sym]: symbol; } >num : number >0 : 0 >str : string @@ -25,7 +25,7 @@ >set(obj, 'str', '') : string >set : (obj: T, key: K, value: T[K]) => T[K] ->obj : { num: number; str: string; 0: 0; [sym]: symbol; } -+>obj : { num: number; str: string; [num]: 0; [sym]: symbol; } ++>obj : { [num]: 0; num: number; str: string; [sym]: symbol; } >'str' : "str" >'' : "" @@ -34,7 +34,7 @@ >set(obj, 'num', '') : number >set : (obj: T, key: K, value: T[K]) => T[K] ->obj : { num: number; str: string; 0: 0; [sym]: symbol; } -+>obj : { num: number; str: string; [num]: 0; [sym]: symbol; } ++>obj : { [num]: 0; num: number; str: string; [sym]: symbol; } >'num' : "num" >'' : "" @@ -43,7 +43,7 @@ >set(obj, sym, sym) : symbol >set : (obj: T, key: K, value: T[K]) => T[K] ->obj : { num: number; str: string; 0: 0; [sym]: symbol; } -+>obj : { num: number; str: string; [num]: 0; [sym]: symbol; } ++>obj : { [num]: 0; num: number; str: string; [sym]: symbol; } >sym : unique symbol >sym : unique symbol @@ -52,7 +52,7 @@ >set(obj, num, num) : 0 >set : (obj: T, key: K, value: T[K]) => T[K] ->obj : { num: number; str: string; 0: 0; [sym]: symbol; } -+>obj : { num: number; str: string; [num]: 0; [sym]: symbol; } ++>obj : { [num]: 0; num: number; str: string; [sym]: symbol; } >num : 0 >num : 0 diff --git a/testdata/baselines/reference/submodule/compiler/mappedTypeIndexedAccessConstraint.types b/testdata/baselines/reference/submodule/compiler/mappedTypeIndexedAccessConstraint.types index 499eccb647..96a1e6018a 100644 --- a/testdata/baselines/reference/submodule/compiler/mappedTypeIndexedAccessConstraint.types +++ b/testdata/baselines/reference/submodule/compiler/mappedTypeIndexedAccessConstraint.types @@ -134,10 +134,10 @@ type PartMappings = SetOptional; >PartMappings : PartMappings const mapper: { [K in keyof PartMappings]: (o: MapperArgs) => PartMappings[K] } = { ->mapper : { foo?: (o: MapperArgs<"foo">) => boolean | undefined | undefined; 12: (o: MapperArgs<"12">) => number; 42: (o: MapperArgs<42>) => string; } +>mapper : { 12: (o: MapperArgs<"12">) => number; 42: (o: MapperArgs<42>) => string; foo?: (o: MapperArgs<"foo">) => boolean | undefined | undefined; } >K : K >o : MapperArgs ->{ foo: ({ v, i }) => v.length + i > 4, "12": ({ v, i }) => Number(v) + i, 42: ({ v, i }) => `${v}${i}`,} : { foo: (__0: MapperArgs<"foo">) => boolean; "12": (__0: MapperArgs<"12">) => number; 42: (__0: MapperArgs<42>) => string; } +>{ foo: ({ v, i }) => v.length + i > 4, "12": ({ v, i }) => Number(v) + i, 42: ({ v, i }) => `${v}${i}`,} : { "12": (__0: MapperArgs<"12">) => number; 42: (__0: MapperArgs<42>) => string; foo: (__0: MapperArgs<"foo">) => boolean; } foo: ({ v, i }) => v.length + i > 4, >foo : (__0: MapperArgs<"foo">) => boolean @@ -183,7 +183,7 @@ const resolveMapper1 = ( >o : MapperArgs >mapper[key](o) : PartMappings[K] >mapper[key] : (o: MapperArgs) => PartMappings[K] | undefined ->mapper : { foo?: (o: MapperArgs<"foo">) => boolean | undefined | undefined; 12: (o: MapperArgs<"12">) => number; 42: (o: MapperArgs<42>) => string; } +>mapper : { 12: (o: MapperArgs<"12">) => number; 42: (o: MapperArgs<42>) => string; foo?: (o: MapperArgs<"foo">) => boolean | undefined | undefined; } >key : K >o : MapperArgs @@ -197,7 +197,7 @@ const resolveMapper2 = ( >o : MapperArgs >mapper[key]?.(o) : PartMappings[K] | undefined >mapper[key] : (o: MapperArgs) => PartMappings[K] | undefined ->mapper : { foo?: (o: MapperArgs<"foo">) => boolean | undefined | undefined; 12: (o: MapperArgs<"12">) => number; 42: (o: MapperArgs<42>) => string; } +>mapper : { 12: (o: MapperArgs<"12">) => number; 42: (o: MapperArgs<42>) => string; foo?: (o: MapperArgs<"foo">) => boolean | undefined | undefined; } >key : K >o : MapperArgs diff --git a/testdata/baselines/reference/submodule/compiler/mappedTypeIndexedAccessConstraint.types.diff b/testdata/baselines/reference/submodule/compiler/mappedTypeIndexedAccessConstraint.types.diff index 670832dc7e..05a97bb929 100644 --- a/testdata/baselines/reference/submodule/compiler/mappedTypeIndexedAccessConstraint.types.diff +++ b/testdata/baselines/reference/submodule/compiler/mappedTypeIndexedAccessConstraint.types.diff @@ -137,11 +137,11 @@ const mapper: { [K in keyof PartMappings]: (o: MapperArgs) => PartMappings[K] } = { ->mapper : { "12": (o: MapperArgs<"12">) => number; 42: (o: MapperArgs<42>) => string; foo?: ((o: MapperArgs<"foo">) => boolean | undefined) | undefined; } -+>mapper : { foo?: (o: MapperArgs<"foo">) => boolean | undefined | undefined; 12: (o: MapperArgs<"12">) => number; 42: (o: MapperArgs<42>) => string; } ++>mapper : { 12: (o: MapperArgs<"12">) => number; 42: (o: MapperArgs<42>) => string; foo?: (o: MapperArgs<"foo">) => boolean | undefined | undefined; } +>K : K >o : MapperArgs ->{ foo: ({ v, i }) => v.length + i > 4, "12": ({ v, i }) => Number(v) + i, 42: ({ v, i }) => `${v}${i}`,} : { foo: ({ v, i }: MapperArgs<"foo">) => boolean; "12": ({ v, i }: MapperArgs<"12">) => number; 42: ({ v, i }: MapperArgs<42>) => string; } -+>{ foo: ({ v, i }) => v.length + i > 4, "12": ({ v, i }) => Number(v) + i, 42: ({ v, i }) => `${v}${i}`,} : { foo: (__0: MapperArgs<"foo">) => boolean; "12": (__0: MapperArgs<"12">) => number; 42: (__0: MapperArgs<42>) => string; } ++>{ foo: ({ v, i }) => v.length + i > 4, "12": ({ v, i }) => Number(v) + i, 42: ({ v, i }) => `${v}${i}`,} : { "12": (__0: MapperArgs<"12">) => number; 42: (__0: MapperArgs<42>) => string; foo: (__0: MapperArgs<"foo">) => boolean; } foo: ({ v, i }) => v.length + i > 4, ->foo : ({ v, i }: MapperArgs<"foo">) => boolean @@ -191,7 +191,7 @@ ->mapper[key] : ((o: MapperArgs) => PartMappings[K]) | undefined ->mapper : { "12": (o: MapperArgs<"12">) => number; 42: (o: MapperArgs<42>) => string; foo?: ((o: MapperArgs<"foo">) => boolean | undefined) | undefined; } +>mapper[key] : (o: MapperArgs) => PartMappings[K] | undefined -+>mapper : { foo?: (o: MapperArgs<"foo">) => boolean | undefined | undefined; 12: (o: MapperArgs<"12">) => number; 42: (o: MapperArgs<42>) => string; } ++>mapper : { 12: (o: MapperArgs<"12">) => number; 42: (o: MapperArgs<42>) => string; foo?: (o: MapperArgs<"foo">) => boolean | undefined | undefined; } >key : K >o : MapperArgs @@ -210,7 +210,7 @@ ->mapper[key] : ((o: MapperArgs) => PartMappings[K]) | undefined ->mapper : { "12": (o: MapperArgs<"12">) => number; 42: (o: MapperArgs<42>) => string; foo?: ((o: MapperArgs<"foo">) => boolean | undefined) | undefined; } +>mapper[key] : (o: MapperArgs) => PartMappings[K] | undefined -+>mapper : { foo?: (o: MapperArgs<"foo">) => boolean | undefined | undefined; 12: (o: MapperArgs<"12">) => number; 42: (o: MapperArgs<42>) => string; } ++>mapper : { 12: (o: MapperArgs<"12">) => number; 42: (o: MapperArgs<42>) => string; foo?: (o: MapperArgs<"foo">) => boolean | undefined | undefined; } >key : K >o : MapperArgs diff --git a/testdata/baselines/reference/submodule/compiler/normalizedIntersectionTooComplex.types b/testdata/baselines/reference/submodule/compiler/normalizedIntersectionTooComplex.types index c3aa2b1dca..86d65521e2 100644 --- a/testdata/baselines/reference/submodule/compiler/normalizedIntersectionTooComplex.types +++ b/testdata/baselines/reference/submodule/compiler/normalizedIntersectionTooComplex.types @@ -33,112 +33,112 @@ interface Big { >Big : Big "0": { common?: string; "0"?: number, ref?: Obj | Func; } ->"0" : { common?: string | undefined; "0"?: number | undefined; ref?: Func | Obj | undefined; } +>"0" : { "0"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"0" : number | undefined ->ref : Func<{ common?: string | undefined; "0"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "0"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined +>ref : Func<{ "0"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "0"?: number | undefined; common?: string | undefined; ref?: Func | ??? | undefined; }> | undefined "1": { common?: string; "1"?: number, ref?: Obj | Func; } ->"1" : { common?: string | undefined; "1"?: number | undefined; ref?: Func | Obj | undefined; } +>"1" : { "1"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"1" : number | undefined ->ref : Func<{ common?: string | undefined; "1"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "1"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined +>ref : Func<{ "1"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "1"?: number | undefined; common?: string | undefined; ref?: Func | ??? | undefined; }> | undefined "2": { common?: string; "2"?: number, ref?: Obj | Func; } ->"2" : { common?: string | undefined; "2"?: number | undefined; ref?: Func | Obj | undefined; } +>"2" : { "2"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"2" : number | undefined ->ref : Func<{ common?: string | undefined; "2"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "2"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined +>ref : Func<{ "2"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "2"?: number | undefined; common?: string | undefined; ref?: Func | ??? | undefined; }> | undefined "3": { common?: string; "3"?: number, ref?: Obj | Func; } ->"3" : { common?: string | undefined; "3"?: number | undefined; ref?: Func | Obj | undefined; } +>"3" : { "3"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"3" : number | undefined ->ref : Func<{ common?: string | undefined; "3"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "3"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined +>ref : Func<{ "3"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "3"?: number | undefined; common?: string | undefined; ref?: Func | ??? | undefined; }> | undefined "4": { common?: string; "4"?: number, ref?: Obj | Func; } ->"4" : { common?: string | undefined; "4"?: number | undefined; ref?: Func | Obj | undefined; } +>"4" : { "4"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"4" : number | undefined ->ref : Func<{ common?: string | undefined; "4"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "4"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined +>ref : Func<{ "4"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "4"?: number | undefined; common?: string | undefined; ref?: Func | ??? | undefined; }> | undefined "5": { common?: string; "5"?: number, ref?: Obj | Func; } ->"5" : { common?: string | undefined; "5"?: number | undefined; ref?: Func | Obj | undefined; } +>"5" : { "5"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"5" : number | undefined ->ref : Func<{ common?: string | undefined; "5"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "5"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined +>ref : Func<{ "5"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "5"?: number | undefined; common?: string | undefined; ref?: Func | ??? | undefined; }> | undefined "6": { common?: string; "6"?: number, ref?: Obj | Func; } ->"6" : { common?: string | undefined; "6"?: number | undefined; ref?: Func | Obj | undefined; } +>"6" : { "6"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"6" : number | undefined ->ref : Func<{ common?: string | undefined; "6"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "6"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined +>ref : Func<{ "6"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "6"?: number | undefined; common?: string | undefined; ref?: Func | ??? | undefined; }> | undefined "7": { common?: string; "7"?: number, ref?: Obj | Func; } ->"7" : { common?: string | undefined; "7"?: number | undefined; ref?: Func | Obj | undefined; } +>"7" : { "7"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"7" : number | undefined ->ref : Func<{ common?: string | undefined; "7"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "7"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined +>ref : Func<{ "7"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "7"?: number | undefined; common?: string | undefined; ref?: Func | ??? | undefined; }> | undefined "8": { common?: string; "8"?: number, ref?: Obj | Func; } ->"8" : { common?: string | undefined; "8"?: number | undefined; ref?: Func | Obj | undefined; } +>"8" : { "8"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"8" : number | undefined ->ref : Func<{ common?: string | undefined; "8"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "8"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined +>ref : Func<{ "8"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "8"?: number | undefined; common?: string | undefined; ref?: Func | ??? | undefined; }> | undefined "9": { common?: string; "9"?: number, ref?: Obj | Func; } ->"9" : { common?: string | undefined; "9"?: number | undefined; ref?: Func | Obj | undefined; } +>"9" : { "9"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"9" : number | undefined ->ref : Func<{ common?: string | undefined; "9"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "9"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined +>ref : Func<{ "9"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "9"?: number | undefined; common?: string | undefined; ref?: Func | ??? | undefined; }> | undefined "10": { common?: string; "10"?: number, ref?: Obj | Func; } ->"10" : { common?: string | undefined; "10"?: number | undefined; ref?: Func | Obj | undefined; } +>"10" : { "10"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"10" : number | undefined ->ref : Func<{ common?: string | undefined; "10"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "10"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined +>ref : Func<{ "10"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "10"?: number | undefined; common?: string | undefined; ref?: Func | ??? | undefined; }> | undefined "11": { common?: string; "11"?: number, ref?: Obj | Func; } ->"11" : { common?: string | undefined; "11"?: number | undefined; ref?: Func | Obj | undefined; } +>"11" : { "11"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"11" : number | undefined ->ref : Func<{ common?: string | undefined; "11"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "11"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined +>ref : Func<{ "11"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "11"?: number | undefined; common?: string | undefined; ref?: Func | ??? | undefined; }> | undefined "12": { common?: string; "12"?: number, ref?: Obj | Func; } ->"12" : { common?: string | undefined; "12"?: number | undefined; ref?: Func | Obj | undefined; } +>"12" : { "12"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"12" : number | undefined ->ref : Func<{ common?: string | undefined; "12"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "12"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined +>ref : Func<{ "12"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "12"?: number | undefined; common?: string | undefined; ref?: Func | ??? | undefined; }> | undefined "13": { common?: string; "13"?: number, ref?: Obj | Func; } ->"13" : { common?: string | undefined; "13"?: number | undefined; ref?: Func | Obj | undefined; } +>"13" : { "13"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"13" : number | undefined ->ref : Func<{ common?: string | undefined; "13"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "13"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined +>ref : Func<{ "13"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "13"?: number | undefined; common?: string | undefined; ref?: Func | ??? | undefined; }> | undefined "14": { common?: string; "14"?: number, ref?: Obj | Func; } ->"14" : { common?: string | undefined; "14"?: number | undefined; ref?: Func | Obj | undefined; } +>"14" : { "14"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"14" : number | undefined ->ref : Func<{ common?: string | undefined; "14"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "14"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined +>ref : Func<{ "14"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "14"?: number | undefined; common?: string | undefined; ref?: Func | ??? | undefined; }> | undefined "15": { common?: string; "15"?: number, ref?: Obj | Func; } ->"15" : { common?: string | undefined; "15"?: number | undefined; ref?: Func | Obj | undefined; } +>"15" : { "15"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"15" : number | undefined ->ref : Func<{ common?: string | undefined; "15"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "15"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined +>ref : Func<{ "15"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "15"?: number | undefined; common?: string | undefined; ref?: Func | ??? | undefined; }> | undefined "16": { common?: string; "16"?: number, ref?: Obj | Func; } ->"16" : { common?: string | undefined; "16"?: number | undefined; ref?: Func | Obj | undefined; } +>"16" : { "16"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"16" : number | undefined ->ref : Func<{ common?: string | undefined; "16"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "16"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined +>ref : Func<{ "16"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "16"?: number | undefined; common?: string | undefined; ref?: Func | ??? | undefined; }> | undefined "17": { common?: string; "17"?: number, ref?: Obj | Func; } ->"17" : { common?: string | undefined; "17"?: number | undefined; ref?: Func | Obj | undefined; } +>"17" : { "17"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"17" : number | undefined ->ref : Func<{ common?: string | undefined; "17"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "17"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined +>ref : Func<{ "17"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "17"?: number | undefined; common?: string | undefined; ref?: Func | ??? | undefined; }> | undefined } declare function getCtor(comp: T): CtorOf >getCtor : (comp: T) => CtorOf @@ -149,15 +149,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<{ "0"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "1"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "2"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "3"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "4"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "5"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "6"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "7"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "8"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "9"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "10"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "11"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "12"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "13"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "14"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "15"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "16"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "17"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; }> +>getCtor(all) : CtorOf<{ "0"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "1"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "2"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "3"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "4"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "5"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "6"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "7"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "8"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "9"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "10"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "11"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "12"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "13"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "14"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "15"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "16"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "17"?: number | undefined; common?: string | 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 | 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 : { "0"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "1"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "2"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "3"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "4"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "5"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "6"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "7"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "8"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "9"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "10"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "11"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "12"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "13"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "14"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "15"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "16"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "17"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } +>ctor({ common: "ok", ref: x => console.log(x) }) : { "0"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "1"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "2"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "3"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "4"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "5"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "6"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "7"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "8"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "9"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "10"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "11"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "12"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "13"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "14"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "15"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "16"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "17"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } +>ctor : CtorOf<{ "0"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "1"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "2"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "3"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "4"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "5"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "6"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "7"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "8"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "9"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "10"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "11"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "12"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "13"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "14"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "15"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "16"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "17"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; }> >{ 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 index 45da8ce9f5..648b50ae5a 100644 --- a/testdata/baselines/reference/submodule/compiler/normalizedIntersectionTooComplex.types.diff +++ b/testdata/baselines/reference/submodule/compiler/normalizedIntersectionTooComplex.types.diff @@ -40,147 +40,147 @@ + "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; } ++>"0" : { "0"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"0" : number | undefined ->ref : Obj<{ common?: string; "0"?: number; ref?: Obj | Func; }> | Func<{ common?: string; "0"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "0"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "0"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined ++>ref : Func<{ "0"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "0"?: number | undefined; common?: string | undefined; ref?: Func | ??? | 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; } ++>"1" : { "1"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"1" : number | undefined ->ref : Obj<{ common?: string; "1"?: number; ref?: Obj | Func; }> | Func<{ common?: string; "1"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "1"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "1"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined ++>ref : Func<{ "1"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "1"?: number | undefined; common?: string | undefined; ref?: Func | ??? | 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; } ++>"2" : { "2"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"2" : number | undefined ->ref : Obj<{ common?: string; "2"?: number; ref?: Obj | Func; }> | Func<{ common?: string; "2"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "2"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "2"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined ++>ref : Func<{ "2"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "2"?: number | undefined; common?: string | undefined; ref?: Func | ??? | 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; } ++>"3" : { "3"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"3" : number | undefined ->ref : Obj<{ common?: string; "3"?: number; ref?: Obj | Func; }> | Func<{ common?: string; "3"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "3"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "3"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined ++>ref : Func<{ "3"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "3"?: number | undefined; common?: string | undefined; ref?: Func | ??? | 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; } ++>"4" : { "4"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"4" : number | undefined ->ref : Obj<{ common?: string; "4"?: number; ref?: Obj | Func; }> | Func<{ common?: string; "4"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "4"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "4"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined ++>ref : Func<{ "4"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "4"?: number | undefined; common?: string | undefined; ref?: Func | ??? | 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; } ++>"5" : { "5"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"5" : number | undefined ->ref : Obj<{ common?: string; "5"?: number; ref?: Obj | Func; }> | Func<{ common?: string; "5"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "5"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "5"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined ++>ref : Func<{ "5"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "5"?: number | undefined; common?: string | undefined; ref?: Func | ??? | 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; } ++>"6" : { "6"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"6" : number | undefined ->ref : Obj<{ common?: string; "6"?: number; ref?: Obj | Func; }> | Func<{ common?: string; "6"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "6"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "6"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined ++>ref : Func<{ "6"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "6"?: number | undefined; common?: string | undefined; ref?: Func | ??? | 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; } ++>"7" : { "7"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"7" : number | undefined ->ref : Obj<{ common?: string; "7"?: number; ref?: Obj | Func; }> | Func<{ common?: string; "7"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "7"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "7"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined ++>ref : Func<{ "7"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "7"?: number | undefined; common?: string | undefined; ref?: Func | ??? | 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; } ++>"8" : { "8"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"8" : number | undefined ->ref : Obj<{ common?: string; "8"?: number; ref?: Obj | Func; }> | Func<{ common?: string; "8"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "8"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "8"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined ++>ref : Func<{ "8"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "8"?: number | undefined; common?: string | undefined; ref?: Func | ??? | 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; } ++>"9" : { "9"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"9" : number | undefined ->ref : Obj<{ common?: string; "9"?: number; ref?: Obj | Func; }> | Func<{ common?: string; "9"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "9"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "9"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined ++>ref : Func<{ "9"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "9"?: number | undefined; common?: string | undefined; ref?: Func | ??? | 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; } ++>"10" : { "10"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"10" : number | undefined ->ref : Obj<{ common?: string; "10"?: number; ref?: Obj | Func; }> | Func<{ common?: string; "10"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "10"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "10"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined ++>ref : Func<{ "10"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "10"?: number | undefined; common?: string | undefined; ref?: Func | ??? | 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; } ++>"11" : { "11"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"11" : number | undefined ->ref : Obj<{ common?: string; "11"?: number; ref?: Obj | Func; }> | Func<{ common?: string; "11"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "11"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "11"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined ++>ref : Func<{ "11"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "11"?: number | undefined; common?: string | undefined; ref?: Func | ??? | 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; } ++>"12" : { "12"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"12" : number | undefined ->ref : Obj<{ common?: string; "12"?: number; ref?: Obj | Func; }> | Func<{ common?: string; "12"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "12"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "12"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined ++>ref : Func<{ "12"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "12"?: number | undefined; common?: string | undefined; ref?: Func | ??? | 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; } ++>"13" : { "13"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"13" : number | undefined ->ref : Obj<{ common?: string; "13"?: number; ref?: Obj | Func; }> | Func<{ common?: string; "13"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "13"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "13"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined ++>ref : Func<{ "13"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "13"?: number | undefined; common?: string | undefined; ref?: Func | ??? | 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; } ++>"14" : { "14"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"14" : number | undefined ->ref : Obj<{ common?: string; "14"?: number; ref?: Obj | Func; }> | Func<{ common?: string; "14"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "14"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "14"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined ++>ref : Func<{ "14"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "14"?: number | undefined; common?: string | undefined; ref?: Func | ??? | 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; } ++>"15" : { "15"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"15" : number | undefined ->ref : Obj<{ common?: string; "15"?: number; ref?: Obj | Func; }> | Func<{ common?: string; "15"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "15"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "15"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined ++>ref : Func<{ "15"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "15"?: number | undefined; common?: string | undefined; ref?: Func | ??? | 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; } ++>"16" : { "16"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"16" : number | undefined ->ref : Obj<{ common?: string; "16"?: number; ref?: Obj | Func; }> | Func<{ common?: string; "16"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "16"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "16"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined ++>ref : Func<{ "16"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "16"?: number | undefined; common?: string | undefined; ref?: Func | ??? | 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; } ++>"17" : { "17"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } >common : string | undefined >"17" : number | undefined ->ref : Obj<{ common?: string; "17"?: number; ref?: Obj | Func; }> | Func<{ common?: string; "17"?: number; ref?: Obj | Func; }> | undefined -+>ref : Func<{ common?: string | undefined; "17"?: number | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ common?: string | undefined; "17"?: number | undefined; ref?: Func | ??? | undefined; }> | undefined ++>ref : Func<{ "17"?: number | undefined; common?: string | undefined; ref?: ??? | Obj | undefined; }> | Obj<{ "17"?: number | undefined; common?: string | undefined; ref?: Func | ??? | undefined; }> | undefined } declare function getCtor(comp: T): CtorOf >getCtor : (comp: T) => CtorOf @@ -193,8 +193,8 @@ 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; }> ++>ctor : CtorOf<{ "0"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "1"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "2"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "3"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "4"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "5"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "6"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "7"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "8"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "9"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "10"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "11"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "12"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "13"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "14"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "15"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "16"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "17"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; }> ++>getCtor(all) : CtorOf<{ "0"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "1"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "2"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "3"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "4"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "5"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "6"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "7"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "8"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "9"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "10"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "11"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "12"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "13"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "14"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "15"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "16"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "17"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; }> >getCtor : (comp: T) => CtorOf >all : keyof Big @@ -202,9 +202,9 @@ ->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; }> ++>comp : { "0"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "1"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "2"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "3"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "4"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "5"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "6"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "7"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "8"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "9"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "10"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "11"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "12"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "13"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "14"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "15"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "16"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "17"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } ++>ctor({ common: "ok", ref: x => console.log(x) }) : { "0"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "1"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "2"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "3"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "4"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "5"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "6"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "7"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "8"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "9"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "10"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "11"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "12"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "13"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "14"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "15"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "16"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "17"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } ++>ctor : CtorOf<{ "0"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "1"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "2"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "3"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "4"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "5"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "6"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "7"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "8"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "9"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "10"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "11"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "12"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "13"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "14"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "15"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "16"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; } | { "17"?: number | undefined; common?: string | undefined; ref?: Func | Obj | undefined; }> >{ 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/numericIndexerConstraint5.errors.txt b/testdata/baselines/reference/submodule/compiler/numericIndexerConstraint5.errors.txt index db8882ac3e..9a3fb67dda 100644 --- a/testdata/baselines/reference/submodule/compiler/numericIndexerConstraint5.errors.txt +++ b/testdata/baselines/reference/submodule/compiler/numericIndexerConstraint5.errors.txt @@ -1,4 +1,4 @@ -numericIndexerConstraint5.ts(2,5): error TS2322: Type '{ name: string; 0: Date; }' is not assignable to type '{ [name: number]: string; }'. +numericIndexerConstraint5.ts(2,5): error TS2322: Type '{ 0: Date; name: string; }' is not assignable to type '{ [name: number]: string; }'. Property '0' is incompatible with index signature. Type 'Date' is not assignable to type 'string'. @@ -7,6 +7,6 @@ numericIndexerConstraint5.ts(2,5): error TS2322: Type '{ name: string; 0: Date; var x = { name: "x", 0: new Date() }; var z: { [name: number]: string } = x; ~ -!!! error TS2322: Type '{ name: string; 0: Date; }' is not assignable to type '{ [name: number]: string; }'. +!!! error TS2322: Type '{ 0: Date; name: string; }' is not assignable to type '{ [name: number]: string; }'. !!! error TS2322: Property '0' is incompatible with index signature. !!! error TS2322: Type 'Date' is not assignable to type 'string'. \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/numericIndexerConstraint5.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/numericIndexerConstraint5.errors.txt.diff new file mode 100644 index 0000000000..e3f3c9a25d --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/numericIndexerConstraint5.errors.txt.diff @@ -0,0 +1,16 @@ +--- old.numericIndexerConstraint5.errors.txt ++++ new.numericIndexerConstraint5.errors.txt +@@= skipped -0, +0 lines =@@ +-numericIndexerConstraint5.ts(2,5): error TS2322: Type '{ name: string; 0: Date; }' is not assignable to type '{ [name: number]: string; }'. ++numericIndexerConstraint5.ts(2,5): error TS2322: Type '{ 0: Date; name: string; }' is not assignable to type '{ [name: number]: string; }'. + Property '0' is incompatible with index signature. + Type 'Date' is not assignable to type 'string'. + +@@= skipped -6, +6 lines =@@ + var x = { name: "x", 0: new Date() }; + var z: { [name: number]: string } = x; + ~ +-!!! error TS2322: Type '{ name: string; 0: Date; }' is not assignable to type '{ [name: number]: string; }'. ++!!! error TS2322: Type '{ 0: Date; name: string; }' is not assignable to type '{ [name: number]: string; }'. + !!! error TS2322: Property '0' is incompatible with index signature. + !!! error TS2322: Type 'Date' is not assignable to type 'string'. diff --git a/testdata/baselines/reference/submodule/compiler/numericIndexerConstraint5.types b/testdata/baselines/reference/submodule/compiler/numericIndexerConstraint5.types index 4a7740fbea..65761bd5ff 100644 --- a/testdata/baselines/reference/submodule/compiler/numericIndexerConstraint5.types +++ b/testdata/baselines/reference/submodule/compiler/numericIndexerConstraint5.types @@ -2,8 +2,8 @@ === numericIndexerConstraint5.ts === var x = { name: "x", 0: new Date() }; ->x : { name: string; 0: Date; } ->{ name: "x", 0: new Date() } : { name: string; 0: Date; } +>x : { 0: Date; name: string; } +>{ name: "x", 0: new Date() } : { 0: Date; name: string; } >name : string >"x" : "x" >0 : Date @@ -13,5 +13,5 @@ var x = { name: "x", 0: new Date() }; var z: { [name: number]: string } = x; >z : { [name: number]: string; } >name : number ->x : { name: string; 0: Date; } +>x : { 0: Date; name: string; } diff --git a/testdata/baselines/reference/submodule/compiler/numericIndexerConstraint5.types.diff b/testdata/baselines/reference/submodule/compiler/numericIndexerConstraint5.types.diff new file mode 100644 index 0000000000..3699a13d05 --- /dev/null +++ b/testdata/baselines/reference/submodule/compiler/numericIndexerConstraint5.types.diff @@ -0,0 +1,20 @@ +--- old.numericIndexerConstraint5.types ++++ new.numericIndexerConstraint5.types +@@= skipped -1, +1 lines =@@ + + === numericIndexerConstraint5.ts === + var x = { name: "x", 0: new Date() }; +->x : { name: string; 0: Date; } +->{ name: "x", 0: new Date() } : { name: string; 0: Date; } ++>x : { 0: Date; name: string; } ++>{ name: "x", 0: new Date() } : { 0: Date; name: string; } + >name : string + >"x" : "x" + >0 : Date +@@= skipped -11, +11 lines =@@ + var z: { [name: number]: string } = x; + >z : { [name: number]: string; } + >name : number +->x : { name: string; 0: Date; } ++>x : { 0: Date; name: string; } + diff --git a/testdata/baselines/reference/submodule/compiler/objectLiteralIndexerErrors.types b/testdata/baselines/reference/submodule/compiler/objectLiteralIndexerErrors.types index 1d8b0bbba0..776c4f89f7 100644 --- a/testdata/baselines/reference/submodule/compiler/objectLiteralIndexerErrors.types +++ b/testdata/baselines/reference/submodule/compiler/objectLiteralIndexerErrors.types @@ -28,16 +28,16 @@ var o1: { [s: string]: A;[n: number]: B; } = { x: b, 0: a }; // both indexers ar >o1 : { [s: string]: A; [n: number]: B; } >s : string >n : number ->{ x: b, 0: a } : { x: B; 0: A; } +>{ x: b, 0: a } : { 0: A; x: B; } >x : B >b : B >0 : A >a : A o1 = { x: c, 0: a }; // string indexer is any, number indexer is A ->o1 = { x: c, 0: a } : { x: any; 0: A; } +>o1 = { x: c, 0: a } : { 0: A; x: any; } >o1 : { [s: string]: A; [n: number]: B; } ->{ x: c, 0: a } : { x: any; 0: A; } +>{ x: c, 0: a } : { 0: A; x: any; } >x : any >c : any >0 : A diff --git a/testdata/baselines/reference/submodule/compiler/objectLiteralIndexerErrors.types.diff b/testdata/baselines/reference/submodule/compiler/objectLiteralIndexerErrors.types.diff index fd53c02709..9ab58ef0b4 100644 --- a/testdata/baselines/reference/submodule/compiler/objectLiteralIndexerErrors.types.diff +++ b/testdata/baselines/reference/submodule/compiler/objectLiteralIndexerErrors.types.diff @@ -16,3 +16,23 @@ y: string; >y : string } +@@= skipped -22, +26 lines =@@ + >o1 : { [s: string]: A; [n: number]: B; } + >s : string + >n : number +->{ x: b, 0: a } : { x: B; 0: A; } ++>{ x: b, 0: a } : { 0: A; x: B; } + >x : B + >b : B + >0 : A + >a : A + + o1 = { x: c, 0: a }; // string indexer is any, number indexer is A +->o1 = { x: c, 0: a } : { x: any; 0: A; } ++>o1 = { x: c, 0: a } : { 0: A; x: any; } + >o1 : { [s: string]: A; [n: number]: B; } +->{ x: c, 0: a } : { x: any; 0: A; } ++>{ x: c, 0: a } : { 0: A; x: any; } + >x : any + >c : any + >0 : A diff --git a/testdata/baselines/reference/submodule/compiler/objectLiteralIndexers.types b/testdata/baselines/reference/submodule/compiler/objectLiteralIndexers.types index dd66588eee..be2fe439c4 100644 --- a/testdata/baselines/reference/submodule/compiler/objectLiteralIndexers.types +++ b/testdata/baselines/reference/submodule/compiler/objectLiteralIndexers.types @@ -28,25 +28,25 @@ var o1: { [s: string]: A;[n: number]: B; } = { x: a, 0: b }; // string indexer i >o1 : { [s: string]: A; [n: number]: B; } >s : string >n : number ->{ x: a, 0: b } : { x: A; 0: B; } +>{ x: a, 0: b } : { 0: B; x: A; } >x : A >a : A >0 : B >b : B o1 = { x: b, 0: c }; // both indexers are any ->o1 = { x: b, 0: c } : { x: B; 0: any; } +>o1 = { x: b, 0: c } : { 0: any; x: B; } >o1 : { [s: string]: A; [n: number]: B; } ->{ x: b, 0: c } : { x: B; 0: any; } +>{ x: b, 0: c } : { 0: any; x: B; } >x : B >b : B >0 : any >c : any o1 = { x: c, 0: b }; // string indexer is any, number indexer is B ->o1 = { x: c, 0: b } : { x: any; 0: B; } +>o1 = { x: c, 0: b } : { 0: B; x: any; } >o1 : { [s: string]: A; [n: number]: B; } ->{ x: c, 0: b } : { x: any; 0: B; } +>{ x: c, 0: b } : { 0: B; x: any; } >x : any >c : any >0 : B diff --git a/testdata/baselines/reference/submodule/compiler/objectLiteralIndexers.types.diff b/testdata/baselines/reference/submodule/compiler/objectLiteralIndexers.types.diff index 45e68e1121..59504b5cd7 100644 --- a/testdata/baselines/reference/submodule/compiler/objectLiteralIndexers.types.diff +++ b/testdata/baselines/reference/submodule/compiler/objectLiteralIndexers.types.diff @@ -16,3 +16,34 @@ y: string; >y : string } +@@= skipped -22, +26 lines =@@ + >o1 : { [s: string]: A; [n: number]: B; } + >s : string + >n : number +->{ x: a, 0: b } : { x: A; 0: B; } ++>{ x: a, 0: b } : { 0: B; x: A; } + >x : A + >a : A + >0 : B + >b : B + + o1 = { x: b, 0: c }; // both indexers are any +->o1 = { x: b, 0: c } : { x: B; 0: any; } ++>o1 = { x: b, 0: c } : { 0: any; x: B; } + >o1 : { [s: string]: A; [n: number]: B; } +->{ x: b, 0: c } : { x: B; 0: any; } ++>{ x: b, 0: c } : { 0: any; x: B; } + >x : B + >b : B + >0 : any + >c : any + + o1 = { x: c, 0: b }; // string indexer is any, number indexer is B +->o1 = { x: c, 0: b } : { x: any; 0: B; } ++>o1 = { x: c, 0: b } : { 0: B; x: any; } + >o1 : { [s: string]: A; [n: number]: B; } +->{ x: c, 0: b } : { x: any; 0: B; } ++>{ x: c, 0: b } : { 0: B; x: any; } + >x : any + >c : any + >0 : B diff --git a/testdata/baselines/reference/submodule/compiler/propertiesAndIndexers.types b/testdata/baselines/reference/submodule/compiler/propertiesAndIndexers.types index fa1169b56c..1adf15f02b 100644 --- a/testdata/baselines/reference/submodule/compiler/propertiesAndIndexers.types +++ b/testdata/baselines/reference/submodule/compiler/propertiesAndIndexers.types @@ -98,7 +98,7 @@ class Q extends P { } var c: { ->c : { [n: number]: string; c: boolean; 3: boolean; } +>c : { [n: number]: string; 3: boolean; c: boolean; } [n: number]: string; >n : number diff --git a/testdata/baselines/reference/submodule/compiler/propertiesAndIndexers.types.diff b/testdata/baselines/reference/submodule/compiler/propertiesAndIndexers.types.diff index aa45615658..f6af82542a 100644 --- a/testdata/baselines/reference/submodule/compiler/propertiesAndIndexers.types.diff +++ b/testdata/baselines/reference/submodule/compiler/propertiesAndIndexers.types.diff @@ -61,3 +61,12 @@ 2: Z; >2 : Z +@@= skipped -26, +28 lines =@@ + } + + var c: { +->c : { [n: number]: string; c: boolean; 3: boolean; } ++>c : { [n: number]: string; 3: boolean; c: boolean; } + + [n: number]: string; + >n : number diff --git a/testdata/baselines/reference/submodule/compiler/ramdaToolsNoInfinite2.types b/testdata/baselines/reference/submodule/compiler/ramdaToolsNoInfinite2.types index c125b76c1d..13f4dead7a 100644 --- a/testdata/baselines/reference/submodule/compiler/ramdaToolsNoInfinite2.types +++ b/testdata/baselines/reference/submodule/compiler/ramdaToolsNoInfinite2.types @@ -497,7 +497,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' : { '0': "0"; 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"; } '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" @@ -513,7 +513,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' : { '0': 0; 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; } '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 bcaeafe9b2..46772178de 100644 --- a/testdata/baselines/reference/submodule/compiler/ramdaToolsNoInfinite2.types.diff +++ b/testdata/baselines/reference/submodule/compiler/ramdaToolsNoInfinite2.types.diff @@ -296,7 +296,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' : { '0': "0"; 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"; } '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" @@ -316,7 +316,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' : { '0': 0; 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; } 'all': Format; ->'all' : 0 | 1 | 3 | 5 | 40 | -40 | 39 | -39 | 38 | -38 | 37 | -37 | 36 | -36 | 35 | -35 | 34 | -34 | 33 | -33 | 32 | -32 | 31 | -31 | 30 | -30 | 29 | -29 | 28 | -28 | 27 | -27 | 26 | -26 | 25 | -25 | 24 | -24 | 23 | -23 | 22 | -22 | 21 | -21 | 20 | -20 | 19 | -19 | 18 | -18 | 17 | -17 | 16 | -16 | 15 | -15 | 14 | -14 | 13 | -13 | 12 | -12 | 11 | -11 | 10 | -10 | 9 | -9 | 8 | -8 | 7 | -7 | 6 | -6 | -5 | 4 | -4 | -3 | 2 | -2 | -1 diff --git a/testdata/baselines/reference/submodule/compiler/restElementWithNumberPropertyName.types b/testdata/baselines/reference/submodule/compiler/restElementWithNumberPropertyName.types index d70de3241d..a73c835368 100644 --- a/testdata/baselines/reference/submodule/compiler/restElementWithNumberPropertyName.types +++ b/testdata/baselines/reference/submodule/compiler/restElementWithNumberPropertyName.types @@ -3,7 +3,7 @@ === restElementWithNumberPropertyName.ts === const { 0: a, ...b } = [0, 1, 2]; >a : number ->b : { [n: number]: number; toString: () => string; toLocaleString: () => string; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => [number, number, 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; }; 0: number; 1: number; 2: number; length: 3; } +>b : { [n: number]: number; 0: number; 1: number; 2: number; toString: () => string; toLocaleString: () => string; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => [number, number, 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; }; length: 3; } >[0, 1, 2] : [number, number, number] >0 : 0 >1 : 1 diff --git a/testdata/baselines/reference/submodule/compiler/restElementWithNumberPropertyName.types.diff b/testdata/baselines/reference/submodule/compiler/restElementWithNumberPropertyName.types.diff index c78a56b2d4..4654eedb17 100644 --- a/testdata/baselines/reference/submodule/compiler/restElementWithNumberPropertyName.types.diff +++ b/testdata/baselines/reference/submodule/compiler/restElementWithNumberPropertyName.types.diff @@ -5,7 +5,7 @@ const { 0: a, ...b } = [0, 1, 2]; >a : number ->b : { [n: number]: number; 0: number; 1: number; 2: number; length: 3; toString(): string; toLocaleString(): string; pop(): number; push(...items: number[]): number; concat(...items: ConcatArray[]): number[]; concat(...items: (number | ConcatArray)[]): number[]; join(separator?: string): string; reverse(): number[]; shift(): number; slice(start?: number, end?: number): number[]; sort(compareFn?: (a: number, b: number) => number): [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; } -+>b : { [n: number]: number; toString: () => string; toLocaleString: () => string; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => [number, number, 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; }; 0: number; 1: number; 2: number; length: 3; } ++>b : { [n: number]: number; 0: number; 1: number; 2: number; toString: () => string; toLocaleString: () => string; pop: () => number; push: (...items: number[]) => number; concat: { (...items: ConcatArray[]): number[]; (...items: (number | ConcatArray)[]): number[]; }; join: (separator?: string) => string; reverse: () => number[]; shift: () => number; slice: (start?: number, end?: number) => number[]; sort: (compareFn?: (a: number, b: number) => number) => [number, number, 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; }; length: 3; } >[0, 1, 2] : [number, number, number] >0 : 0 >1 : 1 diff --git a/testdata/baselines/reference/submodule/compiler/restParameterWithBindingPattern3.types b/testdata/baselines/reference/submodule/compiler/restParameterWithBindingPattern3.types index 8069ececdc..04c75dcd09 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; pop: () => string | number | boolean; push: (...items: (string | number | boolean)[]) => number; concat: { (...items: ConcatArray[]): (string | number | boolean)[]; (...items: (string | number | boolean | ConcatArray)[]): (string | number | boolean)[]; }; join: (separator?: string) => string; reverse: () => (string | number | boolean)[]; shift: () => string | number | boolean; slice: (start?: number, end?: number) => (string | number | boolean)[]; sort: (compareFn?: (a: string | number | boolean, b: string | number | boolean) => number) => [boolean, string, number]; splice: { (start: number, deleteCount?: number): (string | number | boolean)[]; (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[]; (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[]; (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; (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; (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; (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; (callbackfn: (previousValue: U, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => U, initialValue: U): U; }; 0: boolean; 1: string; 2: number; length: 3; } +>rest : { [n: number]: string | number | boolean; 0: boolean; 1: string; 2: number; toString: () => string; toLocaleString: () => string; pop: () => string | number | boolean; push: (...items: (string | number | boolean)[]) => number; concat: { (...items: ConcatArray[]): (string | number | boolean)[]; (...items: (string | number | boolean | ConcatArray)[]): (string | number | boolean)[]; }; join: (separator?: string) => string; reverse: () => (string | number | boolean)[]; shift: () => string | number | boolean; slice: (start?: number, end?: number) => (string | number | boolean)[]; sort: (compareFn?: (a: string | number | boolean, b: string | number | boolean) => number) => [boolean, string, number]; splice: { (start: number, deleteCount?: number): (string | number | boolean)[]; (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[]; (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[]; (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; (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; (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; (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; (callbackfn: (previousValue: U, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => U, initialValue: U): U; }; length: 3; } diff --git a/testdata/baselines/reference/submodule/compiler/restParameterWithBindingPattern3.types.diff b/testdata/baselines/reference/submodule/compiler/restParameterWithBindingPattern3.types.diff index 18d9433813..93e74a321f 100644 --- a/testdata/baselines/reference/submodule/compiler/restParameterWithBindingPattern3.types.diff +++ b/testdata/baselines/reference/submodule/compiler/restParameterWithBindingPattern3.types.diff @@ -41,5 +41,5 @@ >true : true >rest : any ->rest : { [n: number]: string | number | boolean; 0: boolean; 1: string; 2: number; length: 3; toString(): string; toLocaleString(): string; pop(): string | number | boolean; 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; slice(start?: number, end?: number): (string | number | boolean)[]; sort(compareFn?: (a: string | number | boolean, b: string | number | boolean) => number): [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; } -+>rest : { [n: number]: string | number | boolean; toString: () => string; toLocaleString: () => string; pop: () => string | number | boolean; push: (...items: (string | number | boolean)[]) => number; concat: { (...items: ConcatArray[]): (string | number | boolean)[]; (...items: (string | number | boolean | ConcatArray)[]): (string | number | boolean)[]; }; join: (separator?: string) => string; reverse: () => (string | number | boolean)[]; shift: () => string | number | boolean; slice: (start?: number, end?: number) => (string | number | boolean)[]; sort: (compareFn?: (a: string | number | boolean, b: string | number | boolean) => number) => [boolean, string, number]; splice: { (start: number, deleteCount?: number): (string | number | boolean)[]; (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[]; (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[]; (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; (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; (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; (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; (callbackfn: (previousValue: U, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => U, initialValue: U): U; }; 0: boolean; 1: string; 2: number; length: 3; } ++>rest : { [n: number]: string | number | boolean; 0: boolean; 1: string; 2: number; toString: () => string; toLocaleString: () => string; pop: () => string | number | boolean; push: (...items: (string | number | boolean)[]) => number; concat: { (...items: ConcatArray[]): (string | number | boolean)[]; (...items: (string | number | boolean | ConcatArray)[]): (string | number | boolean)[]; }; join: (separator?: string) => string; reverse: () => (string | number | boolean)[]; shift: () => string | number | boolean; slice: (start?: number, end?: number) => (string | number | boolean)[]; sort: (compareFn?: (a: string | number | boolean, b: string | number | boolean) => number) => [boolean, string, number]; splice: { (start: number, deleteCount?: number): (string | number | boolean)[]; (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[]; (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[]; (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; (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; (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; (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; (callbackfn: (previousValue: U, currentValue: string | number | boolean, currentIndex: number, array: (string | number | boolean)[]) => U, initialValue: U): U; }; length: 3; } diff --git a/testdata/baselines/reference/submodule/conformance/arityAndOrderCompatibility01.errors.txt b/testdata/baselines/reference/submodule/conformance/arityAndOrderCompatibility01.errors.txt index bfbebbfbef..b92d786b1c 100644 --- a/testdata/baselines/reference/submodule/conformance/arityAndOrderCompatibility01.errors.txt +++ b/testdata/baselines/reference/submodule/conformance/arityAndOrderCompatibility01.errors.txt @@ -11,9 +11,8 @@ arityAndOrderCompatibility01.ts(23,5): error TS2322: Type '{ 0: string; 1: numbe arityAndOrderCompatibility01.ts(24,5): error TS2322: Type '[string, number]' is not assignable to type '[number]'. Source has 2 element(s) but target allows only 1. arityAndOrderCompatibility01.ts(25,5): error TS2322: Type 'StrNum' is not assignable to type '[number]'. - The types returned by 'pop()' are incompatible between these types. - Type 'string | number' is not assignable to type 'number'. - Type 'string' is not assignable to type 'number'. + Types of property '0' are incompatible. + Type 'string' is not assignable to type 'number'. arityAndOrderCompatibility01.ts(26,5): error TS2322: Type '{ 0: string; 1: number; length: 2; }' is not assignable to type '[number]'. arityAndOrderCompatibility01.ts(27,5): error TS2322: Type '[string, number]' is not assignable to type '[string]'. Source has 2 element(s) but target allows only 1. @@ -80,9 +79,8 @@ arityAndOrderCompatibility01.ts(32,5): error TS2322: Type '{ 0: string; 1: numbe var l2: [number] = y; ~~ !!! error TS2322: Type 'StrNum' is not assignable to type '[number]'. -!!! error TS2322: The types returned by 'pop()' are incompatible between these types. -!!! error TS2322: Type 'string | number' is not assignable to type 'number'. -!!! error TS2322: Type 'string' is not assignable to type 'number'. +!!! error TS2322: Types of property '0' are incompatible. +!!! error TS2322: Type 'string' is not assignable to type 'number'. var l3: [number] = z; ~~ !!! error TS2322: Type '{ 0: string; 1: number; length: 2; }' is not assignable to type '[number]'. diff --git a/testdata/baselines/reference/submodule/conformance/arityAndOrderCompatibility01.errors.txt.diff b/testdata/baselines/reference/submodule/conformance/arityAndOrderCompatibility01.errors.txt.diff index 238c42e77c..7ed7b34707 100644 --- a/testdata/baselines/reference/submodule/conformance/arityAndOrderCompatibility01.errors.txt.diff +++ b/testdata/baselines/reference/submodule/conformance/arityAndOrderCompatibility01.errors.txt.diff @@ -1,15 +1,6 @@ --- old.arityAndOrderCompatibility01.errors.txt +++ new.arityAndOrderCompatibility01.errors.txt -@@= skipped -10, +10 lines =@@ - arityAndOrderCompatibility01.ts(24,5): error TS2322: Type '[string, number]' is not assignable to type '[number]'. - Source has 2 element(s) but target allows only 1. - arityAndOrderCompatibility01.ts(25,5): error TS2322: Type 'StrNum' is not assignable to type '[number]'. -- Types of property '0' are incompatible. -- Type 'string' is not assignable to type 'number'. -+ The types returned by 'pop()' are incompatible between these types. -+ Type 'string | number' is not assignable to type 'number'. -+ Type 'string' is not assignable to type 'number'. - arityAndOrderCompatibility01.ts(26,5): error TS2322: Type '{ 0: string; 1: number; length: 2; }' is not assignable to type '[number]'. +@@= skipped -16, +16 lines =@@ arityAndOrderCompatibility01.ts(27,5): error TS2322: Type '[string, number]' is not assignable to type '[string]'. Source has 2 element(s) but target allows only 1. arityAndOrderCompatibility01.ts(28,5): error TS2322: Type 'StrNum' is not assignable to type '[string]'. @@ -21,19 +12,7 @@ arityAndOrderCompatibility01.ts(29,5): error TS2322: Type '{ 0: string; 1: number; length: 2; }' is not assignable to type '[string]'. arityAndOrderCompatibility01.ts(30,5): error TS2322: Type '[string, number]' is not assignable to type '[number, string]'. Type at position 0 in source is not compatible with type at position 0 in target. -@@= skipped -67, +69 lines =@@ - var l2: [number] = y; - ~~ - !!! error TS2322: Type 'StrNum' is not assignable to type '[number]'. --!!! error TS2322: Types of property '0' are incompatible. --!!! error TS2322: Type 'string' is not assignable to type 'number'. -+!!! error TS2322: The types returned by 'pop()' are incompatible between these types. -+!!! error TS2322: Type 'string | number' is not assignable to type 'number'. -+!!! error TS2322: Type 'string' is not assignable to type 'number'. - var l3: [number] = z; - ~~ - !!! error TS2322: Type '{ 0: string; 1: number; length: 2; }' is not assignable to type '[number]'. -@@= skipped -12, +13 lines =@@ +@@= skipped -73, +74 lines =@@ var m2: [string] = y; ~~ !!! error TS2322: Type 'StrNum' is not assignable to type '[string]'. diff --git a/testdata/baselines/reference/submodule/conformance/computedPropertyNames10_ES5.types b/testdata/baselines/reference/submodule/conformance/computedPropertyNames10_ES5.types index 92c4dbaf42..98c3d551f4 100644 --- a/testdata/baselines/reference/submodule/conformance/computedPropertyNames10_ES5.types +++ b/testdata/baselines/reference/submodule/conformance/computedPropertyNames10_ES5.types @@ -11,8 +11,8 @@ var a: any; >a : any var v = { ->v : { [x: string]: () => void; [x: number]: () => void; [""]: () => void; [0]: () => void; [`hello bye`]: () => void; } ->{ [s]() { }, [n]() { }, [s + s]() { }, [s + n]() { }, [+s]() { }, [""]() { }, [0]() { }, [a]() { }, [true]() { }, [`hello bye`]() { }, [`hello ${a} bye`]() { }} : { [x: string]: () => void; [x: number]: () => void; [""]: () => void; [0]: () => void; [`hello bye`]: () => void; } +>v : { [x: string]: () => void; [x: number]: () => void; [0]: () => void; [""]: () => void; [`hello bye`]: () => void; } +>{ [s]() { }, [n]() { }, [s + s]() { }, [s + n]() { }, [+s]() { }, [""]() { }, [0]() { }, [a]() { }, [true]() { }, [`hello bye`]() { }, [`hello ${a} bye`]() { }} : { [x: string]: () => void; [x: number]: () => void; [0]: () => void; [""]: () => void; [`hello bye`]: () => void; } [s]() { }, >[s] : () => void diff --git a/testdata/baselines/reference/submodule/conformance/computedPropertyNames10_ES5.types.diff b/testdata/baselines/reference/submodule/conformance/computedPropertyNames10_ES5.types.diff index fd25b3b8e2..b08b2b6fa1 100644 --- a/testdata/baselines/reference/submodule/conformance/computedPropertyNames10_ES5.types.diff +++ b/testdata/baselines/reference/submodule/conformance/computedPropertyNames10_ES5.types.diff @@ -6,8 +6,8 @@ var v = { ->v : { [x: string]: () => void; [x: number]: () => void; ""(): void; 0(): void; "hello bye"(): void; } ->{ [s]() { }, [n]() { }, [s + s]() { }, [s + n]() { }, [+s]() { }, [""]() { }, [0]() { }, [a]() { }, [true]() { }, [`hello bye`]() { }, [`hello ${a} bye`]() { }} : { [x: string]: () => void; [x: number]: () => void; ""(): void; 0(): void; "hello bye"(): void; } -+>v : { [x: string]: () => void; [x: number]: () => void; [""]: () => void; [0]: () => void; [`hello bye`]: () => void; } -+>{ [s]() { }, [n]() { }, [s + s]() { }, [s + n]() { }, [+s]() { }, [""]() { }, [0]() { }, [a]() { }, [true]() { }, [`hello bye`]() { }, [`hello ${a} bye`]() { }} : { [x: string]: () => void; [x: number]: () => void; [""]: () => void; [0]: () => void; [`hello bye`]: () => void; } ++>v : { [x: string]: () => void; [x: number]: () => void; [0]: () => void; [""]: () => void; [`hello bye`]: () => void; } ++>{ [s]() { }, [n]() { }, [s + s]() { }, [s + n]() { }, [+s]() { }, [""]() { }, [0]() { }, [a]() { }, [true]() { }, [`hello bye`]() { }, [`hello ${a} bye`]() { }} : { [x: string]: () => void; [x: number]: () => void; [0]: () => void; [""]: () => void; [`hello bye`]: () => void; } [s]() { }, >[s] : () => void diff --git a/testdata/baselines/reference/submodule/conformance/computedPropertyNames10_ES6.types b/testdata/baselines/reference/submodule/conformance/computedPropertyNames10_ES6.types index 65895cfb7e..c74620a69a 100644 --- a/testdata/baselines/reference/submodule/conformance/computedPropertyNames10_ES6.types +++ b/testdata/baselines/reference/submodule/conformance/computedPropertyNames10_ES6.types @@ -11,8 +11,8 @@ var a: any; >a : any var v = { ->v : { [x: string]: () => void; [x: number]: () => void; [""]: () => void; [0]: () => void; [`hello bye`]: () => void; } ->{ [s]() { }, [n]() { }, [s + s]() { }, [s + n]() { }, [+s]() { }, [""]() { }, [0]() { }, [a]() { }, [true]() { }, [`hello bye`]() { }, [`hello ${a} bye`]() { }} : { [x: string]: () => void; [x: number]: () => void; [""]: () => void; [0]: () => void; [`hello bye`]: () => void; } +>v : { [x: string]: () => void; [x: number]: () => void; [0]: () => void; [""]: () => void; [`hello bye`]: () => void; } +>{ [s]() { }, [n]() { }, [s + s]() { }, [s + n]() { }, [+s]() { }, [""]() { }, [0]() { }, [a]() { }, [true]() { }, [`hello bye`]() { }, [`hello ${a} bye`]() { }} : { [x: string]: () => void; [x: number]: () => void; [0]: () => void; [""]: () => void; [`hello bye`]: () => void; } [s]() { }, >[s] : () => void diff --git a/testdata/baselines/reference/submodule/conformance/computedPropertyNames10_ES6.types.diff b/testdata/baselines/reference/submodule/conformance/computedPropertyNames10_ES6.types.diff index 46b44c6751..130d034fce 100644 --- a/testdata/baselines/reference/submodule/conformance/computedPropertyNames10_ES6.types.diff +++ b/testdata/baselines/reference/submodule/conformance/computedPropertyNames10_ES6.types.diff @@ -6,8 +6,8 @@ var v = { ->v : { [x: string]: () => void; [x: number]: () => void; ""(): void; 0(): void; "hello bye"(): void; } ->{ [s]() { }, [n]() { }, [s + s]() { }, [s + n]() { }, [+s]() { }, [""]() { }, [0]() { }, [a]() { }, [true]() { }, [`hello bye`]() { }, [`hello ${a} bye`]() { }} : { [x: string]: () => void; [x: number]: () => void; ""(): void; 0(): void; "hello bye"(): void; } -+>v : { [x: string]: () => void; [x: number]: () => void; [""]: () => void; [0]: () => void; [`hello bye`]: () => void; } -+>{ [s]() { }, [n]() { }, [s + s]() { }, [s + n]() { }, [+s]() { }, [""]() { }, [0]() { }, [a]() { }, [true]() { }, [`hello bye`]() { }, [`hello ${a} bye`]() { }} : { [x: string]: () => void; [x: number]: () => void; [""]: () => void; [0]: () => void; [`hello bye`]: () => void; } ++>v : { [x: string]: () => void; [x: number]: () => void; [0]: () => void; [""]: () => void; [`hello bye`]: () => void; } ++>{ [s]() { }, [n]() { }, [s + s]() { }, [s + n]() { }, [+s]() { }, [""]() { }, [0]() { }, [a]() { }, [true]() { }, [`hello bye`]() { }, [`hello ${a} bye`]() { }} : { [x: string]: () => void; [x: number]: () => void; [0]: () => void; [""]: () => void; [`hello bye`]: () => void; } [s]() { }, >[s] : () => void diff --git a/testdata/baselines/reference/submodule/conformance/computedPropertyNames11_ES5.types b/testdata/baselines/reference/submodule/conformance/computedPropertyNames11_ES5.types index 09bbef3b35..e30deb5290 100644 --- a/testdata/baselines/reference/submodule/conformance/computedPropertyNames11_ES5.types +++ b/testdata/baselines/reference/submodule/conformance/computedPropertyNames11_ES5.types @@ -11,8 +11,8 @@ var a: any; >a : any var v = { ->v : { [x: string]: any; [x: number]: any; [""]: any; readonly [0]: number; [`hello bye`]: any; } ->{ get [s]() { return 0; }, set [n](v) { }, get [s + s]() { return 0; }, set [s + n](v) { }, get [+s]() { return 0; }, set [""](v) { }, get [0]() { return 0; }, set [a](v) { }, get [true]() { return 0; }, set [`hello bye`](v) { }, get [`hello ${a} bye`]() { return 0; }} : { [x: string]: any; [x: number]: any; [""]: any; readonly [0]: number; [`hello bye`]: any; } +>v : { [x: string]: any; [x: number]: any; readonly [0]: number; [""]: any; [`hello bye`]: any; } +>{ get [s]() { return 0; }, set [n](v) { }, get [s + s]() { return 0; }, set [s + n](v) { }, get [+s]() { return 0; }, set [""](v) { }, get [0]() { return 0; }, set [a](v) { }, get [true]() { return 0; }, set [`hello bye`](v) { }, get [`hello ${a} bye`]() { return 0; }} : { [x: string]: any; [x: number]: any; readonly [0]: number; [""]: any; [`hello bye`]: any; } get [s]() { return 0; }, >[s] : number diff --git a/testdata/baselines/reference/submodule/conformance/computedPropertyNames11_ES5.types.diff b/testdata/baselines/reference/submodule/conformance/computedPropertyNames11_ES5.types.diff index c2c6fd44c5..62658860da 100644 --- a/testdata/baselines/reference/submodule/conformance/computedPropertyNames11_ES5.types.diff +++ b/testdata/baselines/reference/submodule/conformance/computedPropertyNames11_ES5.types.diff @@ -6,8 +6,8 @@ var v = { ->v : { [x: string]: any; [x: number]: any; "": any; readonly 0: number; "hello bye": any; } ->{ get [s]() { return 0; }, set [n](v) { }, get [s + s]() { return 0; }, set [s + n](v) { }, get [+s]() { return 0; }, set [""](v) { }, get [0]() { return 0; }, set [a](v) { }, get [true]() { return 0; }, set [`hello bye`](v) { }, get [`hello ${a} bye`]() { return 0; }} : { [x: string]: any; [x: number]: any; "": any; readonly 0: number; "hello bye": any; } -+>v : { [x: string]: any; [x: number]: any; [""]: any; readonly [0]: number; [`hello bye`]: any; } -+>{ get [s]() { return 0; }, set [n](v) { }, get [s + s]() { return 0; }, set [s + n](v) { }, get [+s]() { return 0; }, set [""](v) { }, get [0]() { return 0; }, set [a](v) { }, get [true]() { return 0; }, set [`hello bye`](v) { }, get [`hello ${a} bye`]() { return 0; }} : { [x: string]: any; [x: number]: any; [""]: any; readonly [0]: number; [`hello bye`]: any; } ++>v : { [x: string]: any; [x: number]: any; readonly [0]: number; [""]: any; [`hello bye`]: any; } ++>{ get [s]() { return 0; }, set [n](v) { }, get [s + s]() { return 0; }, set [s + n](v) { }, get [+s]() { return 0; }, set [""](v) { }, get [0]() { return 0; }, set [a](v) { }, get [true]() { return 0; }, set [`hello bye`](v) { }, get [`hello ${a} bye`]() { return 0; }} : { [x: string]: any; [x: number]: any; readonly [0]: number; [""]: any; [`hello bye`]: any; } get [s]() { return 0; }, >[s] : number diff --git a/testdata/baselines/reference/submodule/conformance/computedPropertyNames11_ES6.types b/testdata/baselines/reference/submodule/conformance/computedPropertyNames11_ES6.types index 71d06116fa..7369a66b0b 100644 --- a/testdata/baselines/reference/submodule/conformance/computedPropertyNames11_ES6.types +++ b/testdata/baselines/reference/submodule/conformance/computedPropertyNames11_ES6.types @@ -11,8 +11,8 @@ var a: any; >a : any var v = { ->v : { [x: string]: any; [x: number]: any; [""]: any; readonly [0]: number; [`hello bye`]: any; } ->{ get [s]() { return 0; }, set [n](v) { }, get [s + s]() { return 0; }, set [s + n](v) { }, get [+s]() { return 0; }, set [""](v) { }, get [0]() { return 0; }, set [a](v) { }, get [true]() { return 0; }, set [`hello bye`](v) { }, get [`hello ${a} bye`]() { return 0; }} : { [x: string]: any; [x: number]: any; [""]: any; readonly [0]: number; [`hello bye`]: any; } +>v : { [x: string]: any; [x: number]: any; readonly [0]: number; [""]: any; [`hello bye`]: any; } +>{ get [s]() { return 0; }, set [n](v) { }, get [s + s]() { return 0; }, set [s + n](v) { }, get [+s]() { return 0; }, set [""](v) { }, get [0]() { return 0; }, set [a](v) { }, get [true]() { return 0; }, set [`hello bye`](v) { }, get [`hello ${a} bye`]() { return 0; }} : { [x: string]: any; [x: number]: any; readonly [0]: number; [""]: any; [`hello bye`]: any; } get [s]() { return 0; }, >[s] : number diff --git a/testdata/baselines/reference/submodule/conformance/computedPropertyNames11_ES6.types.diff b/testdata/baselines/reference/submodule/conformance/computedPropertyNames11_ES6.types.diff index 6612cd6afe..2c269551c0 100644 --- a/testdata/baselines/reference/submodule/conformance/computedPropertyNames11_ES6.types.diff +++ b/testdata/baselines/reference/submodule/conformance/computedPropertyNames11_ES6.types.diff @@ -6,8 +6,8 @@ var v = { ->v : { [x: string]: any; [x: number]: any; "": any; readonly 0: number; "hello bye": any; } ->{ get [s]() { return 0; }, set [n](v) { }, get [s + s]() { return 0; }, set [s + n](v) { }, get [+s]() { return 0; }, set [""](v) { }, get [0]() { return 0; }, set [a](v) { }, get [true]() { return 0; }, set [`hello bye`](v) { }, get [`hello ${a} bye`]() { return 0; }} : { [x: string]: any; [x: number]: any; "": any; readonly 0: number; "hello bye": any; } -+>v : { [x: string]: any; [x: number]: any; [""]: any; readonly [0]: number; [`hello bye`]: any; } -+>{ get [s]() { return 0; }, set [n](v) { }, get [s + s]() { return 0; }, set [s + n](v) { }, get [+s]() { return 0; }, set [""](v) { }, get [0]() { return 0; }, set [a](v) { }, get [true]() { return 0; }, set [`hello bye`](v) { }, get [`hello ${a} bye`]() { return 0; }} : { [x: string]: any; [x: number]: any; [""]: any; readonly [0]: number; [`hello bye`]: any; } ++>v : { [x: string]: any; [x: number]: any; readonly [0]: number; [""]: any; [`hello bye`]: any; } ++>{ get [s]() { return 0; }, set [n](v) { }, get [s + s]() { return 0; }, set [s + n](v) { }, get [+s]() { return 0; }, set [""](v) { }, get [0]() { return 0; }, set [a](v) { }, get [true]() { return 0; }, set [`hello bye`](v) { }, get [`hello ${a} bye`]() { return 0; }} : { [x: string]: any; [x: number]: any; readonly [0]: number; [""]: any; [`hello bye`]: any; } get [s]() { return 0; }, >[s] : number diff --git a/testdata/baselines/reference/submodule/conformance/computedPropertyNames4_ES5.types b/testdata/baselines/reference/submodule/conformance/computedPropertyNames4_ES5.types index 62468f532a..908c47b617 100644 --- a/testdata/baselines/reference/submodule/conformance/computedPropertyNames4_ES5.types +++ b/testdata/baselines/reference/submodule/conformance/computedPropertyNames4_ES5.types @@ -11,8 +11,8 @@ var a: any; >a : any var v = { ->v : { [x: string]: string | number; [x: number]: string | number; [""]: number; [0]: number; [`hello bye`]: number; } ->{ [s]: 0, [n]: n, [s + s]: 1, [s + n]: 2, [+s]: s, [""]: 0, [0]: 0, [a]: 1, [true]: 0, [`hello bye`]: 0, [`hello ${a} bye`]: 0} : { [x: string]: string | number; [x: number]: string | number; [""]: number; [0]: number; [`hello bye`]: number; } +>v : { [x: string]: string | number; [x: number]: string | number; [0]: number; [""]: number; [`hello bye`]: number; } +>{ [s]: 0, [n]: n, [s + s]: 1, [s + n]: 2, [+s]: s, [""]: 0, [0]: 0, [a]: 1, [true]: 0, [`hello bye`]: 0, [`hello ${a} bye`]: 0} : { [x: string]: string | number; [x: number]: string | number; [0]: number; [""]: number; [`hello bye`]: number; } [s]: 0, >[s] : number diff --git a/testdata/baselines/reference/submodule/conformance/computedPropertyNames4_ES5.types.diff b/testdata/baselines/reference/submodule/conformance/computedPropertyNames4_ES5.types.diff index ee612019a4..73bb07f0b2 100644 --- a/testdata/baselines/reference/submodule/conformance/computedPropertyNames4_ES5.types.diff +++ b/testdata/baselines/reference/submodule/conformance/computedPropertyNames4_ES5.types.diff @@ -6,8 +6,8 @@ var v = { ->v : { [x: string]: string | number; [x: number]: string | number; "": number; 0: number; "hello bye": number; } ->{ [s]: 0, [n]: n, [s + s]: 1, [s + n]: 2, [+s]: s, [""]: 0, [0]: 0, [a]: 1, [true]: 0, [`hello bye`]: 0, [`hello ${a} bye`]: 0} : { [x: string]: string | number; [x: number]: string | number; "": number; 0: number; "hello bye": number; } -+>v : { [x: string]: string | number; [x: number]: string | number; [""]: number; [0]: number; [`hello bye`]: number; } -+>{ [s]: 0, [n]: n, [s + s]: 1, [s + n]: 2, [+s]: s, [""]: 0, [0]: 0, [a]: 1, [true]: 0, [`hello bye`]: 0, [`hello ${a} bye`]: 0} : { [x: string]: string | number; [x: number]: string | number; [""]: number; [0]: number; [`hello bye`]: number; } ++>v : { [x: string]: string | number; [x: number]: string | number; [0]: number; [""]: number; [`hello bye`]: number; } ++>{ [s]: 0, [n]: n, [s + s]: 1, [s + n]: 2, [+s]: s, [""]: 0, [0]: 0, [a]: 1, [true]: 0, [`hello bye`]: 0, [`hello ${a} bye`]: 0} : { [x: string]: string | number; [x: number]: string | number; [0]: number; [""]: number; [`hello bye`]: number; } [s]: 0, >[s] : number diff --git a/testdata/baselines/reference/submodule/conformance/computedPropertyNames4_ES6.types b/testdata/baselines/reference/submodule/conformance/computedPropertyNames4_ES6.types index 4fe31bd17c..977510dca7 100644 --- a/testdata/baselines/reference/submodule/conformance/computedPropertyNames4_ES6.types +++ b/testdata/baselines/reference/submodule/conformance/computedPropertyNames4_ES6.types @@ -11,8 +11,8 @@ var a: any; >a : any var v = { ->v : { [x: string]: string | number; [x: number]: string | number; [""]: number; [0]: number; [`hello bye`]: number; } ->{ [s]: 0, [n]: n, [s + s]: 1, [s + n]: 2, [+s]: s, [""]: 0, [0]: 0, [a]: 1, [true]: 0, [`hello bye`]: 0, [`hello ${a} bye`]: 0} : { [x: string]: string | number; [x: number]: string | number; [""]: number; [0]: number; [`hello bye`]: number; } +>v : { [x: string]: string | number; [x: number]: string | number; [0]: number; [""]: number; [`hello bye`]: number; } +>{ [s]: 0, [n]: n, [s + s]: 1, [s + n]: 2, [+s]: s, [""]: 0, [0]: 0, [a]: 1, [true]: 0, [`hello bye`]: 0, [`hello ${a} bye`]: 0} : { [x: string]: string | number; [x: number]: string | number; [0]: number; [""]: number; [`hello bye`]: number; } [s]: 0, >[s] : number diff --git a/testdata/baselines/reference/submodule/conformance/computedPropertyNames4_ES6.types.diff b/testdata/baselines/reference/submodule/conformance/computedPropertyNames4_ES6.types.diff index 7ea939f85e..a6426ba7b3 100644 --- a/testdata/baselines/reference/submodule/conformance/computedPropertyNames4_ES6.types.diff +++ b/testdata/baselines/reference/submodule/conformance/computedPropertyNames4_ES6.types.diff @@ -6,8 +6,8 @@ var v = { ->v : { [x: string]: string | number; [x: number]: string | number; "": number; 0: number; "hello bye": number; } ->{ [s]: 0, [n]: n, [s + s]: 1, [s + n]: 2, [+s]: s, [""]: 0, [0]: 0, [a]: 1, [true]: 0, [`hello bye`]: 0, [`hello ${a} bye`]: 0} : { [x: string]: string | number; [x: number]: string | number; "": number; 0: number; "hello bye": number; } -+>v : { [x: string]: string | number; [x: number]: string | number; [""]: number; [0]: number; [`hello bye`]: number; } -+>{ [s]: 0, [n]: n, [s + s]: 1, [s + n]: 2, [+s]: s, [""]: 0, [0]: 0, [a]: 1, [true]: 0, [`hello bye`]: 0, [`hello ${a} bye`]: 0} : { [x: string]: string | number; [x: number]: string | number; [""]: number; [0]: number; [`hello bye`]: number; } ++>v : { [x: string]: string | number; [x: number]: string | number; [0]: number; [""]: number; [`hello bye`]: number; } ++>{ [s]: 0, [n]: n, [s + s]: 1, [s + n]: 2, [+s]: s, [""]: 0, [0]: 0, [a]: 1, [true]: 0, [`hello bye`]: 0, [`hello ${a} bye`]: 0} : { [x: string]: string | number; [x: number]: string | number; [0]: number; [""]: number; [`hello bye`]: number; } [s]: 0, >[s] : number diff --git a/testdata/baselines/reference/submodule/conformance/computedPropertyNamesContextualType6_ES5.types b/testdata/baselines/reference/submodule/conformance/computedPropertyNamesContextualType6_ES5.types index aa04513b17..4286e552d2 100644 --- a/testdata/baselines/reference/submodule/conformance/computedPropertyNamesContextualType6_ES5.types +++ b/testdata/baselines/reference/submodule/conformance/computedPropertyNamesContextualType6_ES5.types @@ -17,7 +17,7 @@ declare function foo(obj: I): T foo({ >foo({ p: "", 0: () => { }, ["hi" + "bye"]: true, [0 + 1]: 0, [+"hi"]: [0]}) : string | number | boolean | number[] | () => void >foo : (obj: I) => T ->{ p: "", 0: () => { }, ["hi" + "bye"]: true, [0 + 1]: 0, [+"hi"]: [0]} : { [x: string]: string | number | true | number[] | () => void; [x: number]: number | number[] | () => void; p: string; 0: () => void; } +>{ p: "", 0: () => { }, ["hi" + "bye"]: true, [0 + 1]: 0, [+"hi"]: [0]} : { [x: string]: string | number | true | number[] | () => void; [x: number]: number | number[] | () => void; 0: () => void; p: string; } p: "", >p : string diff --git a/testdata/baselines/reference/submodule/conformance/computedPropertyNamesContextualType6_ES5.types.diff b/testdata/baselines/reference/submodule/conformance/computedPropertyNamesContextualType6_ES5.types.diff index aa05c69bc8..6669500f55 100644 --- a/testdata/baselines/reference/submodule/conformance/computedPropertyNamesContextualType6_ES5.types.diff +++ b/testdata/baselines/reference/submodule/conformance/computedPropertyNamesContextualType6_ES5.types.diff @@ -21,7 +21,7 @@ +>foo({ p: "", 0: () => { }, ["hi" + "bye"]: true, [0 + 1]: 0, [+"hi"]: [0]}) : string | number | boolean | number[] | () => void >foo : (obj: I) => T ->{ p: "", 0: () => { }, ["hi" + "bye"]: true, [0 + 1]: 0, [+"hi"]: [0]} : { [x: string]: string | number | true | (() => void) | number[]; [x: number]: number | (() => void) | number[]; p: string; 0: () => void; } -+>{ p: "", 0: () => { }, ["hi" + "bye"]: true, [0 + 1]: 0, [+"hi"]: [0]} : { [x: string]: string | number | true | number[] | () => void; [x: number]: number | number[] | () => void; p: string; 0: () => void; } ++>{ p: "", 0: () => { }, ["hi" + "bye"]: true, [0 + 1]: 0, [+"hi"]: [0]} : { [x: string]: string | number | true | number[] | () => void; [x: number]: number | number[] | () => void; 0: () => void; p: string; } p: "", >p : string diff --git a/testdata/baselines/reference/submodule/conformance/computedPropertyNamesContextualType6_ES6.types b/testdata/baselines/reference/submodule/conformance/computedPropertyNamesContextualType6_ES6.types index fffcc25f3b..b099e1ae4a 100644 --- a/testdata/baselines/reference/submodule/conformance/computedPropertyNamesContextualType6_ES6.types +++ b/testdata/baselines/reference/submodule/conformance/computedPropertyNamesContextualType6_ES6.types @@ -17,7 +17,7 @@ declare function foo(obj: I): T foo({ >foo({ p: "", 0: () => { }, ["hi" + "bye"]: true, [0 + 1]: 0, [+"hi"]: [0]}) : string | number | boolean | number[] | () => void >foo : (obj: I) => T ->{ p: "", 0: () => { }, ["hi" + "bye"]: true, [0 + 1]: 0, [+"hi"]: [0]} : { [x: string]: string | number | true | number[] | () => void; [x: number]: number | number[] | () => void; p: string; 0: () => void; } +>{ p: "", 0: () => { }, ["hi" + "bye"]: true, [0 + 1]: 0, [+"hi"]: [0]} : { [x: string]: string | number | true | number[] | () => void; [x: number]: number | number[] | () => void; 0: () => void; p: string; } p: "", >p : string diff --git a/testdata/baselines/reference/submodule/conformance/computedPropertyNamesContextualType6_ES6.types.diff b/testdata/baselines/reference/submodule/conformance/computedPropertyNamesContextualType6_ES6.types.diff index 1cdbbb2b13..d72c40d8a8 100644 --- a/testdata/baselines/reference/submodule/conformance/computedPropertyNamesContextualType6_ES6.types.diff +++ b/testdata/baselines/reference/submodule/conformance/computedPropertyNamesContextualType6_ES6.types.diff @@ -21,7 +21,7 @@ +>foo({ p: "", 0: () => { }, ["hi" + "bye"]: true, [0 + 1]: 0, [+"hi"]: [0]}) : string | number | boolean | number[] | () => void >foo : (obj: I) => T ->{ p: "", 0: () => { }, ["hi" + "bye"]: true, [0 + 1]: 0, [+"hi"]: [0]} : { [x: string]: string | number | true | (() => void) | number[]; [x: number]: number | (() => void) | number[]; p: string; 0: () => void; } -+>{ p: "", 0: () => { }, ["hi" + "bye"]: true, [0 + 1]: 0, [+"hi"]: [0]} : { [x: string]: string | number | true | number[] | () => void; [x: number]: number | number[] | () => void; p: string; 0: () => void; } ++>{ p: "", 0: () => { }, ["hi" + "bye"]: true, [0 + 1]: 0, [+"hi"]: [0]} : { [x: string]: string | number | true | number[] | () => void; [x: number]: number | number[] | () => void; 0: () => void; p: string; } p: "", >p : string diff --git a/testdata/baselines/reference/submodule/conformance/emitCompoundExponentiationAssignmentWithIndexingOnLHS3.types b/testdata/baselines/reference/submodule/conformance/emitCompoundExponentiationAssignmentWithIndexingOnLHS3.types index 51140ff2ad..b8a6096a44 100644 --- a/testdata/baselines/reference/submodule/conformance/emitCompoundExponentiationAssignmentWithIndexingOnLHS3.types +++ b/testdata/baselines/reference/submodule/conformance/emitCompoundExponentiationAssignmentWithIndexingOnLHS3.types @@ -2,8 +2,8 @@ === emitCompoundExponentiationAssignmentWithIndexingOnLHS3.ts === var object = { ->object : { _0: number; 0: number; } ->{ _0: 2, get 0() { return this._0; }, set 0(x: number) { this._0 = x; },} : { _0: number; 0: number; } +>object : { 0: number; _0: number; } +>{ _0: 2, get 0() { return this._0; }, set 0(x: number) { this._0 = x; },} : { 0: number; _0: number; } _0: 2, >_0 : number @@ -34,31 +34,31 @@ var object = { object[0] **= object[0]; >object[0] **= object[0] : number >object[0] : number ->object : { _0: number; 0: number; } +>object : { 0: number; _0: number; } >0 : 0 >object[0] : number ->object : { _0: number; 0: number; } +>object : { 0: number; _0: number; } >0 : 0 object[0] **= object[0] **= 2; >object[0] **= object[0] **= 2 : number >object[0] : number ->object : { _0: number; 0: number; } +>object : { 0: number; _0: number; } >0 : 0 >object[0] **= 2 : number >object[0] : number ->object : { _0: number; 0: number; } +>object : { 0: number; _0: number; } >0 : 0 >2 : 2 object[0] **= object[0] ** 2; >object[0] **= object[0] ** 2 : number >object[0] : number ->object : { _0: number; 0: number; } +>object : { 0: number; _0: number; } >0 : 0 >object[0] ** 2 : number >object[0] : number ->object : { _0: number; 0: number; } +>object : { 0: number; _0: number; } >0 : 0 >2 : 2 diff --git a/testdata/baselines/reference/submodule/conformance/emitCompoundExponentiationAssignmentWithIndexingOnLHS3.types.diff b/testdata/baselines/reference/submodule/conformance/emitCompoundExponentiationAssignmentWithIndexingOnLHS3.types.diff new file mode 100644 index 0000000000..b408ca368c --- /dev/null +++ b/testdata/baselines/reference/submodule/conformance/emitCompoundExponentiationAssignmentWithIndexingOnLHS3.types.diff @@ -0,0 +1,51 @@ +--- old.emitCompoundExponentiationAssignmentWithIndexingOnLHS3.types ++++ new.emitCompoundExponentiationAssignmentWithIndexingOnLHS3.types +@@= skipped -1, +1 lines =@@ + + === emitCompoundExponentiationAssignmentWithIndexingOnLHS3.ts === + var object = { +->object : { _0: number; 0: number; } +->{ _0: 2, get 0() { return this._0; }, set 0(x: number) { this._0 = x; },} : { _0: number; 0: number; } ++>object : { 0: number; _0: number; } ++>{ _0: 2, get 0() { return this._0; }, set 0(x: number) { this._0 = x; },} : { 0: number; _0: number; } + + _0: 2, + >_0 : number +@@= skipped -32, +32 lines =@@ + object[0] **= object[0]; + >object[0] **= object[0] : number + >object[0] : number +->object : { _0: number; 0: number; } ++>object : { 0: number; _0: number; } + >0 : 0 + >object[0] : number +->object : { _0: number; 0: number; } ++>object : { 0: number; _0: number; } + >0 : 0 + + object[0] **= object[0] **= 2; + >object[0] **= object[0] **= 2 : number + >object[0] : number +->object : { _0: number; 0: number; } ++>object : { 0: number; _0: number; } + >0 : 0 + >object[0] **= 2 : number + >object[0] : number +->object : { _0: number; 0: number; } ++>object : { 0: number; _0: number; } + >0 : 0 + >2 : 2 + + object[0] **= object[0] ** 2; + >object[0] **= object[0] ** 2 : number + >object[0] : number +->object : { _0: number; 0: number; } ++>object : { 0: number; _0: number; } + >0 : 0 + >object[0] ** 2 : number + >object[0] : number +->object : { _0: number; 0: number; } ++>object : { 0: number; _0: number; } + >0 : 0 + >2 : 2 + diff --git a/testdata/baselines/reference/submodule/conformance/importAttributes7.types b/testdata/baselines/reference/submodule/conformance/importAttributes7.types index 9e5c8eac18..ee7321168a 100644 --- a/testdata/baselines/reference/submodule/conformance/importAttributes7.types +++ b/testdata/baselines/reference/submodule/conformance/importAttributes7.types @@ -2,7 +2,7 @@ === /a.ts === export default { ->{ a: "a", b: "b", 1: "1",} : { a: string; b: string; 1: string; } +>{ a: "a", b: "b", 1: "1",} : { 1: string; a: string; b: string; } a: "a", >a : string @@ -19,7 +19,7 @@ export default { === /b.ts === import a from "./a" with { a: "a", "b": "b" }; ->a : { a: string; b: string; 1: string; } +>a : { 1: string; a: string; b: string; } >a : any export async function f() { diff --git a/testdata/baselines/reference/submodule/conformance/importAttributes7.types.diff b/testdata/baselines/reference/submodule/conformance/importAttributes7.types.diff index 34690d7dde..a8a6bc11f3 100644 --- a/testdata/baselines/reference/submodule/conformance/importAttributes7.types.diff +++ b/testdata/baselines/reference/submodule/conformance/importAttributes7.types.diff @@ -1,10 +1,21 @@ --- old.importAttributes7.types +++ new.importAttributes7.types -@@= skipped -19, +19 lines =@@ +@@= skipped -1, +1 lines =@@ + + === /a.ts === + export default { +->{ a: "a", b: "b", 1: "1",} : { a: string; b: string; 1: string; } ++>{ a: "a", b: "b", 1: "1",} : { 1: string; a: string; b: string; } + + a: "a", + >a : string +@@= skipped -17, +17 lines =@@ + === /b.ts === import a from "./a" with { a: "a", "b": "b" }; - >a : { a: string; b: string; 1: string; } +->a : { a: string; b: string; 1: string; } ->a : error ++>a : { 1: string; a: string; b: string; } +>a : any export async function f() { diff --git a/testdata/baselines/reference/submodule/conformance/indexSignatures1.types b/testdata/baselines/reference/submodule/conformance/indexSignatures1.types index b4be2ea8a4..49a89fbcb7 100644 --- a/testdata/baselines/reference/submodule/conformance/indexSignatures1.types +++ b/testdata/baselines/reference/submodule/conformance/indexSignatures1.types @@ -724,8 +724,8 @@ const obj12 = { }; const obj13 = { ->obj13 : { [x: string]: 0 | 1 | 2 | 3; [x: number]: 2 | 3; [x: symbol]: 4 | 5; x: 0; [1]: 2; [sym]: 4; } ->{ ['x']: 0 as const, ['a' + 'b']: 1 as const, [1]: 2 as const, [1 + 2]: 3 as const, [sym]: 4 as const, [Symbol()]: 5 as const,} : { [x: string]: 0 | 1 | 2 | 3; [x: number]: 2 | 3; [x: symbol]: 4 | 5; x: 0; [1]: 2; [sym]: 4; } +>obj13 : { [x: string]: 0 | 1 | 2 | 3; [x: number]: 2 | 3; [x: symbol]: 4 | 5; [1]: 2; x: 0; [sym]: 4; } +>{ ['x']: 0 as const, ['a' + 'b']: 1 as const, [1]: 2 as const, [1 + 2]: 3 as const, [sym]: 4 as const, [Symbol()]: 5 as const,} : { [x: string]: 0 | 1 | 2 | 3; [x: number]: 2 | 3; [x: symbol]: 4 | 5; [1]: 2; x: 0; [sym]: 4; } ['x']: 0 as const, >['x'] : 0 diff --git a/testdata/baselines/reference/submodule/conformance/indexSignatures1.types.diff b/testdata/baselines/reference/submodule/conformance/indexSignatures1.types.diff index 6c28b6e44a..c76306d3ea 100644 --- a/testdata/baselines/reference/submodule/conformance/indexSignatures1.types.diff +++ b/testdata/baselines/reference/submodule/conformance/indexSignatures1.types.diff @@ -58,8 +58,8 @@ const obj13 = { ->obj13 : { [x: string]: 0 | 2 | 1 | 3; [x: number]: 2 | 3; [x: symbol]: 4 | 5; x: 0; 1: 2; [sym]: 4; } ->{ ['x']: 0 as const, ['a' + 'b']: 1 as const, [1]: 2 as const, [1 + 2]: 3 as const, [sym]: 4 as const, [Symbol()]: 5 as const,} : { [x: string]: 0 | 2 | 1 | 3; [x: number]: 2 | 3; [x: symbol]: 4 | 5; x: 0; 1: 2; [sym]: 4; } -+>obj13 : { [x: string]: 0 | 1 | 2 | 3; [x: number]: 2 | 3; [x: symbol]: 4 | 5; x: 0; [1]: 2; [sym]: 4; } -+>{ ['x']: 0 as const, ['a' + 'b']: 1 as const, [1]: 2 as const, [1 + 2]: 3 as const, [sym]: 4 as const, [Symbol()]: 5 as const,} : { [x: string]: 0 | 1 | 2 | 3; [x: number]: 2 | 3; [x: symbol]: 4 | 5; x: 0; [1]: 2; [sym]: 4; } ++>obj13 : { [x: string]: 0 | 1 | 2 | 3; [x: number]: 2 | 3; [x: symbol]: 4 | 5; [1]: 2; x: 0; [sym]: 4; } ++>{ ['x']: 0 as const, ['a' + 'b']: 1 as const, [1]: 2 as const, [1 + 2]: 3 as const, [sym]: 4 as const, [Symbol()]: 5 as const,} : { [x: string]: 0 | 1 | 2 | 3; [x: number]: 2 | 3; [x: symbol]: 4 | 5; [1]: 2; x: 0; [sym]: 4; } ['x']: 0 as const, >['x'] : 0 diff --git a/testdata/baselines/reference/submodule/conformance/numericIndexerConstrainsPropertyDeclarations.types b/testdata/baselines/reference/submodule/conformance/numericIndexerConstrainsPropertyDeclarations.types index 402eb02dfd..cbfb6cd5a4 100644 --- a/testdata/baselines/reference/submodule/conformance/numericIndexerConstrainsPropertyDeclarations.types +++ b/testdata/baselines/reference/submodule/conformance/numericIndexerConstrainsPropertyDeclarations.types @@ -127,7 +127,7 @@ interface I { } var a: { ->a : { (): string; (x: any): number; [x: number]: string; a: string; b: number; c: () => {}; d: string; e: number; 1.0: string; 2.0: number; foo: () => string; "3.0": string; "4.0": number; f: MyNumber; } +>a : { (): string; (x: any): number; [x: number]: string; 1.0: string; 2.0: number; a: string; b: number; c: () => {}; d: string; e: number; foo: () => string; "3.0": string; "4.0": number; f: MyNumber; } [x: number]: string; >x : number @@ -174,7 +174,7 @@ var a: { var b: { [x: number]: string; } = { >b : { [x: number]: string; } >x : number ->{ a: '', b: 1, c: () => { }, "d": '', "e": 1, 1.0: '', 2.0: 1, "3.0": '', "4.0": 1, f: null, get X() { return ''; }, set X(v) { }, foo() { return ''; }} : { a: string; b: number; c: () => void; d: string; e: number; 1.0: string; 2.0: number; "3.0": string; "4.0": number; f: Myn; X: string; foo: () => string; } +>{ a: '', b: 1, c: () => { }, "d": '', "e": 1, 1.0: '', 2.0: 1, "3.0": '', "4.0": 1, f: null, get X() { return ''; }, set X(v) { }, foo() { return ''; }} : { 1.0: string; 2.0: number; a: string; b: number; c: () => void; d: string; e: number; "3.0": string; "4.0": number; f: Myn; X: string; foo: () => string; } a: '', >a : string diff --git a/testdata/baselines/reference/submodule/conformance/numericIndexerConstrainsPropertyDeclarations.types.diff b/testdata/baselines/reference/submodule/conformance/numericIndexerConstrainsPropertyDeclarations.types.diff index c5e86e12c6..42458c9aef 100644 --- a/testdata/baselines/reference/submodule/conformance/numericIndexerConstrainsPropertyDeclarations.types.diff +++ b/testdata/baselines/reference/submodule/conformance/numericIndexerConstrainsPropertyDeclarations.types.diff @@ -23,7 +23,7 @@ var a: { ->a : { (): string; (x: any): number; [x: number]: string; a: string; b: number; c: () => {}; d: string; e: number; 1: string; 2: number; foo(): string; "3.0": string; "4.0": number; f: MyNumber; } -+>a : { (): string; (x: any): number; [x: number]: string; a: string; b: number; c: () => {}; d: string; e: number; 1.0: string; 2.0: number; foo: () => string; "3.0": string; "4.0": number; f: MyNumber; } ++>a : { (): string; (x: any): number; [x: number]: string; 1.0: string; 2.0: number; a: string; b: number; c: () => {}; d: string; e: number; foo: () => string; "3.0": string; "4.0": number; f: MyNumber; } [x: number]: string; >x : number @@ -32,7 +32,7 @@ >b : { [x: number]: string; } >x : number ->{ a: '', b: 1, c: () => { }, "d": '', "e": 1, 1.0: '', 2.0: 1, "3.0": '', "4.0": 1, f: null, get X() { return ''; }, set X(v) { }, foo() { return ''; }} : { a: string; b: number; c: () => void; d: string; e: number; 1: string; 2: number; "3.0": string; "4.0": number; f: Myn; X: string; foo(): string; } -+>{ a: '', b: 1, c: () => { }, "d": '', "e": 1, 1.0: '', 2.0: 1, "3.0": '', "4.0": 1, f: null, get X() { return ''; }, set X(v) { }, foo() { return ''; }} : { a: string; b: number; c: () => void; d: string; e: number; 1.0: string; 2.0: number; "3.0": string; "4.0": number; f: Myn; X: string; foo: () => string; } ++>{ a: '', b: 1, c: () => { }, "d": '', "e": 1, 1.0: '', 2.0: 1, "3.0": '', "4.0": 1, f: null, get X() { return ''; }, set X(v) { }, foo() { return ''; }} : { 1.0: string; 2.0: number; a: string; b: number; c: () => void; d: string; e: number; "3.0": string; "4.0": number; f: Myn; X: string; foo: () => string; } a: '', >a : string diff --git a/testdata/baselines/reference/submodule/conformance/numericIndexerConstrainsPropertyDeclarations2.types b/testdata/baselines/reference/submodule/conformance/numericIndexerConstrainsPropertyDeclarations2.types index 1e62dcd612..bf79722313 100644 --- a/testdata/baselines/reference/submodule/conformance/numericIndexerConstrainsPropertyDeclarations2.types +++ b/testdata/baselines/reference/submodule/conformance/numericIndexerConstrainsPropertyDeclarations2.types @@ -65,7 +65,7 @@ interface Foo2 { } var a: { ->a : { [x: number]: A; 1.0: A; 2.0: B; "2.5": B; 3.0: number; "4.0": string; } +>a : { [x: number]: A; 1.0: A; 2.0: B; 3.0: number; "2.5": B; "4.0": string; } [x: number]: A; >x : number @@ -91,7 +91,7 @@ var a: { var b: { [x: number]: A } = { >b : { [x: number]: A; } >x : number ->{ 1.0: new A(), 2.0: new B(), "2.5": new B(), 3.0: 1, "4.0": ''} : { 1.0: A; 2.0: B; "2.5": B; 3.0: number; "4.0": string; } +>{ 1.0: new A(), 2.0: new B(), "2.5": new B(), 3.0: 1, "4.0": ''} : { 1.0: A; 2.0: B; 3.0: number; "2.5": B; "4.0": string; } 1.0: new A(), >1.0 : A diff --git a/testdata/baselines/reference/submodule/conformance/numericIndexerConstrainsPropertyDeclarations2.types.diff b/testdata/baselines/reference/submodule/conformance/numericIndexerConstrainsPropertyDeclarations2.types.diff index 790e58071c..87012463b2 100644 --- a/testdata/baselines/reference/submodule/conformance/numericIndexerConstrainsPropertyDeclarations2.types.diff +++ b/testdata/baselines/reference/submodule/conformance/numericIndexerConstrainsPropertyDeclarations2.types.diff @@ -14,7 +14,7 @@ var a: { ->a : { [x: number]: A; 1: A; 2: B; "2.5": B; 3: number; "4.0": string; } -+>a : { [x: number]: A; 1.0: A; 2.0: B; "2.5": B; 3.0: number; "4.0": string; } ++>a : { [x: number]: A; 1.0: A; 2.0: B; 3.0: number; "2.5": B; "4.0": string; } [x: number]: A; >x : number @@ -23,7 +23,7 @@ >b : { [x: number]: A; } >x : number ->{ 1.0: new A(), 2.0: new B(), "2.5": new B(), 3.0: 1, "4.0": ''} : { 1: A; 2: B; "2.5": B; 3: number; "4.0": string; } -+>{ 1.0: new A(), 2.0: new B(), "2.5": new B(), 3.0: 1, "4.0": ''} : { 1.0: A; 2.0: B; "2.5": B; 3.0: number; "4.0": string; } ++>{ 1.0: new A(), 2.0: new B(), "2.5": new B(), 3.0: 1, "4.0": ''} : { 1.0: A; 2.0: B; 3.0: number; "2.5": B; "4.0": string; } 1.0: new A(), >1.0 : A diff --git a/testdata/baselines/reference/submodule/conformance/objectLiteralShorthandPropertiesErrorFromNotUsingIdentifier.types b/testdata/baselines/reference/submodule/conformance/objectLiteralShorthandPropertiesErrorFromNotUsingIdentifier.types index d12fd3ed64..d017d72df3 100644 --- a/testdata/baselines/reference/submodule/conformance/objectLiteralShorthandPropertiesErrorFromNotUsingIdentifier.types +++ b/testdata/baselines/reference/submodule/conformance/objectLiteralShorthandPropertiesErrorFromNotUsingIdentifier.types @@ -3,8 +3,8 @@ === objectLiteralShorthandPropertiesErrorFromNotUsingIdentifier.ts === // errors var y = { ->y : { stringLiteral: any; 42: any; readonly e: void; f: any; this: any; super: any; var: any; class: any; typeof: any; } ->{ "stringLiteral", 42, get e, set f, this, super, var, class, typeof} : { stringLiteral: any; 42: any; readonly e: void; f: any; this: any; super: any; var: any; class: any; typeof: any; } +>y : { 42: any; stringLiteral: any; readonly e: void; f: any; this: any; super: any; var: any; class: any; typeof: any; } +>{ "stringLiteral", 42, get e, set f, this, super, var, class, typeof} : { 42: any; stringLiteral: any; readonly e: void; f: any; this: any; super: any; var: any; class: any; typeof: any; } "stringLiteral", >"stringLiteral" : any @@ -43,8 +43,8 @@ var y = { > : any var x = { ->x : { a: any; : any; ss: any; [1]: any; } ->{ a.b, a["ss"], a[1],} : { a: any; : any; ss: any; [1]: any; } +>x : { [1]: any; a: any; : any; ss: any; } +>{ a.b, a["ss"], a[1],} : { [1]: any; a: any; : any; ss: any; } a.b, >a : any diff --git a/testdata/baselines/reference/submodule/conformance/objectLiteralShorthandPropertiesErrorFromNotUsingIdentifier.types.diff b/testdata/baselines/reference/submodule/conformance/objectLiteralShorthandPropertiesErrorFromNotUsingIdentifier.types.diff index 01f6925369..259c82a7f6 100644 --- a/testdata/baselines/reference/submodule/conformance/objectLiteralShorthandPropertiesErrorFromNotUsingIdentifier.types.diff +++ b/testdata/baselines/reference/submodule/conformance/objectLiteralShorthandPropertiesErrorFromNotUsingIdentifier.types.diff @@ -1,13 +1,24 @@ --- old.objectLiteralShorthandPropertiesErrorFromNotUsingIdentifier.types +++ new.objectLiteralShorthandPropertiesErrorFromNotUsingIdentifier.types -@@= skipped -42, +42 lines =@@ +@@= skipped -2, +2 lines =@@ + === objectLiteralShorthandPropertiesErrorFromNotUsingIdentifier.ts === + // errors + var y = { +->y : { stringLiteral: any; 42: any; readonly e: void; f: any; this: any; super: any; var: any; class: any; typeof: any; } +->{ "stringLiteral", 42, get e, set f, this, super, var, class, typeof} : { stringLiteral: any; 42: any; readonly e: void; f: any; this: any; super: any; var: any; class: any; typeof: any; } ++>y : { 42: any; stringLiteral: any; readonly e: void; f: any; this: any; super: any; var: any; class: any; typeof: any; } ++>{ "stringLiteral", 42, get e, set f, this, super, var, class, typeof} : { 42: any; stringLiteral: any; readonly e: void; f: any; this: any; super: any; var: any; class: any; typeof: any; } + + "stringLiteral", + >"stringLiteral" : any +@@= skipped -40, +40 lines =@@ > : any var x = { ->x : { a: any; "": any; ss: any; 1: any; } ->{ a.b, a["ss"], a[1],} : { a: any; "": any; ss: any; 1: any; } -+>x : { a: any; : any; ss: any; [1]: any; } -+>{ a.b, a["ss"], a[1],} : { a: any; : any; ss: any; [1]: any; } ++>x : { [1]: any; a: any; : any; ss: any; } ++>{ a.b, a["ss"], a[1],} : { [1]: any; a: any; : any; ss: any; } a.b, >a : any diff --git a/testdata/baselines/reference/submodule/conformance/objectTypeWithStringNamedNumericProperty.types b/testdata/baselines/reference/submodule/conformance/objectTypeWithStringNamedNumericProperty.types index 37f38355b9..6806040b2d 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypeWithStringNamedNumericProperty.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypeWithStringNamedNumericProperty.types @@ -282,7 +282,7 @@ var r13 = i[-01] >01 : 1 var a: { ->a : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } +>a : { "-1": Date; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } "0.1": void; >"0.1" : void @@ -312,19 +312,19 @@ var a: { var r1 = a['0.1']; >r1 : void >a['0.1'] : void ->a : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } +>a : { "-1": Date; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } >'0.1' : "0.1" var r2 = a['.1']; >r2 : Object >a['.1'] : Object ->a : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } +>a : { "-1": Date; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } >'.1' : ".1" var r3 = a['1']; >r3 : number >a['1'] : number ->a : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } +>a : { "-1": Date; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } >'1' : "1" var r3 = c[1]; @@ -336,7 +336,7 @@ var r3 = c[1]; var r4 = a['1.']; >r4 : string >a['1.'] : string ->a : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } +>a : { "-1": Date; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } >'1.' : "1." var r3 = c[1.]; // same as indexing by 1 when done numerically @@ -348,13 +348,13 @@ var r3 = c[1.]; // same as indexing by 1 when done numerically var r5 = a['1..']; >r5 : boolean >a['1..'] : boolean ->a : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } +>a : { "-1": Date; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } >'1..' : "1.." var r6 = a['1.0']; >r6 : Date >a['1.0'] : Date ->a : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } +>a : { "-1": Date; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } >'1.0' : "1.0" var r3 = c[1.0]; // same as indexing by 1 when done numerically @@ -417,8 +417,8 @@ var r13 = i[-01] >01 : 1 var b = { ->b : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } ->{ "0.1": null, ".1": new Object(), "1": 1, "1.": "", "1..": true, "1.0": new Date(), "-1.0": /123/, "-1": Date} : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } +>b : { "-1": DateConstructor; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } +>{ "0.1": null, ".1": new Object(), "1": 1, "1.": "", "1..": true, "1.0": new Date(), "-1.0": /123/, "-1": Date} : { "-1": DateConstructor; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } "0.1": null, >"0.1" : void @@ -459,19 +459,19 @@ var b = { var r1 = b['0.1']; >r1 : void >b['0.1'] : void ->b : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } +>b : { "-1": DateConstructor; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } >'0.1' : "0.1" var r2 = b['.1']; >r2 : Object >b['.1'] : Object ->b : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } +>b : { "-1": DateConstructor; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } >'.1' : ".1" var r3 = b['1']; >r3 : number >b['1'] : number ->b : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } +>b : { "-1": DateConstructor; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } >'1' : "1" var r3 = c[1]; @@ -483,7 +483,7 @@ var r3 = c[1]; var r4 = b['1.']; >r4 : string >b['1.'] : string ->b : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } +>b : { "-1": DateConstructor; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } >'1.' : "1." var r3 = c[1.]; // same as indexing by 1 when done numerically @@ -495,13 +495,13 @@ var r3 = c[1.]; // same as indexing by 1 when done numerically var r5 = b['1..']; >r5 : boolean >b['1..'] : boolean ->b : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } +>b : { "-1": DateConstructor; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } >'1..' : "1.." var r6 = b['1.0']; >r6 : Date >b['1.0'] : Date ->b : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } +>b : { "-1": DateConstructor; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } >'1.0' : "1.0" var r3 = c[1.0]; // same as indexing by 1 when done numerically diff --git a/testdata/baselines/reference/submodule/conformance/objectTypeWithStringNamedNumericProperty.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypeWithStringNamedNumericProperty.types.diff index ec8a0720f9..dc95c17fa7 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypeWithStringNamedNumericProperty.types.diff +++ b/testdata/baselines/reference/submodule/conformance/objectTypeWithStringNamedNumericProperty.types.diff @@ -9,3 +9,119 @@ "0.1": void; >"0.1" : void +@@= skipped -136, +138 lines =@@ + >01 : 1 + + var a: { +->a : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } ++>a : { "-1": Date; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } + + "0.1": void; + >"0.1" : void +@@= skipped -30, +30 lines =@@ + var r1 = a['0.1']; + >r1 : void + >a['0.1'] : void +->a : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } ++>a : { "-1": Date; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } + >'0.1' : "0.1" + + var r2 = a['.1']; + >r2 : Object + >a['.1'] : Object +->a : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } ++>a : { "-1": Date; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } + >'.1' : ".1" + + var r3 = a['1']; + >r3 : number + >a['1'] : number +->a : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } ++>a : { "-1": Date; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } + >'1' : "1" + + var r3 = c[1]; +@@= skipped -24, +24 lines =@@ + var r4 = a['1.']; + >r4 : string + >a['1.'] : string +->a : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } ++>a : { "-1": Date; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } + >'1.' : "1." + + var r3 = c[1.]; // same as indexing by 1 when done numerically +@@= skipped -12, +12 lines =@@ + var r5 = a['1..']; + >r5 : boolean + >a['1..'] : boolean +->a : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } ++>a : { "-1": Date; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } + >'1..' : "1.." + + var r6 = a['1.0']; + >r6 : Date + >a['1.0'] : Date +->a : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": Date; } ++>a : { "-1": Date; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } + >'1.0' : "1.0" + + var r3 = c[1.0]; // same as indexing by 1 when done numerically +@@= skipped -69, +69 lines =@@ + >01 : 1 + + var b = { +->b : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } +->{ "0.1": null, ".1": new Object(), "1": 1, "1.": "", "1..": true, "1.0": new Date(), "-1.0": /123/, "-1": Date} : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } ++>b : { "-1": DateConstructor; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } ++>{ "0.1": null, ".1": new Object(), "1": 1, "1.": "", "1..": true, "1.0": new Date(), "-1.0": /123/, "-1": Date} : { "-1": DateConstructor; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } + + "0.1": null, + >"0.1" : void +@@= skipped -42, +42 lines =@@ + var r1 = b['0.1']; + >r1 : void + >b['0.1'] : void +->b : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } ++>b : { "-1": DateConstructor; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } + >'0.1' : "0.1" + + var r2 = b['.1']; + >r2 : Object + >b['.1'] : Object +->b : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } ++>b : { "-1": DateConstructor; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } + >'.1' : ".1" + + var r3 = b['1']; + >r3 : number + >b['1'] : number +->b : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } ++>b : { "-1": DateConstructor; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } + >'1' : "1" + + var r3 = c[1]; +@@= skipped -24, +24 lines =@@ + var r4 = b['1.']; + >r4 : string + >b['1.'] : string +->b : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } ++>b : { "-1": DateConstructor; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } + >'1.' : "1." + + var r3 = c[1.]; // same as indexing by 1 when done numerically +@@= skipped -12, +12 lines =@@ + var r5 = b['1..']; + >r5 : boolean + >b['1..'] : boolean +->b : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } ++>b : { "-1": DateConstructor; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } + >'1..' : "1.." + + var r6 = b['1.0']; + >r6 : Date + >b['1.0'] : Date +->b : { "0.1": void; ".1": Object; "1": number; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; "-1": DateConstructor; } ++>b : { "-1": DateConstructor; "1": number; "0.1": void; ".1": Object; "1.": string; "1..": boolean; "1.0": Date; "-1.0": RegExp; } + >'1.0' : "1.0" + + var r3 = c[1.0]; // same as indexing by 1 when done numerically diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesWithOptionalProperties2.types b/testdata/baselines/reference/submodule/conformance/objectTypesWithOptionalProperties2.types index 39e5ef1730..eea0e43398 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesWithOptionalProperties2.types +++ b/testdata/baselines/reference/submodule/conformance/objectTypesWithOptionalProperties2.types @@ -47,8 +47,8 @@ class C2 { var b = { ->b : { x: () => any; 1: any; } ->{ x()?: 1 // error} : { x: () => any; 1: any; } +>b : { 1: any; x: () => any; } +>{ x()?: 1 // error} : { 1: any; x: () => any; } x()?: 1 // error >x : () => any diff --git a/testdata/baselines/reference/submodule/conformance/objectTypesWithOptionalProperties2.types.diff b/testdata/baselines/reference/submodule/conformance/objectTypesWithOptionalProperties2.types.diff index 5747a53ed4..7fd5ca4515 100644 --- a/testdata/baselines/reference/submodule/conformance/objectTypesWithOptionalProperties2.types.diff +++ b/testdata/baselines/reference/submodule/conformance/objectTypesWithOptionalProperties2.types.diff @@ -42,8 +42,8 @@ var b = { ->b : { x(): any; 1: any; } ->{ x()?: 1 // error} : { x(): any; 1: any; } -+>b : { x: () => any; 1: any; } -+>{ x()?: 1 // error} : { x: () => any; 1: any; } ++>b : { 1: any; x: () => any; } ++>{ x()?: 1 // error} : { 1: any; x: () => any; } x()?: 1 // error >x : () => any diff --git a/testdata/baselines/reference/submodule/conformance/stringIndexerConstrainsPropertyDeclarations.types b/testdata/baselines/reference/submodule/conformance/stringIndexerConstrainsPropertyDeclarations.types index ede6783f38..5e65724e90 100644 --- a/testdata/baselines/reference/submodule/conformance/stringIndexerConstrainsPropertyDeclarations.types +++ b/testdata/baselines/reference/submodule/conformance/stringIndexerConstrainsPropertyDeclarations.types @@ -127,7 +127,7 @@ interface I { } var a: { ->a : { (): string; (x: any): number; [x: string]: string; a: string; b: number; c: () => {}; d: string; e: number; 1.0: string; 2.0: number; foo: () => string; "3.0": string; "4.0": number; f: MyString; } +>a : { (): string; (x: any): number; [x: string]: string; 1.0: string; 2.0: number; a: string; b: number; c: () => {}; d: string; e: number; foo: () => string; "3.0": string; "4.0": number; f: MyString; } [x: string]: string; >x : string @@ -174,7 +174,7 @@ var a: { var b: { [x: string]: string; } = { >b : { [x: string]: string; } >x : string ->{ a: '', b: 1, c: () => { }, "d": '', "e": 1, 1.0: '', 2.0: 1, "3.0": '', "4.0": 1, f: null, get X() { return ''; }, set X(v) { }, foo() { return ''; }} : { a: string; b: number; c: () => void; d: string; e: number; 1.0: string; 2.0: number; "3.0": string; "4.0": number; f: MyString; X: string; foo: () => string; } +>{ a: '', b: 1, c: () => { }, "d": '', "e": 1, 1.0: '', 2.0: 1, "3.0": '', "4.0": 1, f: null, get X() { return ''; }, set X(v) { }, foo() { return ''; }} : { 1.0: string; 2.0: number; a: string; b: number; c: () => void; d: string; e: number; "3.0": string; "4.0": number; f: MyString; X: string; foo: () => string; } a: '', >a : string diff --git a/testdata/baselines/reference/submodule/conformance/stringIndexerConstrainsPropertyDeclarations.types.diff b/testdata/baselines/reference/submodule/conformance/stringIndexerConstrainsPropertyDeclarations.types.diff index 42c2d1faeb..f7798d6c83 100644 --- a/testdata/baselines/reference/submodule/conformance/stringIndexerConstrainsPropertyDeclarations.types.diff +++ b/testdata/baselines/reference/submodule/conformance/stringIndexerConstrainsPropertyDeclarations.types.diff @@ -23,7 +23,7 @@ var a: { ->a : { (): string; (x: any): number; [x: string]: string; a: string; b: number; c: () => {}; d: string; e: number; 1: string; 2: number; foo(): string; "3.0": string; "4.0": number; f: MyString; } -+>a : { (): string; (x: any): number; [x: string]: string; a: string; b: number; c: () => {}; d: string; e: number; 1.0: string; 2.0: number; foo: () => string; "3.0": string; "4.0": number; f: MyString; } ++>a : { (): string; (x: any): number; [x: string]: string; 1.0: string; 2.0: number; a: string; b: number; c: () => {}; d: string; e: number; foo: () => string; "3.0": string; "4.0": number; f: MyString; } [x: string]: string; >x : string @@ -32,7 +32,7 @@ >b : { [x: string]: string; } >x : string ->{ a: '', b: 1, c: () => { }, "d": '', "e": 1, 1.0: '', 2.0: 1, "3.0": '', "4.0": 1, f: null, get X() { return ''; }, set X(v) { }, foo() { return ''; }} : { a: string; b: number; c: () => void; d: string; e: number; 1: string; 2: number; "3.0": string; "4.0": number; f: MyString; X: string; foo(): string; } -+>{ a: '', b: 1, c: () => { }, "d": '', "e": 1, 1.0: '', 2.0: 1, "3.0": '', "4.0": 1, f: null, get X() { return ''; }, set X(v) { }, foo() { return ''; }} : { a: string; b: number; c: () => void; d: string; e: number; 1.0: string; 2.0: number; "3.0": string; "4.0": number; f: MyString; X: string; foo: () => string; } ++>{ a: '', b: 1, c: () => { }, "d": '', "e": 1, 1.0: '', 2.0: 1, "3.0": '', "4.0": 1, f: null, get X() { return ''; }, set X(v) { }, foo() { return ''; }} : { 1.0: string; 2.0: number; a: string; b: number; c: () => void; d: string; e: number; "3.0": string; "4.0": number; f: MyString; X: string; foo: () => string; } a: '', >a : string From 5969539832de98fa083676387c8b1195a2e1d451 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Sat, 22 Mar 2025 11:21:36 +0100 Subject: [PATCH 2/3] remove debug code --- internal/checker/checker.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/internal/checker/checker.go b/internal/checker/checker.go index f2de7e7508..99f1bacb21 100644 --- a/internal/checker/checker.go +++ b/internal/checker/checker.go @@ -6,7 +6,6 @@ import ( "maps" "math" - // "runtime" "slices" "strconv" "strings" @@ -23169,9 +23168,6 @@ func (c *Checker) setStructuredTypeMembers(t *Type, members ast.SymbolTable, cal t.objectFlags |= ObjectFlagsMembersResolved data := t.AsStructuredType() data.members = members - // if t.id == 167 { - // runtime.Breakpoint() - // } data.properties = c.getNamedMembers(members) if len(callSignatures) != 0 { if len(constructSignatures) != 0 { From 76ad0f4caa0fa73899b3549100fc270fc43a6487 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mateusz=20Burzy=C5=84ski?= Date: Sat, 22 Mar 2025 11:24:56 +0100 Subject: [PATCH 3/3] simplify --- internal/checker/utilities.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/internal/checker/utilities.go b/internal/checker/utilities.go index 7d768fea18..1dd89460b7 100644 --- a/internal/checker/utilities.go +++ b/internal/checker/utilities.go @@ -632,12 +632,12 @@ func (c *Checker) compareSymbolsWorker(s1, s2 *ast.Symbol) int { int1, err1 := strconv.Atoi(s1.Name) int2, err2 := strconv.Atoi(s2.Name) if err1 == nil && err2 == nil { - if rv := cmp.Compare(int1, int2); rv != 0 { - return rv - } - } else if err1 == nil { + return cmp.Compare(int1, int2) + } + if err1 == nil { return -1 - } else if err2 == nil { + } + if err2 == nil { return 1 } if len(s1.Declarations) != 0 && len(s2.Declarations) != 0 {