diff --git a/internal/checker/checker.go b/internal/checker/checker.go index d2033c07d8..b5d4ff57bd 100644 --- a/internal/checker/checker.go +++ b/internal/checker/checker.go @@ -4549,9 +4549,9 @@ func (c *Checker) checkIndexConstraints(t *Type, symbol *ast.Symbol, isStaticInd typeDeclaration := symbol.ValueDeclaration if typeDeclaration != nil && ast.IsClassLike(typeDeclaration) { for _, member := range typeDeclaration.Members() { - // Only process instance properties with computed names here. Static properties cannot be in conflict with indexers, - // and properties with literal names were already checked. - if !ast.IsStatic(member) && !c.hasBindableName(member) { + // Only process instance properties against instance index signatures and static properties against static index signatures + if ((!isStaticIndex && !ast.IsStatic(member)) || + (isStaticIndex && ast.IsStatic(member))) && !c.hasBindableName(member) { symbol := c.getSymbolOfDeclaration(member) c.checkIndexConstraintForProperty(t, symbol, c.getTypeOfExpression(member.Name().Expression()), c.getNonMissingTypeOfSymbol(symbol)) } diff --git a/internal/checker/nodebuilderimpl.go b/internal/checker/nodebuilderimpl.go index afdc9494d7..c00f4a1757 100644 --- a/internal/checker/nodebuilderimpl.go +++ b/internal/checker/nodebuilderimpl.go @@ -1951,6 +1951,48 @@ func (b *nodeBuilderImpl) serializeReturnTypeForSignature(signature *Signature) return returnTypeNode } +func (b *nodeBuilderImpl) indexInfoToObjectComputedNamesOrSignatureDeclaration(indexInfo *IndexInfo, typeNode *ast.TypeNode) []*ast.TypeElement { + if len(indexInfo.components) != 0 { + // Index info is derived from object or class computed property names (plus explicit named members) - we can clone those instead of writing out the result computed index signature + allComponentComputedNamesSerializable := b.ctx.enclosingDeclaration != nil && core.Every(indexInfo.components, func(c *ast.Node) bool { + return c.Name() != nil && + ast.IsComputedPropertyName(c.Name()) && + ast.IsEntityNameExpression(c.Name().AsComputedPropertyName().Expression) && + b.ch.GetEmitResolver().isEntityNameVisible(c.Name().AsComputedPropertyName().Expression, b.ctx.enclosingDeclaration, false).Accessibility == printer.SymbolAccessibilityAccessible + }) + if allComponentComputedNamesSerializable { + // Only use computed name serialization form if all components are visible and take the `a.b.c` form + var newComponents []*ast.Node + for _, c := range indexInfo.components { + // skip late bound props that contribute to the index signature - they'll be created by property creation anyway + if !b.ch.hasLateBindableName(c) { + newComponents = append(newComponents, c) + } + } + result := make([]*ast.TypeElement, 0, len(newComponents)) + for _, c := range newComponents { + // Still need to track visibility even if we've already checked it to paint references as used + b.trackComputedName(c.Name().AsComputedPropertyName().Expression, b.ctx.enclosingDeclaration) + var modifiers *ast.ModifierList + if indexInfo.isReadonly { + modifiers = b.f.NewModifierList([]*ast.Node{b.f.NewModifier(ast.KindReadonlyKeyword)}) + } + var questionToken *ast.Node + if c.QuestionToken() != nil { + questionToken = b.f.NewToken(ast.KindQuestionToken) + } + if typeNode == nil { + typeNode = b.typeToTypeNode(b.ch.getTypeOfSymbol(c.Symbol())) + } + propertySignature := b.f.NewPropertySignatureDeclaration(modifiers, c.Name(), questionToken, typeNode, nil) + result = append(result, propertySignature) + } + return result + } + } + return []*ast.TypeElement{b.indexInfoToIndexSignatureDeclarationHelper(indexInfo, typeNode)} +} + func (b *nodeBuilderImpl) indexInfoToIndexSignatureDeclarationHelper(indexInfo *IndexInfo, typeNode *ast.TypeNode) *ast.Node { name := getNameFromIndexInfo(indexInfo) indexerTypeNode := b.typeToTypeNode(indexInfo.keyType) @@ -2083,9 +2125,15 @@ func (b *nodeBuilderImpl) shouldUsePlaceholderForProperty(propertySymbol *ast.Sy func (b *nodeBuilderImpl) trackComputedName(accessExpression *ast.Node, enclosingDeclaration *ast.Node) { // get symbol of the first identifier of the entityName firstIdentifier := ast.GetFirstIdentifier(accessExpression) - name := b.ch.resolveName(firstIdentifier, firstIdentifier.Text(), ast.SymbolFlagsValue|ast.SymbolFlagsExportValue, nil /*nameNotFoundMessage*/, true /*isUse*/, false) + name := b.ch.resolveName(enclosingDeclaration, firstIdentifier.Text(), ast.SymbolFlagsValue|ast.SymbolFlagsExportValue, nil /*nameNotFoundMessage*/, true /*isUse*/, false) if name != nil { b.ctx.tracker.TrackSymbol(name, enclosingDeclaration, ast.SymbolFlagsValue) + } else { + // Name does not resolve at target location, track symbol at dest location (should be inaccessible) + fallback := b.ch.resolveName(firstIdentifier, firstIdentifier.Text(), ast.SymbolFlagsValue|ast.SymbolFlagsExportValue, nil /*nameNotFoundMessage*/, true /*isUse*/, false) + if fallback != nil { + b.ctx.tracker.TrackSymbol(fallback, enclosingDeclaration, ast.SymbolFlagsValue) + } } } @@ -2331,7 +2379,7 @@ func (b *nodeBuilderImpl) createTypeNodesFromResolvedType(resolvedType *Structur typeElements = append(typeElements, b.signatureToSignatureDeclarationHelper(signature, ast.KindConstructSignature, nil)) } for _, info := range resolvedType.indexInfos { - typeElements = append(typeElements, b.indexInfoToIndexSignatureDeclarationHelper(info, core.IfElse(resolvedType.objectFlags&ObjectFlagsReverseMapped != 0, b.createElidedInformationPlaceholder(), nil))) + typeElements = append(typeElements, b.indexInfoToObjectComputedNamesOrSignatureDeclaration(info, core.IfElse(resolvedType.objectFlags&ObjectFlagsReverseMapped != 0, b.createElidedInformationPlaceholder(), nil))...) } properties := resolvedType.properties diff --git a/testdata/baselines/reference/submodule/compiler/capturedParametersInInitializers1.types b/testdata/baselines/reference/submodule/compiler/capturedParametersInInitializers1.types index 43f8ee2282..0fc6f45127 100644 --- a/testdata/baselines/reference/submodule/compiler/capturedParametersInInitializers1.types +++ b/testdata/baselines/reference/submodule/compiler/capturedParametersInInitializers1.types @@ -109,9 +109,9 @@ function foo8(y = (async () => z)(), z = 1) { // error - used as computed name of method function foo9(y = {[z]() { return z; }}, z = 1) { ->foo9 : (y?: { [x: number]: () => number; }, z?: number) => void ->y : { [x: number]: () => number; } ->{[z]() { return z; }} : { [x: number]: () => number; } +>foo9 : (y?: { [z]: () => number; }, z?: number) => void +>y : { [z]: () => number; } +>{[z]() { return z; }} : { [z]: () => number; } >[z] : () => number >z : number >z : number diff --git a/testdata/baselines/reference/submodule/compiler/capturedParametersInInitializers1.types.diff b/testdata/baselines/reference/submodule/compiler/capturedParametersInInitializers1.types.diff index 6f96a330a2..13f01cb7f0 100644 --- a/testdata/baselines/reference/submodule/compiler/capturedParametersInInitializers1.types.diff +++ b/testdata/baselines/reference/submodule/compiler/capturedParametersInInitializers1.types.diff @@ -25,17 +25,4 @@ +>{ x: a } : { x: number; } >x : number >a : number - >z : number -@@= skipped -74, +74 lines =@@ - - // error - used as computed name of method - function foo9(y = {[z]() { return z; }}, z = 1) { -->foo9 : (y?: { [z]: () => number; }, z?: number) => void -->y : { [z]: () => number; } -->{[z]() { return z; }} : { [z]: () => number; } -+>foo9 : (y?: { [x: number]: () => number; }, z?: number) => void -+>y : { [x: number]: () => number; } -+>{[z]() { return z; }} : { [x: number]: () => number; } - >[z] : () => number - >z : number >z : number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/checkJsObjectLiteralIndexSignatures.types b/testdata/baselines/reference/submodule/compiler/checkJsObjectLiteralIndexSignatures.types index 9ee51c2924..b6a97e07b1 100644 --- a/testdata/baselines/reference/submodule/compiler/checkJsObjectLiteralIndexSignatures.types +++ b/testdata/baselines/reference/submodule/compiler/checkJsObjectLiteralIndexSignatures.types @@ -16,8 +16,8 @@ let s = `${n}`; >n : number const numericIndex = { [n]: 1 }; ->numericIndex : { [x: number]: number; } ->{ [n]: 1 } : { [x: number]: number; } +>numericIndex : { [n]: number; } +>{ [n]: 1 } : { [n]: number; } >[n] : number >n : number >1 : 1 @@ -26,13 +26,13 @@ numericIndex[n].toFixed(); >numericIndex[n].toFixed() : string >numericIndex[n].toFixed : (fractionDigits?: number) => string >numericIndex[n] : number ->numericIndex : { [x: number]: number; } +>numericIndex : { [n]: number; } >n : number >toFixed : (fractionDigits?: number) => string const stringIndex = { [s]: 1 }; ->stringIndex : { [x: string]: number; } ->{ [s]: 1 } : { [x: string]: number; } +>stringIndex : { [s]: number; } +>{ [s]: 1 } : { [s]: number; } >[s] : number >s : string >1 : 1 @@ -41,7 +41,7 @@ stringIndex[s].toFixed(); >stringIndex[s].toFixed() : string >stringIndex[s].toFixed : (fractionDigits?: number) => string >stringIndex[s] : number ->stringIndex : { [x: string]: number; } +>stringIndex : { [s]: number; } >s : string >toFixed : (fractionDigits?: number) => string diff --git a/testdata/baselines/reference/submodule/compiler/classNonUniqueSymbolMethodHasSymbolIndexer.js b/testdata/baselines/reference/submodule/compiler/classNonUniqueSymbolMethodHasSymbolIndexer.js index d2adefb662..87e6bdcbef 100644 --- a/testdata/baselines/reference/submodule/compiler/classNonUniqueSymbolMethodHasSymbolIndexer.js +++ b/testdata/baselines/reference/submodule/compiler/classNonUniqueSymbolMethodHasSymbolIndexer.js @@ -33,7 +33,7 @@ export declare class A { } export declare const Mixer: { new (): { - [x: symbol]: () => number; + [a]: () => number; }; } & (new (...args: any[]) => { mixed: true; diff --git a/testdata/baselines/reference/submodule/compiler/classNonUniqueSymbolMethodHasSymbolIndexer.js.diff b/testdata/baselines/reference/submodule/compiler/classNonUniqueSymbolMethodHasSymbolIndexer.js.diff deleted file mode 100644 index d64056e43a..0000000000 --- a/testdata/baselines/reference/submodule/compiler/classNonUniqueSymbolMethodHasSymbolIndexer.js.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.classNonUniqueSymbolMethodHasSymbolIndexer.js -+++ new.classNonUniqueSymbolMethodHasSymbolIndexer.js -@@= skipped -32, +32 lines =@@ - } - export declare const Mixer: { - new (): { -- [a]: () => number; -+ [x: symbol]: () => number; - }; - } & (new (...args: any[]) => { - mixed: true; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/commaOperatorInConditionalExpression.types b/testdata/baselines/reference/submodule/compiler/commaOperatorInConditionalExpression.types index fcfb02033e..07fb51585c 100644 --- a/testdata/baselines/reference/submodule/compiler/commaOperatorInConditionalExpression.types +++ b/testdata/baselines/reference/submodule/compiler/commaOperatorInConditionalExpression.types @@ -6,24 +6,24 @@ function f (m: string) { >m : string [1, 2, 3].map(i => { ->[1, 2, 3].map(i => { return true? { [m]: i } : { [m]: i + 1 } }) : { [x: string]: number; }[] +>[1, 2, 3].map(i => { return true? { [m]: i } : { [m]: i + 1 } }) : { [m]: number; }[] >[1, 2, 3].map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] >[1, 2, 3] : number[] >1 : 1 >2 : 2 >3 : 3 >map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] ->i => { return true? { [m]: i } : { [m]: i + 1 } } : (i: number) => { [x: string]: number; } +>i => { return true? { [m]: i } : { [m]: i + 1 } } : (i: number) => { [m]: number; } >i : number return true? { [m]: i } : { [m]: i + 1 } ->true? { [m]: i } : { [m]: i + 1 } : { [x: string]: number; } +>true? { [m]: i } : { [m]: i + 1 } : { [m]: number; } >true : true ->{ [m]: i } : { [x: string]: number; } +>{ [m]: i } : { [m]: number; } >[m] : number >m : string >i : number ->{ [m]: i + 1 } : { [x: string]: number; } +>{ [m]: i + 1 } : { [m]: number; } >[m] : number >m : string >i + 1 : number diff --git a/testdata/baselines/reference/submodule/compiler/commaOperatorInConditionalExpression.types.diff b/testdata/baselines/reference/submodule/compiler/commaOperatorInConditionalExpression.types.diff deleted file mode 100644 index 2fa0561704..0000000000 --- a/testdata/baselines/reference/submodule/compiler/commaOperatorInConditionalExpression.types.diff +++ /dev/null @@ -1,32 +0,0 @@ ---- old.commaOperatorInConditionalExpression.types -+++ new.commaOperatorInConditionalExpression.types -@@= skipped -5, +5 lines =@@ - >m : string - - [1, 2, 3].map(i => { -->[1, 2, 3].map(i => { return true? { [m]: i } : { [m]: i + 1 } }) : { [m]: number; }[] -+>[1, 2, 3].map(i => { return true? { [m]: i } : { [m]: i + 1 } }) : { [x: string]: number; }[] - >[1, 2, 3].map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] - >[1, 2, 3] : number[] - >1 : 1 - >2 : 2 - >3 : 3 - >map : (callbackfn: (value: number, index: number, array: number[]) => U, thisArg?: any) => U[] -->i => { return true? { [m]: i } : { [m]: i + 1 } } : (i: number) => { [m]: number; } -+>i => { return true? { [m]: i } : { [m]: i + 1 } } : (i: number) => { [x: string]: number; } - >i : number - - return true? { [m]: i } : { [m]: i + 1 } -->true? { [m]: i } : { [m]: i + 1 } : { [m]: number; } -+>true? { [m]: i } : { [m]: i + 1 } : { [x: string]: number; } - >true : true -->{ [m]: i } : { [m]: number; } -+>{ [m]: i } : { [x: string]: number; } - >[m] : number - >m : string - >i : number -->{ [m]: i + 1 } : { [m]: number; } -+>{ [m]: i + 1 } : { [x: string]: number; } - >[m] : number - >m : string - >i + 1 : number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/computedPropertiesInDestructuring1.types b/testdata/baselines/reference/submodule/compiler/computedPropertiesInDestructuring1.types index 96cad0f5eb..c132d4488b 100644 --- a/testdata/baselines/reference/submodule/compiler/computedPropertiesInDestructuring1.types +++ b/testdata/baselines/reference/submodule/compiler/computedPropertiesInDestructuring1.types @@ -107,7 +107,7 @@ let [{[foo.toExponential()]: bar7}] = [{bar: "bar"}]; ({[foo]: bar} = {bar: "bar"}); >({[foo]: bar} = {bar: "bar"}) : { bar: string; } >{[foo]: bar} = {bar: "bar"} : { bar: string; } ->{[foo]: bar} : { [x: string]: any; } +>{[foo]: bar} : { [foo]: any; } >[foo] : any >foo : string >bar : any @@ -140,8 +140,8 @@ let [{[foo.toExponential()]: bar7}] = [{bar: "bar"}]; [{[foo]: bar4}] = [{bar: "bar"}]; >[{[foo]: bar4}] = [{bar: "bar"}] : [{ bar: string; }] ->[{[foo]: bar4}] : [{ [x: string]: any; }] ->{[foo]: bar4} : { [x: string]: any; } +>[{[foo]: bar4}] : [{ [foo]: any; }] +>{[foo]: bar4} : { [foo]: any; } >[foo] : any >foo : string >bar4 : any diff --git a/testdata/baselines/reference/submodule/compiler/computedPropertiesInDestructuring1.types.diff b/testdata/baselines/reference/submodule/compiler/computedPropertiesInDestructuring1.types.diff deleted file mode 100644 index a55eb239be..0000000000 --- a/testdata/baselines/reference/submodule/compiler/computedPropertiesInDestructuring1.types.diff +++ /dev/null @@ -1,22 +0,0 @@ ---- old.computedPropertiesInDestructuring1.types -+++ new.computedPropertiesInDestructuring1.types -@@= skipped -106, +106 lines =@@ - ({[foo]: bar} = {bar: "bar"}); - >({[foo]: bar} = {bar: "bar"}) : { bar: string; } - >{[foo]: bar} = {bar: "bar"} : { bar: string; } -->{[foo]: bar} : { [foo]: any; } -+>{[foo]: bar} : { [x: string]: any; } - >[foo] : any - >foo : string - >bar : any -@@= skipped -33, +33 lines =@@ - - [{[foo]: bar4}] = [{bar: "bar"}]; - >[{[foo]: bar4}] = [{bar: "bar"}] : [{ bar: string; }] -->[{[foo]: bar4}] : [{ [foo]: any; }] -->{[foo]: bar4} : { [foo]: any; } -+>[{[foo]: bar4}] : [{ [x: string]: any; }] -+>{[foo]: bar4} : { [x: string]: any; } - >[foo] : any - >foo : string - >bar4 : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/computedPropertiesInDestructuring1_ES6.types b/testdata/baselines/reference/submodule/compiler/computedPropertiesInDestructuring1_ES6.types index 2a68a23345..4ec9346452 100644 --- a/testdata/baselines/reference/submodule/compiler/computedPropertiesInDestructuring1_ES6.types +++ b/testdata/baselines/reference/submodule/compiler/computedPropertiesInDestructuring1_ES6.types @@ -114,7 +114,7 @@ let [{[foo.toExponential()]: bar7}] = [{bar: "bar"}]; ({[foo]: bar} = {bar: "bar"}); >({[foo]: bar} = {bar: "bar"}) : { bar: string; } >{[foo]: bar} = {bar: "bar"} : { bar: string; } ->{[foo]: bar} : { [x: string]: any; } +>{[foo]: bar} : { [foo]: any; } >[foo] : any >foo : string >bar : any @@ -147,8 +147,8 @@ let [{[foo.toExponential()]: bar7}] = [{bar: "bar"}]; [{[foo]: bar4}] = [{bar: "bar"}]; >[{[foo]: bar4}] = [{bar: "bar"}] : [{ bar: string; }] ->[{[foo]: bar4}] : [{ [x: string]: any; }] ->{[foo]: bar4} : { [x: string]: any; } +>[{[foo]: bar4}] : [{ [foo]: any; }] +>{[foo]: bar4} : { [foo]: any; } >[foo] : any >foo : string >bar4 : any diff --git a/testdata/baselines/reference/submodule/compiler/computedPropertiesInDestructuring1_ES6.types.diff b/testdata/baselines/reference/submodule/compiler/computedPropertiesInDestructuring1_ES6.types.diff deleted file mode 100644 index a1bf2b46f9..0000000000 --- a/testdata/baselines/reference/submodule/compiler/computedPropertiesInDestructuring1_ES6.types.diff +++ /dev/null @@ -1,22 +0,0 @@ ---- old.computedPropertiesInDestructuring1_ES6.types -+++ new.computedPropertiesInDestructuring1_ES6.types -@@= skipped -113, +113 lines =@@ - ({[foo]: bar} = {bar: "bar"}); - >({[foo]: bar} = {bar: "bar"}) : { bar: string; } - >{[foo]: bar} = {bar: "bar"} : { bar: string; } -->{[foo]: bar} : { [foo]: any; } -+>{[foo]: bar} : { [x: string]: any; } - >[foo] : any - >foo : string - >bar : any -@@= skipped -33, +33 lines =@@ - - [{[foo]: bar4}] = [{bar: "bar"}]; - >[{[foo]: bar4}] = [{bar: "bar"}] : [{ bar: string; }] -->[{[foo]: bar4}] : [{ [foo]: any; }] -->{[foo]: bar4} : { [foo]: any; } -+>[{[foo]: bar4}] : [{ [x: string]: any; }] -+>{[foo]: bar4} : { [x: string]: any; } - >[foo] : any - >foo : string - >bar4 : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.js b/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.js index 28529b6c67..f8c4e1eeb5 100644 --- a/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.js +++ b/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.js @@ -106,8 +106,9 @@ export declare let o31: { export declare let o32: { [x: number]: number; }; +declare let u: symbol; export declare let o4: { - [x: symbol]: number; + [u]: number; }; export declare let o5: { [x: symbol]: number; diff --git a/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.js.diff b/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.js.diff index 5e457eaae7..6bb1308b97 100644 --- a/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.js.diff +++ b/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.js.diff @@ -22,8 +22,9 @@ +export declare let o32: { + [x: number]: number; +}; ++declare let u: symbol; +export declare let o4: { -+ [x: symbol]: number; ++ [u]: number; +}; +export declare let o5: { + [x: symbol]: number; diff --git a/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.types b/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.types index 82efb67ffb..8e401b2e25 100644 --- a/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.types +++ b/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.types @@ -76,8 +76,8 @@ let u = Symbol(); >Symbol : SymbolConstructor export let o4 = { ->o4 : { [x: symbol]: number; } ->{ [u]: 1 // Should error, nut a unique symbol} : { [x: symbol]: number; } +>o4 : { [u]: number; } +>{ [u]: 1 // Should error, nut a unique symbol} : { [u]: number; } [u]: 1 // Should error, nut a unique symbol >[u] : number diff --git a/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.types.diff b/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.types.diff deleted file mode 100644 index d861a92adb..0000000000 --- a/testdata/baselines/reference/submodule/compiler/computedPropertiesNarrowed.types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.computedPropertiesNarrowed.types -+++ new.computedPropertiesNarrowed.types -@@= skipped -75, +75 lines =@@ - >Symbol : SymbolConstructor - - export let o4 = { -->o4 : { [u]: number; } -->{ [u]: 1 // Should error, nut a unique symbol} : { [u]: number; } -+>o4 : { [x: symbol]: number; } -+>{ [u]: 1 // Should error, nut a unique symbol} : { [x: symbol]: number; } - - [u]: 1 // Should error, nut a unique symbol - >[u] : number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedNamesInaccessible.errors.txt b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedNamesInaccessible.errors.txt deleted file mode 100644 index fe40be44b2..0000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedNamesInaccessible.errors.txt +++ /dev/null @@ -1,28 +0,0 @@ -declarationEmitComputedNamesInaccessible.ts(6,9): error TS2411: Property '[localClassFieldName]' of type '() => string' is not assignable to 'string' index type 'ParameterizedHolder | (() => { static: boolean; }) | (() => { static: string; })'. -declarationEmitComputedNamesInaccessible.ts(9,9): error TS2411: Property '[localOtherField]' of type '() => number' is not assignable to 'string' index type 'ParameterizedHolder | (() => { static: boolean; }) | (() => { static: string; })'. - - -==== declarationEmitComputedNamesInaccessible.ts (2 errors) ==== - export function f1() { - const localClassFieldName = Math.random() > 0.5 ? "g1" : "g2"; - const localOtherField = localClassFieldName === "g1" ? "g2" : "g1"; - const localStaticField = Math.random() > 0.5 ? "s1" : "s2"; - return class ParameterizedHolder { - [localClassFieldName]() { - ~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2411: Property '[localClassFieldName]' of type '() => string' is not assignable to 'string' index type 'ParameterizedHolder | (() => { static: boolean; }) | (() => { static: string; })'. - return "value"; - } - [localOtherField]() { - ~~~~~~~~~~~~~~~~~ -!!! error TS2411: Property '[localOtherField]' of type '() => number' is not assignable to 'string' index type 'ParameterizedHolder | (() => { static: boolean; }) | (() => { static: string; })'. - return 42; - } - static [localStaticField]() { - return { static: true }; - } - static [localStaticField]() { - return { static: "sometimes" }; - } - } - } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedNamesInaccessible.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitComputedNamesInaccessible.errors.txt.diff deleted file mode 100644 index 1c66f6361a..0000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitComputedNamesInaccessible.errors.txt.diff +++ /dev/null @@ -1,32 +0,0 @@ ---- old.declarationEmitComputedNamesInaccessible.errors.txt -+++ new.declarationEmitComputedNamesInaccessible.errors.txt -@@= skipped -0, +0 lines =@@ -- -+declarationEmitComputedNamesInaccessible.ts(6,9): error TS2411: Property '[localClassFieldName]' of type '() => string' is not assignable to 'string' index type 'ParameterizedHolder | (() => { static: boolean; }) | (() => { static: string; })'. -+declarationEmitComputedNamesInaccessible.ts(9,9): error TS2411: Property '[localOtherField]' of type '() => number' is not assignable to 'string' index type 'ParameterizedHolder | (() => { static: boolean; }) | (() => { static: string; })'. -+ -+ -+==== declarationEmitComputedNamesInaccessible.ts (2 errors) ==== -+ export function f1() { -+ const localClassFieldName = Math.random() > 0.5 ? "g1" : "g2"; -+ const localOtherField = localClassFieldName === "g1" ? "g2" : "g1"; -+ const localStaticField = Math.random() > 0.5 ? "s1" : "s2"; -+ return class ParameterizedHolder { -+ [localClassFieldName]() { -+ ~~~~~~~~~~~~~~~~~~~~~ -+!!! error TS2411: Property '[localClassFieldName]' of type '() => string' is not assignable to 'string' index type 'ParameterizedHolder | (() => { static: boolean; }) | (() => { static: string; })'. -+ return "value"; -+ } -+ [localOtherField]() { -+ ~~~~~~~~~~~~~~~~~ -+!!! error TS2411: Property '[localOtherField]' of type '() => number' is not assignable to 'string' index type 'ParameterizedHolder | (() => { static: boolean; }) | (() => { static: string; })'. -+ return 42; -+ } -+ static [localStaticField]() { -+ return { static: true }; -+ } -+ static [localStaticField]() { -+ return { static: "sometimes" }; -+ } -+ } -+ } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitSimpleComputedNames1.errors.txt b/testdata/baselines/reference/submodule/compiler/declarationEmitSimpleComputedNames1.errors.txt deleted file mode 100644 index b6bc07cfb9..0000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitSimpleComputedNames1.errors.txt +++ /dev/null @@ -1,40 +0,0 @@ -declarationEmitSimpleComputedNames1.ts(12,5): error TS2411: Property '[classFieldName]' of type '() => string' is not assignable to 'string' index type 'Holder | (() => { static: boolean; }) | (() => { static: string; })'. -declarationEmitSimpleComputedNames1.ts(15,5): error TS2411: Property '[otherField]' of type '() => number' is not assignable to 'string' index type 'Holder | (() => { static: boolean; }) | (() => { static: string; })'. - - -==== declarationEmitSimpleComputedNames1.ts (2 errors) ==== - export const fieldName = Math.random() > 0.5 ? "f1" : "f2"; - export const conatainer = { - [fieldName]() { - return "result"; - } - }; - - const classFieldName = Math.random() > 0.5 ? "g1" : "g2"; - const otherField = classFieldName === "g1" ? "g2" : "g1"; - const staticField = Math.random() > 0.5 ? "s1" : "s2"; - export class Holder { - [classFieldName]() { - ~~~~~~~~~~~~~~~~ -!!! error TS2411: Property '[classFieldName]' of type '() => string' is not assignable to 'string' index type 'Holder | (() => { static: boolean; }) | (() => { static: string; })'. - return "value"; - } - [otherField]() { - ~~~~~~~~~~~~ -!!! error TS2411: Property '[otherField]' of type '() => number' is not assignable to 'string' index type 'Holder | (() => { static: boolean; }) | (() => { static: string; })'. - return 42; - } - static [staticField]() { - return { static: true }; - } - static [staticField]() { - return { static: "sometimes" }; - } - } - - /** - * Could be `"prototype"`, so all static string indexers include the instance type - */ - export const staticLookup = Holder["some" + "thing"]; - export const instanceLookup = (new Holder())["some" + "thing"]; - \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitSimpleComputedNames1.errors.txt.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitSimpleComputedNames1.errors.txt.diff deleted file mode 100644 index 78253e8bf5..0000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitSimpleComputedNames1.errors.txt.diff +++ /dev/null @@ -1,44 +0,0 @@ ---- old.declarationEmitSimpleComputedNames1.errors.txt -+++ new.declarationEmitSimpleComputedNames1.errors.txt -@@= skipped -0, +0 lines =@@ -- -+declarationEmitSimpleComputedNames1.ts(12,5): error TS2411: Property '[classFieldName]' of type '() => string' is not assignable to 'string' index type 'Holder | (() => { static: boolean; }) | (() => { static: string; })'. -+declarationEmitSimpleComputedNames1.ts(15,5): error TS2411: Property '[otherField]' of type '() => number' is not assignable to 'string' index type 'Holder | (() => { static: boolean; }) | (() => { static: string; })'. -+ -+ -+==== declarationEmitSimpleComputedNames1.ts (2 errors) ==== -+ export const fieldName = Math.random() > 0.5 ? "f1" : "f2"; -+ export const conatainer = { -+ [fieldName]() { -+ return "result"; -+ } -+ }; -+ -+ const classFieldName = Math.random() > 0.5 ? "g1" : "g2"; -+ const otherField = classFieldName === "g1" ? "g2" : "g1"; -+ const staticField = Math.random() > 0.5 ? "s1" : "s2"; -+ export class Holder { -+ [classFieldName]() { -+ ~~~~~~~~~~~~~~~~ -+!!! error TS2411: Property '[classFieldName]' of type '() => string' is not assignable to 'string' index type 'Holder | (() => { static: boolean; }) | (() => { static: string; })'. -+ return "value"; -+ } -+ [otherField]() { -+ ~~~~~~~~~~~~ -+!!! error TS2411: Property '[otherField]' of type '() => number' is not assignable to 'string' index type 'Holder | (() => { static: boolean; }) | (() => { static: string; })'. -+ return 42; -+ } -+ static [staticField]() { -+ return { static: true }; -+ } -+ static [staticField]() { -+ return { static: "sometimes" }; -+ } -+ } -+ -+ /** -+ * Could be `"prototype"`, so all static string indexers include the instance type -+ */ -+ export const staticLookup = Holder["some" + "thing"]; -+ export const instanceLookup = (new Holder())["some" + "thing"]; -+ \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitSimpleComputedNames1.js b/testdata/baselines/reference/submodule/compiler/declarationEmitSimpleComputedNames1.js index 22b7159d60..317aaefcdc 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitSimpleComputedNames1.js +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitSimpleComputedNames1.js @@ -71,7 +71,7 @@ exports.instanceLookup = (new Holder())["some" + "thing"]; //// [declarationEmitSimpleComputedNames1.d.ts] export declare const fieldName: string; export declare const conatainer: { - [x: string]: () => string; + [fieldName]: () => string; }; declare const classFieldName: string; declare const otherField: string; diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitSimpleComputedNames1.js.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitSimpleComputedNames1.js.diff deleted file mode 100644 index 9caf44fdeb..0000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitSimpleComputedNames1.js.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.declarationEmitSimpleComputedNames1.js -+++ new.declarationEmitSimpleComputedNames1.js -@@= skipped -70, +70 lines =@@ - //// [declarationEmitSimpleComputedNames1.d.ts] - export declare const fieldName: string; - export declare const conatainer: { -- [fieldName]: () => string; -+ [x: string]: () => string; - }; - declare const classFieldName: string; - declare const otherField: string; \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitSimpleComputedNames1.types b/testdata/baselines/reference/submodule/compiler/declarationEmitSimpleComputedNames1.types index f97a4f25e7..26a68c0d1a 100644 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitSimpleComputedNames1.types +++ b/testdata/baselines/reference/submodule/compiler/declarationEmitSimpleComputedNames1.types @@ -14,8 +14,8 @@ export const fieldName = Math.random() > 0.5 ? "f1" : "f2"; >"f2" : "f2" export const conatainer = { ->conatainer : { [x: string]: () => string; } ->{ [fieldName]() { return "result"; }} : { [x: string]: () => string; } +>conatainer : { [fieldName]: () => string; } +>{ [fieldName]() { return "result"; }} : { [fieldName]: () => string; } [fieldName]() { >[fieldName] : () => string diff --git a/testdata/baselines/reference/submodule/compiler/declarationEmitSimpleComputedNames1.types.diff b/testdata/baselines/reference/submodule/compiler/declarationEmitSimpleComputedNames1.types.diff deleted file mode 100644 index e905ad0e65..0000000000 --- a/testdata/baselines/reference/submodule/compiler/declarationEmitSimpleComputedNames1.types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.declarationEmitSimpleComputedNames1.types -+++ new.declarationEmitSimpleComputedNames1.types -@@= skipped -13, +13 lines =@@ - >"f2" : "f2" - - export const conatainer = { -->conatainer : { [fieldName]: () => string; } -->{ [fieldName]() { return "result"; }} : { [fieldName]: () => string; } -+>conatainer : { [x: string]: () => string; } -+>{ [fieldName]() { return "result"; }} : { [x: string]: () => string; } - - [fieldName]() { - >[fieldName] : () => string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/duplicateObjectLiteralProperty_computedNameNegative1.types b/testdata/baselines/reference/submodule/compiler/duplicateObjectLiteralProperty_computedNameNegative1.types index b0af82125f..508ebbc8e3 100644 --- a/testdata/baselines/reference/submodule/compiler/duplicateObjectLiteralProperty_computedNameNegative1.types +++ b/testdata/baselines/reference/submodule/compiler/duplicateObjectLiteralProperty_computedNameNegative1.types @@ -33,7 +33,7 @@ function bar(props: { x?: string; y?: string }) { } function foo({ x = "", y = "" }: { x?: string; y?: string }) { ->foo : ({ x, y }: { x?: string | undefined; y?: string | undefined; }) => { [x: string]: number; } +>foo : ({ x, y }: { x?: string | undefined; y?: string | undefined; }) => { [x]: number; [y]: number; } >x : string >"" : "" >y : string @@ -42,7 +42,7 @@ function foo({ x = "", y = "" }: { x?: string; y?: string }) { >y : string | undefined return { ->{ [x]: 1, [y]: 2, } : { [x: string]: number; } +>{ [x]: 1, [y]: 2, } : { [x]: number; [y]: number; } [x]: 1, >[x] : number diff --git a/testdata/baselines/reference/submodule/compiler/duplicateObjectLiteralProperty_computedNameNegative1.types.diff b/testdata/baselines/reference/submodule/compiler/duplicateObjectLiteralProperty_computedNameNegative1.types.diff index 99150dfb97..4cc961b0ef 100644 --- a/testdata/baselines/reference/submodule/compiler/duplicateObjectLiteralProperty_computedNameNegative1.types.diff +++ b/testdata/baselines/reference/submodule/compiler/duplicateObjectLiteralProperty_computedNameNegative1.types.diff @@ -25,16 +25,7 @@ function foo({ x = "", y = "" }: { x?: string; y?: string }) { ->foo : ({ x, y }: { x?: string; y?: string; }) => { [x]: number; [y]: number; } -+>foo : ({ x, y }: { x?: string | undefined; y?: string | undefined; }) => { [x: string]: number; } ++>foo : ({ x, y }: { x?: string | undefined; y?: string | undefined; }) => { [x]: number; [y]: number; } >x : string >"" : "" - >y : string -@@= skipped -9, +9 lines =@@ - >y : string | undefined - - return { -->{ [x]: 1, [y]: 2, } : { [x]: number; [y]: number; } -+>{ [x]: 1, [y]: 2, } : { [x: string]: number; } - - [x]: 1, - >[x] : number \ No newline at end of file + >y : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/es5-asyncFunctionObjectLiterals.types b/testdata/baselines/reference/submodule/compiler/es5-asyncFunctionObjectLiterals.types index e96eac5555..71b79a5874 100644 --- a/testdata/baselines/reference/submodule/compiler/es5-asyncFunctionObjectLiterals.types +++ b/testdata/baselines/reference/submodule/compiler/es5-asyncFunctionObjectLiterals.types @@ -74,9 +74,9 @@ async function objectLiteral3() { >objectLiteral3 : () => Promise x = { ->x = { [a]: await y, b: z } : { [x: number]: any; b: any; } +>x = { [a]: await y, b: z } : { [a]: any; b: any; } >x : any ->{ [a]: await y, b: z } : { [x: number]: any; b: any; } +>{ [a]: await y, b: z } : { [a]: any; b: any; } [a]: await y, >[a] : any @@ -95,9 +95,9 @@ async function objectLiteral4() { >objectLiteral4 : () => Promise x = { ->x = { a: await y, [b]: z } : { [x: number]: any; a: any; } +>x = { a: await y, [b]: z } : { [b]: any; a: any; } >x : any ->{ a: await y, [b]: z } : { [x: number]: any; a: any; } +>{ a: await y, [b]: z } : { [b]: any; a: any; } a: await y, >a : any @@ -137,9 +137,9 @@ async function objectLiteral6() { >objectLiteral6 : () => Promise x = { ->x = { a: y, [b]: await z } : { [x: number]: any; a: any; } +>x = { a: y, [b]: await z } : { [b]: any; a: any; } >x : any ->{ a: y, [b]: await z } : { [x: number]: any; a: any; } +>{ a: y, [b]: await z } : { [b]: any; a: any; } a: y, >a : any diff --git a/testdata/baselines/reference/submodule/compiler/es5-asyncFunctionObjectLiterals.types.diff b/testdata/baselines/reference/submodule/compiler/es5-asyncFunctionObjectLiterals.types.diff deleted file mode 100644 index 3af771848a..0000000000 --- a/testdata/baselines/reference/submodule/compiler/es5-asyncFunctionObjectLiterals.types.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- old.es5-asyncFunctionObjectLiterals.types -+++ new.es5-asyncFunctionObjectLiterals.types -@@= skipped -73, +73 lines =@@ - >objectLiteral3 : () => Promise - - x = { -->x = { [a]: await y, b: z } : { [a]: any; b: any; } -+>x = { [a]: await y, b: z } : { [x: number]: any; b: any; } - >x : any -->{ [a]: await y, b: z } : { [a]: any; b: any; } -+>{ [a]: await y, b: z } : { [x: number]: any; b: any; } - - [a]: await y, - >[a] : any -@@= skipped -21, +21 lines =@@ - >objectLiteral4 : () => Promise - - x = { -->x = { a: await y, [b]: z } : { [b]: any; a: any; } -+>x = { a: await y, [b]: z } : { [x: number]: any; a: any; } - >x : any -->{ a: await y, [b]: z } : { [b]: any; a: any; } -+>{ a: await y, [b]: z } : { [x: number]: any; a: any; } - - a: await y, - >a : any -@@= skipped -42, +42 lines =@@ - >objectLiteral6 : () => Promise - - x = { -->x = { a: y, [b]: await z } : { [b]: any; a: any; } -+>x = { a: y, [b]: await z } : { [x: number]: any; a: any; } - >x : any -->{ a: y, [b]: await z } : { [b]: any; a: any; } -+>{ a: y, [b]: await z } : { [x: number]: any; a: any; } - - a: y, - >a : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/transformParenthesizesConditionalSubexpression.types b/testdata/baselines/reference/submodule/compiler/transformParenthesizesConditionalSubexpression.types index 6fb0ce2169..b34b731159 100644 --- a/testdata/baselines/reference/submodule/compiler/transformParenthesizesConditionalSubexpression.types +++ b/testdata/baselines/reference/submodule/compiler/transformParenthesizesConditionalSubexpression.types @@ -6,13 +6,13 @@ var K = 'k' >'k' : "k" var a = { p : (true ? { [K] : 'v'} : null) } ->a : { p: { [x: string]: string; }; } ->{ p : (true ? { [K] : 'v'} : null) } : { p: { [x: string]: string; }; } ->p : { [x: string]: string; } ->(true ? { [K] : 'v'} : null) : { [x: string]: string; } ->true ? { [K] : 'v'} : null : { [x: string]: string; } +>a : { p: { [K]: string; }; } +>{ p : (true ? { [K] : 'v'} : null) } : { p: { [K]: string; }; } +>p : { [K]: string; } +>(true ? { [K] : 'v'} : null) : { [K]: string; } +>true ? { [K] : 'v'} : null : { [K]: string; } >true : true ->{ [K] : 'v'} : { [x: string]: string; } +>{ [K] : 'v'} : { [K]: string; } >[K] : string >K : string >'v' : "v" @@ -25,7 +25,7 @@ var b = { p : (true ? { [K] : 'v'} as any : null) } >true ? { [K] : 'v'} as any : null : any >true : true >{ [K] : 'v'} as any : any ->{ [K] : 'v'} : { [x: string]: string; } +>{ [K] : 'v'} : { [K]: string; } >[K] : string >K : string >'v' : "v" diff --git a/testdata/baselines/reference/submodule/compiler/transformParenthesizesConditionalSubexpression.types.diff b/testdata/baselines/reference/submodule/compiler/transformParenthesizesConditionalSubexpression.types.diff deleted file mode 100644 index 96ee6df5bd..0000000000 --- a/testdata/baselines/reference/submodule/compiler/transformParenthesizesConditionalSubexpression.types.diff +++ /dev/null @@ -1,31 +0,0 @@ ---- old.transformParenthesizesConditionalSubexpression.types -+++ new.transformParenthesizesConditionalSubexpression.types -@@= skipped -5, +5 lines =@@ - >'k' : "k" - - var a = { p : (true ? { [K] : 'v'} : null) } -->a : { p: { [K]: string; }; } -->{ p : (true ? { [K] : 'v'} : null) } : { p: { [K]: string; }; } -->p : { [K]: string; } -->(true ? { [K] : 'v'} : null) : { [K]: string; } -->true ? { [K] : 'v'} : null : { [K]: string; } -+>a : { p: { [x: string]: string; }; } -+>{ p : (true ? { [K] : 'v'} : null) } : { p: { [x: string]: string; }; } -+>p : { [x: string]: string; } -+>(true ? { [K] : 'v'} : null) : { [x: string]: string; } -+>true ? { [K] : 'v'} : null : { [x: string]: string; } - >true : true -->{ [K] : 'v'} : { [K]: string; } -+>{ [K] : 'v'} : { [x: string]: string; } - >[K] : string - >K : string - >'v' : "v" -@@= skipped -19, +19 lines =@@ - >true ? { [K] : 'v'} as any : null : any - >true : true - >{ [K] : 'v'} as any : any -->{ [K] : 'v'} : { [K]: string; } -+>{ [K] : 'v'} : { [x: string]: string; } - >[K] : string - >K : string - >'v' : "v" \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/compiler/useBeforeDeclaration_propertyAssignment.types b/testdata/baselines/reference/submodule/compiler/useBeforeDeclaration_propertyAssignment.types index 5d294bd268..dad35019fd 100644 --- a/testdata/baselines/reference/submodule/compiler/useBeforeDeclaration_propertyAssignment.types +++ b/testdata/baselines/reference/submodule/compiler/useBeforeDeclaration_propertyAssignment.types @@ -68,7 +68,7 @@ class D { >1 : 1 ...{get [D.D]() {return 0;}} // should be an error ->{get [D.D]() {return 0;}} : { [x: string]: number; } +>{get [D.D]() {return 0;}} : { [D.D]: number; } >[D.D] : number >D.D : string >D : typeof D diff --git a/testdata/baselines/reference/submodule/compiler/useBeforeDeclaration_propertyAssignment.types.diff b/testdata/baselines/reference/submodule/compiler/useBeforeDeclaration_propertyAssignment.types.diff deleted file mode 100644 index 76622b2caf..0000000000 --- a/testdata/baselines/reference/submodule/compiler/useBeforeDeclaration_propertyAssignment.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.useBeforeDeclaration_propertyAssignment.types -+++ new.useBeforeDeclaration_propertyAssignment.types -@@= skipped -67, +67 lines =@@ - >1 : 1 - - ...{get [D.D]() {return 0;}} // should be an error -->{get [D.D]() {return 0;}} : { [D.D]: number; } -+>{get [D.D]() {return 0;}} : { [x: string]: number; } - >[D.D] : number - >D.D : string - >D : typeof D \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/ES5SymbolProperty1.types b/testdata/baselines/reference/submodule/conformance/ES5SymbolProperty1.types index d4e0ae2402..a04acb5409 100644 --- a/testdata/baselines/reference/submodule/conformance/ES5SymbolProperty1.types +++ b/testdata/baselines/reference/submodule/conformance/ES5SymbolProperty1.types @@ -9,8 +9,8 @@ var Symbol: SymbolConstructor; >Symbol : SymbolConstructor var obj = { ->obj : { [x: string]: number; } ->{ [Symbol.foo]: 0} : { [x: string]: number; } +>obj : { [Symbol.foo]: number; } +>{ [Symbol.foo]: 0} : { [Symbol.foo]: number; } [Symbol.foo]: 0 >[Symbol.foo] : number @@ -22,7 +22,7 @@ var obj = { obj[Symbol.foo]; >obj[Symbol.foo] : number ->obj : { [x: string]: number; } +>obj : { [Symbol.foo]: number; } >Symbol.foo : string >Symbol : SymbolConstructor >foo : string diff --git a/testdata/baselines/reference/submodule/conformance/ES5SymbolProperty1.types.diff b/testdata/baselines/reference/submodule/conformance/ES5SymbolProperty1.types.diff deleted file mode 100644 index cfc96de404..0000000000 --- a/testdata/baselines/reference/submodule/conformance/ES5SymbolProperty1.types.diff +++ /dev/null @@ -1,22 +0,0 @@ ---- old.ES5SymbolProperty1.types -+++ new.ES5SymbolProperty1.types -@@= skipped -8, +8 lines =@@ - >Symbol : SymbolConstructor - - var obj = { -->obj : { [Symbol.foo]: number; } -->{ [Symbol.foo]: 0} : { [Symbol.foo]: number; } -+>obj : { [x: string]: number; } -+>{ [Symbol.foo]: 0} : { [x: string]: number; } - - [Symbol.foo]: 0 - >[Symbol.foo] : number -@@= skipped -13, +13 lines =@@ - - obj[Symbol.foo]; - >obj[Symbol.foo] : number -->obj : { [Symbol.foo]: number; } -+>obj : { [x: string]: number; } - >Symbol.foo : string - >Symbol : SymbolConstructor - >foo : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/computedPropertyNames48_ES5.types b/testdata/baselines/reference/submodule/conformance/computedPropertyNames48_ES5.types index a55489c7bd..a8b77e7a52 100644 --- a/testdata/baselines/reference/submodule/conformance/computedPropertyNames48_ES5.types +++ b/testdata/baselines/reference/submodule/conformance/computedPropertyNames48_ES5.types @@ -16,7 +16,7 @@ var a: any; extractIndexer({ >extractIndexer({ [a]: ""}) : string >extractIndexer : (p: { [n: number]: T; }) => T ->{ [a]: ""} : { [x: number]: string; } +>{ [a]: ""} : { [a]: string; } [a]: "" >[a] : string diff --git a/testdata/baselines/reference/submodule/conformance/computedPropertyNames48_ES5.types.diff b/testdata/baselines/reference/submodule/conformance/computedPropertyNames48_ES5.types.diff deleted file mode 100644 index 909f4ca4fd..0000000000 --- a/testdata/baselines/reference/submodule/conformance/computedPropertyNames48_ES5.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.computedPropertyNames48_ES5.types -+++ new.computedPropertyNames48_ES5.types -@@= skipped -15, +15 lines =@@ - extractIndexer({ - >extractIndexer({ [a]: ""}) : string - >extractIndexer : (p: { [n: number]: T; }) => T -->{ [a]: ""} : { [a]: string; } -+>{ [a]: ""} : { [x: number]: string; } - - [a]: "" - >[a] : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/computedPropertyNames48_ES6.types b/testdata/baselines/reference/submodule/conformance/computedPropertyNames48_ES6.types index d34121937b..791e5472c2 100644 --- a/testdata/baselines/reference/submodule/conformance/computedPropertyNames48_ES6.types +++ b/testdata/baselines/reference/submodule/conformance/computedPropertyNames48_ES6.types @@ -16,7 +16,7 @@ var a: any; extractIndexer({ >extractIndexer({ [a]: ""}) : string >extractIndexer : (p: { [n: number]: T; }) => T ->{ [a]: ""} : { [x: number]: string; } +>{ [a]: ""} : { [a]: string; } [a]: "" >[a] : string diff --git a/testdata/baselines/reference/submodule/conformance/computedPropertyNames48_ES6.types.diff b/testdata/baselines/reference/submodule/conformance/computedPropertyNames48_ES6.types.diff deleted file mode 100644 index 6dafc91ea4..0000000000 --- a/testdata/baselines/reference/submodule/conformance/computedPropertyNames48_ES6.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.computedPropertyNames48_ES6.types -+++ new.computedPropertyNames48_ES6.types -@@= skipped -15, +15 lines =@@ - extractIndexer({ - >extractIndexer({ [a]: ""}) : string - >extractIndexer : (p: { [n: number]: T; }) => T -->{ [a]: ""} : { [a]: string; } -+>{ [a]: ""} : { [x: number]: string; } - - [a]: "" - >[a] : string \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/computedPropertyNames6_ES5.types b/testdata/baselines/reference/submodule/conformance/computedPropertyNames6_ES5.types index 86b64aca03..c6065bf2d2 100644 --- a/testdata/baselines/reference/submodule/conformance/computedPropertyNames6_ES5.types +++ b/testdata/baselines/reference/submodule/conformance/computedPropertyNames6_ES5.types @@ -11,8 +11,8 @@ var p3: string | boolean; >p3 : string | boolean var v = { ->v : { [x: string]: number; } ->{ [p1]: 0, [p2]: 1, [p3]: 2} : { [x: string]: number; } +>v : { [p1]: number; [p2]: number; [p3]: number; } +>{ [p1]: 0, [p2]: 1, [p3]: 2} : { [p1]: number; [p2]: number; [p3]: number; } [p1]: 0, >[p1] : number diff --git a/testdata/baselines/reference/submodule/conformance/computedPropertyNames6_ES5.types.diff b/testdata/baselines/reference/submodule/conformance/computedPropertyNames6_ES5.types.diff deleted file mode 100644 index 3c5cfc1ad4..0000000000 --- a/testdata/baselines/reference/submodule/conformance/computedPropertyNames6_ES5.types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.computedPropertyNames6_ES5.types -+++ new.computedPropertyNames6_ES5.types -@@= skipped -10, +10 lines =@@ - >p3 : string | boolean - - var v = { -->v : { [p1]: number; [p2]: number; [p3]: number; } -->{ [p1]: 0, [p2]: 1, [p3]: 2} : { [p1]: number; [p2]: number; [p3]: number; } -+>v : { [x: string]: number; } -+>{ [p1]: 0, [p2]: 1, [p3]: 2} : { [x: string]: number; } - - [p1]: 0, - >[p1] : number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/computedPropertyNames6_ES6.types b/testdata/baselines/reference/submodule/conformance/computedPropertyNames6_ES6.types index af13d97cbe..1c9c938ebc 100644 --- a/testdata/baselines/reference/submodule/conformance/computedPropertyNames6_ES6.types +++ b/testdata/baselines/reference/submodule/conformance/computedPropertyNames6_ES6.types @@ -11,8 +11,8 @@ var p3: string | boolean; >p3 : string | boolean var v = { ->v : { [x: string]: number; } ->{ [p1]: 0, [p2]: 1, [p3]: 2} : { [x: string]: number; } +>v : { [p1]: number; [p2]: number; [p3]: number; } +>{ [p1]: 0, [p2]: 1, [p3]: 2} : { [p1]: number; [p2]: number; [p3]: number; } [p1]: 0, >[p1] : number diff --git a/testdata/baselines/reference/submodule/conformance/computedPropertyNames6_ES6.types.diff b/testdata/baselines/reference/submodule/conformance/computedPropertyNames6_ES6.types.diff deleted file mode 100644 index e1655b9aa6..0000000000 --- a/testdata/baselines/reference/submodule/conformance/computedPropertyNames6_ES6.types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.computedPropertyNames6_ES6.types -+++ new.computedPropertyNames6_ES6.types -@@= skipped -10, +10 lines =@@ - >p3 : string | boolean - - var v = { -->v : { [p1]: number; [p2]: number; [p3]: number; } -->{ [p1]: 0, [p2]: 1, [p3]: 2} : { [p1]: number; [p2]: number; [p3]: number; } -+>v : { [x: string]: number; } -+>{ [p1]: 0, [p2]: 1, [p3]: 2} : { [x: string]: number; } - - [p1]: 0, - >[p1] : number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/destructuringObjectBindingPatternAndAssignment8(target=es5).types b/testdata/baselines/reference/submodule/conformance/destructuringObjectBindingPatternAndAssignment8(target=es5).types index 30fb716b53..b9253a9c91 100644 --- a/testdata/baselines/reference/submodule/conformance/destructuringObjectBindingPatternAndAssignment8(target=es5).types +++ b/testdata/baselines/reference/submodule/conformance/destructuringObjectBindingPatternAndAssignment8(target=es5).types @@ -22,12 +22,12 @@ const { [K.a]: aVal, [K.b]: bVal } = (() => { >K : { a: string; b: string; } >b : string >bVal : number ->(() => { return { [K.a]: 1, [K.b]: 1 };})() : { [x: string]: number; } ->(() => { return { [K.a]: 1, [K.b]: 1 };}) : () => { [x: string]: number; } ->() => { return { [K.a]: 1, [K.b]: 1 };} : () => { [x: string]: number; } +>(() => { return { [K.a]: 1, [K.b]: 1 };})() : { [K.a]: number; [K.b]: number; } +>(() => { return { [K.a]: 1, [K.b]: 1 };}) : () => { [K.a]: number; [K.b]: number; } +>() => { return { [K.a]: 1, [K.b]: 1 };} : () => { [K.a]: number; [K.b]: number; } return { [K.a]: 1, [K.b]: 1 }; ->{ [K.a]: 1, [K.b]: 1 } : { [x: string]: number; } +>{ [K.a]: 1, [K.b]: 1 } : { [K.a]: number; [K.b]: number; } >[K.a] : number >K.a : string >K : { a: string; b: string; } diff --git a/testdata/baselines/reference/submodule/conformance/destructuringObjectBindingPatternAndAssignment8(target=es5).types.diff b/testdata/baselines/reference/submodule/conformance/destructuringObjectBindingPatternAndAssignment8(target=es5).types.diff deleted file mode 100644 index 987c5eab66..0000000000 --- a/testdata/baselines/reference/submodule/conformance/destructuringObjectBindingPatternAndAssignment8(target=es5).types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.destructuringObjectBindingPatternAndAssignment8(target=es5).types -+++ new.destructuringObjectBindingPatternAndAssignment8(target=es5).types -@@= skipped -21, +21 lines =@@ - >K : { a: string; b: string; } - >b : string - >bVal : number -->(() => { return { [K.a]: 1, [K.b]: 1 };})() : { [K.a]: number; [K.b]: number; } -->(() => { return { [K.a]: 1, [K.b]: 1 };}) : () => { [K.a]: number; [K.b]: number; } -->() => { return { [K.a]: 1, [K.b]: 1 };} : () => { [K.a]: number; [K.b]: number; } -+>(() => { return { [K.a]: 1, [K.b]: 1 };})() : { [x: string]: number; } -+>(() => { return { [K.a]: 1, [K.b]: 1 };}) : () => { [x: string]: number; } -+>() => { return { [K.a]: 1, [K.b]: 1 };} : () => { [x: string]: number; } - - return { [K.a]: 1, [K.b]: 1 }; -->{ [K.a]: 1, [K.b]: 1 } : { [K.a]: number; [K.b]: number; } -+>{ [K.a]: 1, [K.b]: 1 } : { [x: string]: number; } - >[K.a] : number - >K.a : string - >K : { a: string; b: string; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/destructuringObjectBindingPatternAndAssignment8(target=esnext).types b/testdata/baselines/reference/submodule/conformance/destructuringObjectBindingPatternAndAssignment8(target=esnext).types index 30fb716b53..b9253a9c91 100644 --- a/testdata/baselines/reference/submodule/conformance/destructuringObjectBindingPatternAndAssignment8(target=esnext).types +++ b/testdata/baselines/reference/submodule/conformance/destructuringObjectBindingPatternAndAssignment8(target=esnext).types @@ -22,12 +22,12 @@ const { [K.a]: aVal, [K.b]: bVal } = (() => { >K : { a: string; b: string; } >b : string >bVal : number ->(() => { return { [K.a]: 1, [K.b]: 1 };})() : { [x: string]: number; } ->(() => { return { [K.a]: 1, [K.b]: 1 };}) : () => { [x: string]: number; } ->() => { return { [K.a]: 1, [K.b]: 1 };} : () => { [x: string]: number; } +>(() => { return { [K.a]: 1, [K.b]: 1 };})() : { [K.a]: number; [K.b]: number; } +>(() => { return { [K.a]: 1, [K.b]: 1 };}) : () => { [K.a]: number; [K.b]: number; } +>() => { return { [K.a]: 1, [K.b]: 1 };} : () => { [K.a]: number; [K.b]: number; } return { [K.a]: 1, [K.b]: 1 }; ->{ [K.a]: 1, [K.b]: 1 } : { [x: string]: number; } +>{ [K.a]: 1, [K.b]: 1 } : { [K.a]: number; [K.b]: number; } >[K.a] : number >K.a : string >K : { a: string; b: string; } diff --git a/testdata/baselines/reference/submodule/conformance/destructuringObjectBindingPatternAndAssignment8(target=esnext).types.diff b/testdata/baselines/reference/submodule/conformance/destructuringObjectBindingPatternAndAssignment8(target=esnext).types.diff deleted file mode 100644 index 006d6409a1..0000000000 --- a/testdata/baselines/reference/submodule/conformance/destructuringObjectBindingPatternAndAssignment8(target=esnext).types.diff +++ /dev/null @@ -1,19 +0,0 @@ ---- old.destructuringObjectBindingPatternAndAssignment8(target=esnext).types -+++ new.destructuringObjectBindingPatternAndAssignment8(target=esnext).types -@@= skipped -21, +21 lines =@@ - >K : { a: string; b: string; } - >b : string - >bVal : number -->(() => { return { [K.a]: 1, [K.b]: 1 };})() : { [K.a]: number; [K.b]: number; } -->(() => { return { [K.a]: 1, [K.b]: 1 };}) : () => { [K.a]: number; [K.b]: number; } -->() => { return { [K.a]: 1, [K.b]: 1 };} : () => { [K.a]: number; [K.b]: number; } -+>(() => { return { [K.a]: 1, [K.b]: 1 };})() : { [x: string]: number; } -+>(() => { return { [K.a]: 1, [K.b]: 1 };}) : () => { [x: string]: number; } -+>() => { return { [K.a]: 1, [K.b]: 1 };} : () => { [x: string]: number; } - - return { [K.a]: 1, [K.b]: 1 }; -->{ [K.a]: 1, [K.b]: 1 } : { [K.a]: number; [K.b]: number; } -+>{ [K.a]: 1, [K.b]: 1 } : { [x: string]: number; } - >[K.a] : number - >K.a : string - >K : { a: string; b: string; } \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/indexSignatures1.types b/testdata/baselines/reference/submodule/conformance/indexSignatures1.types index ecafe2eddc..b311660d21 100644 --- a/testdata/baselines/reference/submodule/conformance/indexSignatures1.types +++ b/testdata/baselines/reference/submodule/conformance/indexSignatures1.types @@ -998,7 +998,7 @@ type A = Record; const a: A = { [id]: 'test' } >a : A ->{ [id]: 'test' } : { [x: string]: string; } +>{ [id]: 'test' } : { [id]: string; } >[id] : string >id : `${number}-${number}-${number}-${number}` >'test' : "test" diff --git a/testdata/baselines/reference/submodule/conformance/indexSignatures1.types.diff b/testdata/baselines/reference/submodule/conformance/indexSignatures1.types.diff index 96942f0040..7902e0aba0 100644 --- a/testdata/baselines/reference/submodule/conformance/indexSignatures1.types.diff +++ b/testdata/baselines/reference/submodule/conformance/indexSignatures1.types.diff @@ -37,13 +37,4 @@ +>foo : (options: { [x: string]: (arg: TArg) => TRet; } & { [directive]?: TDir | undefined; }) => void >{ [directive]: 'str', addOne: (x: number) => x + 1, double: (x: number) => x + x,} : { [directive]: string; addOne: (x: number) => number; double: (x: number) => number; } - [directive]: 'str', -@@= skipped -78, +78 lines =@@ - - const a: A = { [id]: 'test' } - >a : A -->{ [id]: 'test' } : { [id]: string; } -+>{ [id]: 'test' } : { [x: string]: string; } - >[id] : string - >id : `${number}-${number}-${number}-${number}` - >'test' : "test" \ No newline at end of file + [directive]: 'str', \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/privateIndexer2.types b/testdata/baselines/reference/submodule/conformance/privateIndexer2.types index 1d8f21cdaa..1e19fc274a 100644 --- a/testdata/baselines/reference/submodule/conformance/privateIndexer2.types +++ b/testdata/baselines/reference/submodule/conformance/privateIndexer2.types @@ -5,7 +5,7 @@ var x = { >x : any ->{ private [x: string]: string;} : { [x: number]: any; string: any; } +>{ private [x: string]: string;} : { [x]: any; string: any; } private [x: string]: string; >[x : any diff --git a/testdata/baselines/reference/submodule/conformance/privateIndexer2.types.diff b/testdata/baselines/reference/submodule/conformance/privateIndexer2.types.diff deleted file mode 100644 index 8c6846cd76..0000000000 --- a/testdata/baselines/reference/submodule/conformance/privateIndexer2.types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.privateIndexer2.types -+++ new.privateIndexer2.types -@@= skipped -4, +4 lines =@@ - - var x = { - >x : any -->{ private [x: string]: string;} : { [x]: any; string: any; } -+>{ private [x: string]: string;} : { [x: number]: any; string: any; } - - private [x: string]: string; - >[x : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/propertiesOfGenericConstructorFunctions.types b/testdata/baselines/reference/submodule/conformance/propertiesOfGenericConstructorFunctions.types index 2f1a0d01e2..b0e9e45842 100644 --- a/testdata/baselines/reference/submodule/conformance/propertiesOfGenericConstructorFunctions.types +++ b/testdata/baselines/reference/submodule/conformance/propertiesOfGenericConstructorFunctions.types @@ -22,11 +22,11 @@ function Multimap(ik, iv) { // without type annotation this._map2 = { [ik]: iv }; ->this._map2 = { [ik]: iv } : { [x: string]: V; } +>this._map2 = { [ik]: iv } : { [ik]: V; } >this._map2 : any >this : any >_map2 : any ->{ [ik]: iv } : { [x: string]: V; } +>{ [ik]: iv } : { [ik]: V; } >[ik] : V >ik : string >iv : V diff --git a/testdata/baselines/reference/submodule/conformance/symbolProperty1.types b/testdata/baselines/reference/submodule/conformance/symbolProperty1.types index dad9c813be..dd65115dc8 100644 --- a/testdata/baselines/reference/submodule/conformance/symbolProperty1.types +++ b/testdata/baselines/reference/submodule/conformance/symbolProperty1.types @@ -5,8 +5,8 @@ var s: symbol; >s : symbol var x = { ->x : { [x: symbol]: number | (() => void); } ->{ [s]: 0, [s]() { }, get [s]() { return 0; }} : { [x: symbol]: number | (() => void); } +>x : { [s]: number; [s]: number; [s]: number; } +>{ [s]: 0, [s]() { }, get [s]() { return 0; }} : { [s]: number; [s]: number; [s]: number; } [s]: 0, >[s] : number diff --git a/testdata/baselines/reference/submodule/conformance/symbolProperty1.types.diff b/testdata/baselines/reference/submodule/conformance/symbolProperty1.types.diff index df5300a72e..8a13056b90 100644 --- a/testdata/baselines/reference/submodule/conformance/symbolProperty1.types.diff +++ b/testdata/baselines/reference/submodule/conformance/symbolProperty1.types.diff @@ -6,8 +6,8 @@ var x = { ->x : { [s]: number; [s]: () => void; [s]: number; } ->{ [s]: 0, [s]() { }, get [s]() { return 0; }} : { [s]: number; [s]: () => void; [s]: number; } -+>x : { [x: symbol]: number | (() => void); } -+>{ [s]: 0, [s]() { }, get [s]() { return 0; }} : { [x: symbol]: number | (() => void); } ++>x : { [s]: number; [s]: number; [s]: number; } ++>{ [s]: 0, [s]() { }, get [s]() { return 0; }} : { [s]: number; [s]: number; [s]: number; } [s]: 0, >[s] : number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/symbolProperty2.types b/testdata/baselines/reference/submodule/conformance/symbolProperty2.types index 1fd1255c6e..49d7c67c7b 100644 --- a/testdata/baselines/reference/submodule/conformance/symbolProperty2.types +++ b/testdata/baselines/reference/submodule/conformance/symbolProperty2.types @@ -7,8 +7,8 @@ var s = Symbol(); >Symbol : SymbolConstructor var x = { ->x : { [x: symbol]: number | (() => void); } ->{ [s]: 0, [s]() { }, get [s]() { return 0; }} : { [x: symbol]: number | (() => void); } +>x : { [s]: number; [s]: number; [s]: number; } +>{ [s]: 0, [s]() { }, get [s]() { return 0; }} : { [s]: number; [s]: number; [s]: number; } [s]: 0, >[s] : number diff --git a/testdata/baselines/reference/submodule/conformance/symbolProperty2.types.diff b/testdata/baselines/reference/submodule/conformance/symbolProperty2.types.diff index dd0415ab16..5997800476 100644 --- a/testdata/baselines/reference/submodule/conformance/symbolProperty2.types.diff +++ b/testdata/baselines/reference/submodule/conformance/symbolProperty2.types.diff @@ -6,8 +6,8 @@ var x = { ->x : { [s]: number; [s]: () => void; [s]: number; } ->{ [s]: 0, [s]() { }, get [s]() { return 0; }} : { [s]: number; [s]: () => void; [s]: number; } -+>x : { [x: symbol]: number | (() => void); } -+>{ [s]: 0, [s]() { }, get [s]() { return 0; }} : { [x: symbol]: number | (() => void); } ++>x : { [s]: number; [s]: number; [s]: number; } ++>{ [s]: 0, [s]() { }, get [s]() { return 0; }} : { [s]: number; [s]: number; [s]: number; } [s]: 0, >[s] : number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/symbolProperty52.types b/testdata/baselines/reference/submodule/conformance/symbolProperty52.types index 5e0effe81e..0eff9765a2 100644 --- a/testdata/baselines/reference/submodule/conformance/symbolProperty52.types +++ b/testdata/baselines/reference/submodule/conformance/symbolProperty52.types @@ -2,8 +2,8 @@ === symbolProperty52.ts === var obj = { ->obj : { [x: number]: number; } ->{ [Symbol.nonsense]: 0} : { [x: number]: number; } +>obj : { [Symbol.nonsense]: number; } +>{ [Symbol.nonsense]: 0} : { [Symbol.nonsense]: number; } [Symbol.nonsense]: 0 >[Symbol.nonsense] : number @@ -16,12 +16,12 @@ var obj = { obj = {}; >obj = {} : {} ->obj : { [x: number]: number; } +>obj : { [Symbol.nonsense]: number; } >{} : {} obj[Symbol.nonsense]; >obj[Symbol.nonsense] : number ->obj : { [x: number]: number; } +>obj : { [Symbol.nonsense]: number; } >Symbol.nonsense : any >Symbol : SymbolConstructor >nonsense : any diff --git a/testdata/baselines/reference/submodule/conformance/symbolProperty52.types.diff b/testdata/baselines/reference/submodule/conformance/symbolProperty52.types.diff deleted file mode 100644 index 2c002143c7..0000000000 --- a/testdata/baselines/reference/submodule/conformance/symbolProperty52.types.diff +++ /dev/null @@ -1,28 +0,0 @@ ---- old.symbolProperty52.types -+++ new.symbolProperty52.types -@@= skipped -1, +1 lines =@@ - - === symbolProperty52.ts === - var obj = { -->obj : { [Symbol.nonsense]: number; } -->{ [Symbol.nonsense]: 0} : { [Symbol.nonsense]: number; } -+>obj : { [x: number]: number; } -+>{ [Symbol.nonsense]: 0} : { [x: number]: number; } - - [Symbol.nonsense]: 0 - >[Symbol.nonsense] : number -@@= skipped -14, +14 lines =@@ - - obj = {}; - >obj = {} : {} -->obj : { [Symbol.nonsense]: number; } -+>obj : { [x: number]: number; } - >{} : {} - - obj[Symbol.nonsense]; - >obj[Symbol.nonsense] : number -->obj : { [Symbol.nonsense]: number; } -+>obj : { [x: number]: number; } - >Symbol.nonsense : any - >Symbol : SymbolConstructor - >nonsense : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/symbolProperty58.types b/testdata/baselines/reference/submodule/conformance/symbolProperty58.types index b2ab1c31c9..0ef0855f55 100644 --- a/testdata/baselines/reference/submodule/conformance/symbolProperty58.types +++ b/testdata/baselines/reference/submodule/conformance/symbolProperty58.types @@ -7,8 +7,8 @@ interface SymbolConstructor { } var obj = { ->obj : { [x: string]: number; } ->{ [Symbol.foo]: 0} : { [x: string]: number; } +>obj : { [Symbol.foo]: number; } +>{ [Symbol.foo]: 0} : { [Symbol.foo]: number; } [Symbol.foo]: 0 >[Symbol.foo] : number diff --git a/testdata/baselines/reference/submodule/conformance/symbolProperty58.types.diff b/testdata/baselines/reference/submodule/conformance/symbolProperty58.types.diff deleted file mode 100644 index 86a067a124..0000000000 --- a/testdata/baselines/reference/submodule/conformance/symbolProperty58.types.diff +++ /dev/null @@ -1,13 +0,0 @@ ---- old.symbolProperty58.types -+++ new.symbolProperty58.types -@@= skipped -6, +6 lines =@@ - } - - var obj = { -->obj : { [Symbol.foo]: number; } -->{ [Symbol.foo]: 0} : { [Symbol.foo]: number; } -+>obj : { [x: string]: number; } -+>{ [Symbol.foo]: 0} : { [x: string]: number; } - - [Symbol.foo]: 0 - >[Symbol.foo] : number \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxEmitSpreadAttribute(target=es2015).types b/testdata/baselines/reference/submodule/conformance/tsxEmitSpreadAttribute(target=es2015).types index 4c25602834..3975cd0c26 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxEmitSpreadAttribute(target=es2015).types +++ b/testdata/baselines/reference/submodule/conformance/tsxEmitSpreadAttribute(target=es2015).types @@ -156,7 +156,7 @@ export function T9(a: any, b: any, c: any, d: any) { >div : any >className : string >"T9" : "T9" ->{ [__proto__]: null } : { [x: string]: null; } +>{ [__proto__]: null } : { [__proto__]: null; } >[__proto__] : null >__proto__ : string >div : any diff --git a/testdata/baselines/reference/submodule/conformance/tsxEmitSpreadAttribute(target=es2015).types.diff b/testdata/baselines/reference/submodule/conformance/tsxEmitSpreadAttribute(target=es2015).types.diff index 6bf1a684ec..ab72dc7381 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxEmitSpreadAttribute(target=es2015).types.diff +++ b/testdata/baselines/reference/submodule/conformance/tsxEmitSpreadAttribute(target=es2015).types.diff @@ -81,11 +81,6 @@ >div : any >className : string >"T9" : "T9" -->{ [__proto__]: null } : { [__proto__]: null; } -+>{ [__proto__]: null } : { [x: string]: null; } - >[__proto__] : null - >__proto__ : string - >div : any @@= skipped -18, +18 lines =@@ >d : any diff --git a/testdata/baselines/reference/submodule/conformance/tsxEmitSpreadAttribute(target=es2018).types b/testdata/baselines/reference/submodule/conformance/tsxEmitSpreadAttribute(target=es2018).types index 4c25602834..3975cd0c26 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxEmitSpreadAttribute(target=es2018).types +++ b/testdata/baselines/reference/submodule/conformance/tsxEmitSpreadAttribute(target=es2018).types @@ -156,7 +156,7 @@ export function T9(a: any, b: any, c: any, d: any) { >div : any >className : string >"T9" : "T9" ->{ [__proto__]: null } : { [x: string]: null; } +>{ [__proto__]: null } : { [__proto__]: null; } >[__proto__] : null >__proto__ : string >div : any diff --git a/testdata/baselines/reference/submodule/conformance/tsxEmitSpreadAttribute(target=es2018).types.diff b/testdata/baselines/reference/submodule/conformance/tsxEmitSpreadAttribute(target=es2018).types.diff index 2440a410c5..049b48728b 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxEmitSpreadAttribute(target=es2018).types.diff +++ b/testdata/baselines/reference/submodule/conformance/tsxEmitSpreadAttribute(target=es2018).types.diff @@ -81,11 +81,6 @@ >div : any >className : string >"T9" : "T9" -->{ [__proto__]: null } : { [__proto__]: null; } -+>{ [__proto__]: null } : { [x: string]: null; } - >[__proto__] : null - >__proto__ : string - >div : any @@= skipped -18, +18 lines =@@ >d : any diff --git a/testdata/baselines/reference/submodule/conformance/tsxEmitSpreadAttribute(target=esnext).types b/testdata/baselines/reference/submodule/conformance/tsxEmitSpreadAttribute(target=esnext).types index 4c25602834..3975cd0c26 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxEmitSpreadAttribute(target=esnext).types +++ b/testdata/baselines/reference/submodule/conformance/tsxEmitSpreadAttribute(target=esnext).types @@ -156,7 +156,7 @@ export function T9(a: any, b: any, c: any, d: any) { >div : any >className : string >"T9" : "T9" ->{ [__proto__]: null } : { [x: string]: null; } +>{ [__proto__]: null } : { [__proto__]: null; } >[__proto__] : null >__proto__ : string >div : any diff --git a/testdata/baselines/reference/submodule/conformance/tsxEmitSpreadAttribute(target=esnext).types.diff b/testdata/baselines/reference/submodule/conformance/tsxEmitSpreadAttribute(target=esnext).types.diff index 4b7ce2505b..7221a52bef 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxEmitSpreadAttribute(target=esnext).types.diff +++ b/testdata/baselines/reference/submodule/conformance/tsxEmitSpreadAttribute(target=esnext).types.diff @@ -81,11 +81,6 @@ >div : any >className : string >"T9" : "T9" -->{ [__proto__]: null } : { [__proto__]: null; } -+>{ [__proto__]: null } : { [x: string]: null; } - >[__proto__] : null - >__proto__ : string - >div : any @@= skipped -18, +18 lines =@@ >d : any diff --git a/testdata/baselines/reference/submodule/conformance/tsxReactEmitSpreadAttribute(target=es2015).types b/testdata/baselines/reference/submodule/conformance/tsxReactEmitSpreadAttribute(target=es2015).types index d6280d2751..5ea29d797b 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxReactEmitSpreadAttribute(target=es2015).types +++ b/testdata/baselines/reference/submodule/conformance/tsxReactEmitSpreadAttribute(target=es2015).types @@ -168,7 +168,7 @@ export function T10(a: any, b: any, c: any, d: any) { >div : any >className : string >"T10" : "T10" ->{ [__proto__]: null } : { [x: string]: null; } +>{ [__proto__]: null } : { [__proto__]: null; } >[__proto__] : null >__proto__ : string >div : any diff --git a/testdata/baselines/reference/submodule/conformance/tsxReactEmitSpreadAttribute(target=es2015).types.diff b/testdata/baselines/reference/submodule/conformance/tsxReactEmitSpreadAttribute(target=es2015).types.diff deleted file mode 100644 index c123335f40..0000000000 --- a/testdata/baselines/reference/submodule/conformance/tsxReactEmitSpreadAttribute(target=es2015).types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.tsxReactEmitSpreadAttribute(target=es2015).types -+++ new.tsxReactEmitSpreadAttribute(target=es2015).types -@@= skipped -167, +167 lines =@@ - >div : any - >className : string - >"T10" : "T10" -->{ [__proto__]: null } : { [__proto__]: null; } -+>{ [__proto__]: null } : { [x: string]: null; } - >[__proto__] : null - >__proto__ : string - >div : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxReactEmitSpreadAttribute(target=es2018).types b/testdata/baselines/reference/submodule/conformance/tsxReactEmitSpreadAttribute(target=es2018).types index d6280d2751..5ea29d797b 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxReactEmitSpreadAttribute(target=es2018).types +++ b/testdata/baselines/reference/submodule/conformance/tsxReactEmitSpreadAttribute(target=es2018).types @@ -168,7 +168,7 @@ export function T10(a: any, b: any, c: any, d: any) { >div : any >className : string >"T10" : "T10" ->{ [__proto__]: null } : { [x: string]: null; } +>{ [__proto__]: null } : { [__proto__]: null; } >[__proto__] : null >__proto__ : string >div : any diff --git a/testdata/baselines/reference/submodule/conformance/tsxReactEmitSpreadAttribute(target=es2018).types.diff b/testdata/baselines/reference/submodule/conformance/tsxReactEmitSpreadAttribute(target=es2018).types.diff deleted file mode 100644 index d84f9c54cf..0000000000 --- a/testdata/baselines/reference/submodule/conformance/tsxReactEmitSpreadAttribute(target=es2018).types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.tsxReactEmitSpreadAttribute(target=es2018).types -+++ new.tsxReactEmitSpreadAttribute(target=es2018).types -@@= skipped -167, +167 lines =@@ - >div : any - >className : string - >"T10" : "T10" -->{ [__proto__]: null } : { [__proto__]: null; } -+>{ [__proto__]: null } : { [x: string]: null; } - >[__proto__] : null - >__proto__ : string - >div : any \ No newline at end of file diff --git a/testdata/baselines/reference/submodule/conformance/tsxReactEmitSpreadAttribute(target=esnext).types b/testdata/baselines/reference/submodule/conformance/tsxReactEmitSpreadAttribute(target=esnext).types index d6280d2751..5ea29d797b 100644 --- a/testdata/baselines/reference/submodule/conformance/tsxReactEmitSpreadAttribute(target=esnext).types +++ b/testdata/baselines/reference/submodule/conformance/tsxReactEmitSpreadAttribute(target=esnext).types @@ -168,7 +168,7 @@ export function T10(a: any, b: any, c: any, d: any) { >div : any >className : string >"T10" : "T10" ->{ [__proto__]: null } : { [x: string]: null; } +>{ [__proto__]: null } : { [__proto__]: null; } >[__proto__] : null >__proto__ : string >div : any diff --git a/testdata/baselines/reference/submodule/conformance/tsxReactEmitSpreadAttribute(target=esnext).types.diff b/testdata/baselines/reference/submodule/conformance/tsxReactEmitSpreadAttribute(target=esnext).types.diff deleted file mode 100644 index 55a0bbaa70..0000000000 --- a/testdata/baselines/reference/submodule/conformance/tsxReactEmitSpreadAttribute(target=esnext).types.diff +++ /dev/null @@ -1,11 +0,0 @@ ---- old.tsxReactEmitSpreadAttribute(target=esnext).types -+++ new.tsxReactEmitSpreadAttribute(target=esnext).types -@@= skipped -167, +167 lines =@@ - >div : any - >className : string - >"T10" : "T10" -->{ [__proto__]: null } : { [__proto__]: null; } -+>{ [__proto__]: null } : { [x: string]: null; } - >[__proto__] : null - >__proto__ : string - >div : any \ No newline at end of file diff --git a/testdata/baselines/reference/submoduleAccepted/compiler/checkJsObjectLiteralIndexSignatures.types.diff b/testdata/baselines/reference/submoduleAccepted/compiler/checkJsObjectLiteralIndexSignatures.types.diff deleted file mode 100644 index 5fbc51d0f9..0000000000 --- a/testdata/baselines/reference/submoduleAccepted/compiler/checkJsObjectLiteralIndexSignatures.types.diff +++ /dev/null @@ -1,38 +0,0 @@ ---- old.checkJsObjectLiteralIndexSignatures.types -+++ new.checkJsObjectLiteralIndexSignatures.types -@@= skipped -15, +15 lines =@@ - >n : number - - const numericIndex = { [n]: 1 }; -->numericIndex : { [n]: number; } -->{ [n]: 1 } : { [n]: number; } -+>numericIndex : { [x: number]: number; } -+>{ [n]: 1 } : { [x: number]: number; } - >[n] : number - >n : number - >1 : 1 -@@= skipped -10, +10 lines =@@ - >numericIndex[n].toFixed() : string - >numericIndex[n].toFixed : (fractionDigits?: number) => string - >numericIndex[n] : number -->numericIndex : { [n]: number; } -+>numericIndex : { [x: number]: number; } - >n : number - >toFixed : (fractionDigits?: number) => string - - const stringIndex = { [s]: 1 }; -->stringIndex : { [s]: number; } -->{ [s]: 1 } : { [s]: number; } -+>stringIndex : { [x: string]: number; } -+>{ [s]: 1 } : { [x: string]: number; } - >[s] : number - >s : string - >1 : 1 -@@= skipped -15, +15 lines =@@ - >stringIndex[s].toFixed() : string - >stringIndex[s].toFixed : (fractionDigits?: number) => string - >stringIndex[s] : number -->stringIndex : { [s]: number; } -+>stringIndex : { [x: string]: number; } - >s : string - >toFixed : (fractionDigits?: number) => string diff --git a/testdata/baselines/reference/submoduleAccepted/conformance/propertiesOfGenericConstructorFunctions.types.diff b/testdata/baselines/reference/submoduleAccepted/conformance/propertiesOfGenericConstructorFunctions.types.diff index d57d81823a..8a265ff722 100644 --- a/testdata/baselines/reference/submoduleAccepted/conformance/propertiesOfGenericConstructorFunctions.types.diff +++ b/testdata/baselines/reference/submoduleAccepted/conformance/propertiesOfGenericConstructorFunctions.types.diff @@ -22,17 +22,13 @@ // without type annotation this._map2 = { [ik]: iv }; -->this._map2 = { [ik]: iv } : { [ik]: V; } -+>this._map2 = { [ik]: iv } : { [x: string]: V; } + >this._map2 = { [ik]: iv } : { [ik]: V; } >this._map2 : any ->this : this +>this : any >_map2 : any -->{ [ik]: iv } : { [ik]: V; } -+>{ [ik]: iv } : { [x: string]: V; } + >{ [ik]: iv } : { [ik]: V; } >[ik] : V - >ik : string - >iv : V @@= skipped -28, +28 lines =@@ /** @type {Multimap<"a" | "b", number>} with type annotation */ const map = new Multimap("a", 1);