From 31dc466378b1cf7dfa85131897cb8e02784bede2 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 28 Jan 2021 16:48:37 -0800 Subject: [PATCH 1/6] Eliminate well-known symbols in the checker: 2021 edition --- src/compiler/binder.ts | 9 +- src/compiler/checker.ts | 106 ++++----- src/compiler/transformers/utilities.ts | 3 +- src/compiler/types.ts | 8 +- src/compiler/utilities.ts | 31 +-- src/services/navigationBar.ts | 19 +- .../reference/ES5For-ofTypeCheck10.errors.txt | 4 +- .../reference/ES5SymbolProperty1.errors.txt | 16 -- .../reference/ES5SymbolProperty1.types | 8 +- .../reference/ES5SymbolProperty2.errors.txt | 5 +- .../reference/ES5SymbolProperty3.errors.txt | 13 -- .../reference/ES5SymbolProperty3.types | 2 +- .../reference/ES5SymbolProperty4.errors.txt | 13 -- .../reference/ES5SymbolProperty4.types | 2 +- .../reference/ES5SymbolProperty5.errors.txt | 13 -- .../reference/ES5SymbolProperty5.types | 4 +- .../reference/ES5SymbolProperty7.errors.txt | 13 -- .../reference/ES5SymbolProperty7.types | 2 +- .../reference/FunctionDeclaration8_es6.types | 4 +- .../reference/FunctionDeclaration9_es6.types | 4 +- .../FunctionPropertyAssignments5_es6.types | 4 +- .../argumentsObjectIterator02_ES6.types | 4 +- .../asyncArrowFunction8_es2017.types | 4 +- .../reference/asyncArrowFunction8_es5.types | 4 +- .../reference/asyncArrowFunction8_es6.types | 4 +- .../asyncFunctionDeclaration8_es2017.types | 4 +- .../asyncFunctionDeclaration8_es5.types | 4 +- .../asyncFunctionDeclaration8_es6.types | 4 +- .../asyncFunctionDeclaration9_es2017.types | 4 +- .../asyncFunctionDeclaration9_es5.types | 4 +- .../asyncFunctionDeclaration9_es6.types | 4 +- .../classUsedBeforeInitializedVariables.types | 6 +- .../complexRecursiveCollections.types | 16 +- .../computedPropertiesInDestructuring1.types | 8 +- ...mputedPropertiesInDestructuring1_ES6.types | 8 +- .../computedPropertyNames18_ES5.types | 4 +- .../computedPropertyNames18_ES6.types | 4 +- .../computedPropertyNames19_ES5.types | 4 +- .../computedPropertyNames19_ES6.types | 4 +- .../computedPropertyNames20_ES5.types | 4 +- .../computedPropertyNames20_ES6.types | 4 +- .../computedPropertyNames23_ES5.types | 2 +- .../computedPropertyNames23_ES6.types | 2 +- .../computedPropertyNames26_ES5.types | 2 +- .../computedPropertyNames26_ES6.types | 2 +- .../computedPropertyNames48_ES5.types | 2 +- .../computedPropertyNames48_ES6.types | 2 +- .../decoratorsOnComputedProperties.js | 214 +++++++++--------- .../decoratorsOnComputedProperties.types | 160 ++++++------- ...ructuredLateBoundNameHasCorrectTypes.types | 4 +- .../es5-asyncFunctionObjectLiterals.types | 20 +- .../es5-yieldFunctionObjectLiterals.types | 8 +- tests/baselines/reference/for-of15.types | 4 +- tests/baselines/reference/for-of16.types | 4 +- tests/baselines/reference/for-of17.types | 4 +- tests/baselines/reference/for-of18.types | 4 +- tests/baselines/reference/for-of19.types | 4 +- tests/baselines/reference/for-of20.types | 4 +- tests/baselines/reference/for-of21.types | 4 +- tests/baselines/reference/for-of22.types | 4 +- tests/baselines/reference/for-of23.types | 4 +- tests/baselines/reference/for-of25.types | 4 +- tests/baselines/reference/for-of26.types | 4 +- tests/baselines/reference/for-of27.js | 1 + tests/baselines/reference/for-of27.types | 4 +- tests/baselines/reference/for-of28.types | 4 +- tests/baselines/reference/for-of29.types | 4 +- tests/baselines/reference/for-of30.types | 4 +- tests/baselines/reference/for-of31.types | 4 +- tests/baselines/reference/for-of33.types | 4 +- tests/baselines/reference/for-of34.types | 4 +- tests/baselines/reference/for-of35.types | 4 +- .../reference/generatorAssignability.types | 4 +- .../baselines/reference/generatorES6_6.types | 4 +- .../reference/generatorTypeCheck28.types | 4 +- .../reference/generatorTypeCheck41.types | 4 +- .../reference/generatorTypeCheck42.types | 4 +- .../reference/generatorTypeCheck43.types | 4 +- .../reference/generatorTypeCheck44.types | 4 +- .../reference/generatorTypeCheck46.types | 4 +- .../intersectionTypeInference3.types | 4 +- .../reference/invalidNewTarget.es5.types | 4 +- .../reference/invalidNewTarget.es6.types | 4 +- .../reference/iterableArrayPattern1.types | 4 +- .../reference/iterableArrayPattern10.types | 4 +- .../reference/iterableArrayPattern11.types | 4 +- .../reference/iterableArrayPattern12.types | 4 +- .../reference/iterableArrayPattern13.types | 4 +- .../reference/iterableArrayPattern14.types | 4 +- .../reference/iterableArrayPattern15.types | 4 +- .../reference/iterableArrayPattern16.types | 8 +- .../reference/iterableArrayPattern17.types | 4 +- .../reference/iterableArrayPattern18.types | 4 +- .../reference/iterableArrayPattern19.types | 4 +- .../reference/iterableArrayPattern2.types | 4 +- .../reference/iterableArrayPattern20.types | 4 +- .../reference/iterableArrayPattern3.types | 4 +- .../reference/iterableArrayPattern4.types | 4 +- .../reference/iterableArrayPattern5.types | 4 +- .../reference/iterableArrayPattern6.types | 4 +- .../reference/iterableArrayPattern7.types | 4 +- .../reference/iterableArrayPattern8.types | 4 +- .../reference/iterableArrayPattern9.types | 4 +- .../reference/iteratorSpreadInArray.types | 4 +- .../reference/iteratorSpreadInArray10.types | 4 +- .../reference/iteratorSpreadInArray2.types | 8 +- .../reference/iteratorSpreadInArray3.types | 4 +- .../reference/iteratorSpreadInArray4.types | 4 +- .../reference/iteratorSpreadInArray5.types | 4 +- .../reference/iteratorSpreadInArray6.types | 4 +- .../reference/iteratorSpreadInArray7.types | 4 +- .../reference/iteratorSpreadInArray9.types | 4 +- .../reference/iteratorSpreadInCall.types | 4 +- .../reference/iteratorSpreadInCall10.types | 4 +- .../reference/iteratorSpreadInCall11.types | 4 +- .../reference/iteratorSpreadInCall12.types | 8 +- .../reference/iteratorSpreadInCall2.types | 4 +- .../reference/iteratorSpreadInCall3.types | 4 +- .../reference/iteratorSpreadInCall4.types | 4 +- .../reference/iteratorSpreadInCall5.types | 8 +- .../reference/iteratorSpreadInCall6.types | 8 +- .../reference/iteratorSpreadInCall7.types | 8 +- .../reference/iteratorSpreadInCall8.types | 8 +- .../reference/iteratorSpreadInCall9.types | 8 +- ...tionsTypeReassignmentFromDeclaration.types | 8 +- ...ionsTypeReassignmentFromDeclaration2.types | 8 +- ...orFromUsingES6FeaturesWithOnlyES5Lib.types | 10 +- ...eLibrary_NoErrorDuplicateLibOptions1.types | 12 +- ...eLibrary_NoErrorDuplicateLibOptions2.types | 12 +- ...dularizeLibrary_TargetES5UsingES6Lib.types | 12 +- ...dularizeLibrary_TargetES6UsingES6Lib.types | 12 +- ...5LibES6ArrayLibES6WellknownSymbolLib.types | 4 +- ....asyncGenerators.classMethods.es2018.types | 4 +- ...nerators.functionDeclarations.es2018.types | 4 +- ...enerators.functionExpressions.es2018.types | 4 +- ...nerators.objectLiteralMethods.es2018.types | 4 +- .../parserComputedPropertyName1.types | 4 +- .../parserComputedPropertyName17.types | 4 +- .../parserComputedPropertyName2.types | 4 +- .../parserComputedPropertyName3.types | 4 +- .../parserComputedPropertyName37.types | 4 +- .../parserComputedPropertyName4.types | 4 +- .../parserComputedPropertyName5.types | 4 +- .../parserComputedPropertyName6.types | 4 +- .../parserES5ComputedPropertyName2.types | 4 +- .../parserES5ComputedPropertyName3.types | 4 +- .../parserES5ComputedPropertyName4.types | 4 +- .../parserES5SymbolProperty1.errors.txt | 5 +- .../parserES5SymbolProperty2.errors.txt | 5 +- .../parserES5SymbolProperty3.errors.txt | 5 +- .../parserES5SymbolProperty4.errors.txt | 5 +- .../parserES5SymbolProperty5.errors.txt | 5 +- .../reference/parserES5SymbolProperty5.js | 1 + .../parserES5SymbolProperty6.errors.txt | 5 +- .../reference/parserES5SymbolProperty6.js | 4 +- .../parserES5SymbolProperty8.errors.txt | 5 +- .../reference/parserES5SymbolProperty8.types | 2 +- .../parserES5SymbolProperty9.errors.txt | 5 +- .../reference/parserES5SymbolProperty9.types | 2 +- .../reference/parserSymbolIndexer5.types | 4 +- .../reference/parserSymbolProperty1.types | 4 +- .../reference/parserSymbolProperty2.types | 4 +- .../reference/parserSymbolProperty3.types | 4 +- .../reference/parserSymbolProperty4.types | 4 +- .../reference/parserSymbolProperty5.js | 1 + .../reference/parserSymbolProperty5.types | 4 +- .../reference/parserSymbolProperty6.js | 4 +- .../reference/parserSymbolProperty6.types | 4 +- .../reference/parserSymbolProperty7.types | 4 +- .../reference/parserSymbolProperty8.types | 4 +- .../reference/parserSymbolProperty9.types | 4 +- .../baselines/reference/privateIndexer2.types | 2 +- .../reference/regexMatchAll-esnext.types | 4 +- tests/baselines/reference/regexMatchAll.types | 4 +- ...reOfJsonFileWithComputedPropertyName.types | 18 +- .../reference/superSymbolIndexedAccess2.types | 12 +- .../reference/symbolDeclarationEmit1.js | 1 + .../reference/symbolDeclarationEmit1.types | 4 +- .../reference/symbolDeclarationEmit10.types | 8 +- .../reference/symbolDeclarationEmit11.js | 5 +- .../reference/symbolDeclarationEmit11.types | 16 +- .../symbolDeclarationEmit12.errors.txt | 12 +- .../reference/symbolDeclarationEmit12.js | 2 +- .../reference/symbolDeclarationEmit12.types | 20 +- .../reference/symbolDeclarationEmit13.types | 8 +- .../reference/symbolDeclarationEmit14.types | 8 +- .../reference/symbolDeclarationEmit2.js | 4 +- .../reference/symbolDeclarationEmit2.types | 4 +- .../reference/symbolDeclarationEmit3.types | 12 +- .../reference/symbolDeclarationEmit4.types | 8 +- .../reference/symbolDeclarationEmit5.types | 4 +- .../reference/symbolDeclarationEmit6.types | 4 +- .../reference/symbolDeclarationEmit7.types | 4 +- .../reference/symbolDeclarationEmit8.types | 4 +- .../reference/symbolDeclarationEmit9.types | 4 +- tests/baselines/reference/symbolProperty10.js | 1 + .../reference/symbolProperty10.types | 8 +- .../reference/symbolProperty11.types | 4 +- tests/baselines/reference/symbolProperty12.js | 1 + .../reference/symbolProperty12.types | 8 +- tests/baselines/reference/symbolProperty13.js | 1 + .../reference/symbolProperty13.types | 8 +- tests/baselines/reference/symbolProperty14.js | 1 + .../reference/symbolProperty14.types | 8 +- .../reference/symbolProperty15.types | 4 +- tests/baselines/reference/symbolProperty16.js | 1 + .../reference/symbolProperty16.types | 8 +- .../reference/symbolProperty17.types | 8 +- .../reference/symbolProperty18.types | 24 +- .../reference/symbolProperty19.types | 16 +- .../reference/symbolProperty20.types | 16 +- .../reference/symbolProperty21.types | 20 +- .../reference/symbolProperty22.types | 8 +- .../reference/symbolProperty23.types | 8 +- .../reference/symbolProperty24.types | 8 +- .../reference/symbolProperty25.types | 8 +- .../reference/symbolProperty26.types | 8 +- .../reference/symbolProperty27.types | 8 +- .../reference/symbolProperty28.types | 8 +- .../reference/symbolProperty29.types | 4 +- .../reference/symbolProperty30.types | 4 +- .../reference/symbolProperty31.types | 4 +- .../reference/symbolProperty32.types | 4 +- .../reference/symbolProperty33.types | 4 +- .../reference/symbolProperty34.types | 4 +- .../reference/symbolProperty35.types | 8 +- .../reference/symbolProperty36.errors.txt | 10 - .../reference/symbolProperty36.types | 8 +- .../reference/symbolProperty37.types | 8 +- .../reference/symbolProperty38.types | 8 +- .../reference/symbolProperty39.types | 16 +- .../reference/symbolProperty40.types | 20 +- .../reference/symbolProperty41.types | 20 +- .../reference/symbolProperty42.types | 12 +- .../reference/symbolProperty43.types | 8 +- .../reference/symbolProperty44.errors.txt | 8 +- .../reference/symbolProperty44.types | 8 +- .../reference/symbolProperty45.types | 8 +- .../reference/symbolProperty46.types | 16 +- .../reference/symbolProperty47.types | 16 +- .../reference/symbolProperty48.errors.txt | 13 -- .../reference/symbolProperty49.errors.txt | 13 -- .../baselines/reference/symbolProperty5.types | 12 +- .../reference/symbolProperty50.types | 4 +- .../reference/symbolProperty51.types | 4 +- .../reference/symbolProperty52.errors.txt | 6 +- .../reference/symbolProperty52.types | 10 +- .../reference/symbolProperty53.types | 6 +- .../reference/symbolProperty54.types | 4 +- .../reference/symbolProperty55.types | 10 +- .../reference/symbolProperty56.types | 4 +- .../reference/symbolProperty57.types | 4 +- .../reference/symbolProperty58.errors.txt | 13 -- .../reference/symbolProperty58.types | 4 +- .../reference/symbolProperty59.errors.txt | 5 +- tests/baselines/reference/symbolProperty6.js | 5 +- .../baselines/reference/symbolProperty6.types | 16 +- .../reference/symbolProperty60.types | 8 +- .../baselines/reference/symbolProperty8.types | 8 +- tests/baselines/reference/symbolProperty9.js | 1 + .../baselines/reference/symbolProperty9.types | 8 +- tests/baselines/reference/symbolType2.types | 8 +- tests/baselines/reference/symbolType3.types | 12 +- .../reference/useSharedArrayBuffer4.types | 8 +- .../reference/useSharedArrayBuffer5.types | 8 +- .../reference/wellKnownSymbolExpando.types | 6 +- .../fourslash/navigationBarItemsSymbols1.ts | 16 +- 267 files changed, 1009 insertions(+), 1122 deletions(-) delete mode 100644 tests/baselines/reference/ES5SymbolProperty1.errors.txt delete mode 100644 tests/baselines/reference/ES5SymbolProperty3.errors.txt delete mode 100644 tests/baselines/reference/ES5SymbolProperty4.errors.txt delete mode 100644 tests/baselines/reference/ES5SymbolProperty5.errors.txt delete mode 100644 tests/baselines/reference/ES5SymbolProperty7.errors.txt delete mode 100644 tests/baselines/reference/symbolProperty36.errors.txt delete mode 100644 tests/baselines/reference/symbolProperty48.errors.txt delete mode 100644 tests/baselines/reference/symbolProperty49.errors.txt delete mode 100644 tests/baselines/reference/symbolProperty58.errors.txt diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index b397bbf28d5d5..1c20beaab59a6 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -344,12 +344,9 @@ namespace ts { if (isSignedNumericLiteral(nameExpression)) { return tokenToString(nameExpression.operator) + nameExpression.operand.text as __String; } - - Debug.assert(isWellKnownSymbolSyntactically(nameExpression)); - return getPropertyNameForKnownSymbolName(idText((nameExpression).name)); - } - if (isWellKnownSymbolSyntactically(name)) { - return getPropertyNameForKnownSymbolName(idText(name.name)); + else { + Debug.fail("Only computed properties with literal names have declaration names"); + } } if (isPrivateIdentifier(name)) { // containingClass exists because private names only allowed inside classes diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 6903d7ef1b48a..c59cc0aeccff3 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -898,6 +898,7 @@ namespace ts { // This allows users to just specify library files they want to used through --lib // and they will not get an error from not having unrelated library files let deferredGlobalESSymbolConstructorSymbol: Symbol | undefined; + let deferredGlobalESSymbolConstructorTypeSymbol: Symbol | undefined; let deferredGlobalESSymbolType: ObjectType; let deferredGlobalTypedPropertyDescriptorType: GenericType; let deferredGlobalPromiseType: GenericType; @@ -3677,11 +3678,25 @@ namespace ts { const additionalContainers = mapDefined(container.declarations, fileSymbolIfFileSymbolExportEqualsContainer); const reexportContainers = enclosingDeclaration && getAlternativeContainingModules(symbol, enclosingDeclaration); const objectLiteralContainer = getVariableDeclarationOfObjectLiteral(container, meaning); - if (enclosingDeclaration && getAccessibleSymbolChain(container, enclosingDeclaration, SymbolFlags.Namespace, /*externalOnly*/ false)) { + if (enclosingDeclaration && container.flags & getQualifiedLeftMeaning(meaning) && getAccessibleSymbolChain(container, enclosingDeclaration, SymbolFlags.Namespace, /*externalOnly*/ false)) { return append(concatenate(concatenate([container], additionalContainers), reexportContainers), objectLiteralContainer); // This order expresses a preference for the real container if it is in scope } + // we potentially a symbol which is a member of the instance side of something - look for a variable in scope with the container's type + // which may be acting like a namespace + const firstVariableMatch = !(container.flags & getQualifiedLeftMeaning(meaning)) + && container.flags & SymbolFlags.Type + && getDeclaredTypeOfSymbol(container).flags & TypeFlags.Object + && meaning === SymbolFlags.Value + ? forEachSymbolTableInScope(enclosingDeclaration, t => { + return forEachEntry(t, s => { + if (s.flags & getQualifiedLeftMeaning(meaning) && getTypeOfSymbol(s) === getDeclaredTypeOfSymbol(container)) { + return s; + } + }); + }) : undefined; const res = append(append(additionalContainers, container), objectLiteralContainer); - return concatenate(res, reexportContainers); + const resWithReexports = concatenate(res, reexportContainers); + return firstVariableMatch ? [firstVariableMatch, ...resWithReexports] : resWithReexports; } const candidates = mapDefined(symbol.declarations, d => { if (!isAmbientModule(d) && d.parent && hasNonGlobalAugmentationExternalModuleSymbol(d.parent)) { @@ -5104,8 +5119,9 @@ namespace ts { } } } - context.enclosingDeclaration = saveEnclosingDeclaration; + context.enclosingDeclaration = propertySymbol.valueDeclaration || propertySymbol.declarations?.[0] || saveEnclosingDeclaration; const propertyName = getPropertyNameNodeForSymbol(propertySymbol, context); + context.enclosingDeclaration = saveEnclosingDeclaration; context.approximateLength += (symbolName(propertySymbol).length + 1); const optionalToken = propertySymbol.flags & SymbolFlags.Optional ? factory.createToken(SyntaxKind.QuestionToken) : undefined; if (propertySymbol.flags & (SymbolFlags.Function | SymbolFlags.Method) && !getPropertiesOfObjectType(propertyType).length && !isReadonlySymbol(propertySymbol)) { @@ -5849,9 +5865,6 @@ namespace ts { if (fromNameType) { return fromNameType; } - if (isKnownSymbol(symbol)) { - return factory.createComputedPropertyName(factory.createPropertyAccessExpression(factory.createIdentifier("Symbol"), (symbol.escapedName as string).substr(3))); - } const rawName = unescapeLeadingUnderscores(symbol.escapedName); const stringNamed = !!length(symbol.declarations) && every(symbol.declarations, isStringNamed); return createPropertyNameNodeForIdentifierOrLiteral(rawName, stringNamed, singleQuote); @@ -8704,8 +8717,18 @@ namespace ts { return widenTypeForVariableLikeDeclaration(getTypeForVariableLikeDeclaration(declaration, /*includeOptionality*/ true), declaration, reportErrors); } + function isGlobalSymbolConstructor(node: Node) { + const symbol = getSymbolOfNode(node); + const globalSymbol = getGlobalESSymbolConstructorTypeSymbol(/*reportErrors*/ false); + return globalSymbol && symbol && symbol === globalSymbol; + } + function widenTypeForVariableLikeDeclaration(type: Type | undefined, declaration: any, reportErrors?: boolean) { if (type) { + // TODO: Remove the following SymbolConstructor special case when back compat with pre-3.0 libs isn't required + if (type.flags & TypeFlags.ESSymbol && isGlobalSymbolConstructor(declaration.parent)) { + type = getESSymbolLikeTypeForNode(declaration); + } if (reportErrors) { reportErrorsFromWidening(declaration, type); } @@ -12835,6 +12858,10 @@ namespace ts { return deferredGlobalESSymbolConstructorSymbol || (deferredGlobalESSymbolConstructorSymbol = getGlobalValueSymbol("Symbol" as __String, reportErrors)); } + function getGlobalESSymbolConstructorTypeSymbol(reportErrors: boolean) { + return deferredGlobalESSymbolConstructorTypeSymbol || (deferredGlobalESSymbolConstructorTypeSymbol = getGlobalTypeSymbol("SymbolConstructor" as __String, reportErrors)); + } + function getGlobalESSymbolType(reportErrors: boolean) { return deferredGlobalESSymbolType || (deferredGlobalESSymbolType = getGlobalType("Symbol" as __String, /*arity*/ 0, reportErrors)) || emptyObjectType; } @@ -13919,13 +13946,13 @@ namespace ts { function getLiteralTypeFromProperty(prop: Symbol, include: TypeFlags) { if (!(getDeclarationModifierFlagsFromSymbol(prop) & ModifierFlags.NonPublicAccessibilityModifier)) { let type = getSymbolLinks(getLateBoundSymbol(prop)).nameType; - if (!type && !isKnownSymbol(prop)) { + if (!type) { if (prop.escapedName === InternalSymbolName.Default) { type = getLiteralType("default"); } else { const name = prop.valueDeclaration && getNameOfDeclaration(prop.valueDeclaration) as PropertyName; - type = name && getLiteralTypeFromPropertyName(name) || getLiteralType(symbolName(prop)); + type = name && getLiteralTypeFromPropertyName(name) || (!isKnownSymbol(prop) ? getLiteralType(symbolName(prop)) : undefined); } } if (type && type.flags & include) { @@ -14153,11 +14180,8 @@ namespace ts { } function getPropertyNameFromIndex(indexType: Type, accessNode: StringLiteral | Identifier | PrivateIdentifier | ObjectBindingPattern | ArrayBindingPattern | ComputedPropertyName | NumericLiteral | IndexedAccessTypeNode | ElementAccessExpression | SyntheticExpression | undefined) { - const accessExpression = accessNode && accessNode.kind === SyntaxKind.ElementAccessExpression ? accessNode : undefined; return isTypeUsableAsPropertyName(indexType) ? getPropertyNameFromType(indexType) : - accessExpression && checkThatExpressionIsProperSymbolReference(accessExpression.argumentExpression, indexType, /*reportError*/ false) ? - getPropertyNameForKnownSymbolName(idText((accessExpression.argumentExpression).name)) : accessNode && isPropertyName(accessNode) ? // late bound names are handled in the first branch, so here we only need to handle normal names getPropertyNameForPropertyNameNode(accessNode) : @@ -25151,9 +25175,6 @@ namespace ts { !isTypeAssignableTo(links.resolvedType, stringNumberSymbolType)) { error(node, Diagnostics.A_computed_property_name_must_be_of_type_string_number_symbol_or_any); } - else { - checkThatExpressionIsProperSymbolReference(node.expression, links.resolvedType, /*reportError*/ true); - } } return links.resolvedType; @@ -25214,7 +25235,7 @@ namespace ts { // As otherwise they may not be checked until exports for the type at this position are retrieved, // which may never occur. for (const elem of node.properties) { - if (elem.name && isComputedPropertyName(elem.name) && !isWellKnownSymbolSyntactically(elem.name)) { + if (elem.name && isComputedPropertyName(elem.name)) { checkComputedPropertyName(elem.name); } } @@ -25222,7 +25243,7 @@ namespace ts { let offset = 0; for (const memberDecl of node.properties) { let member = getSymbolOfNode(memberDecl); - const computedNameType = memberDecl.name && memberDecl.name.kind === SyntaxKind.ComputedPropertyName && !isWellKnownSymbolSyntactically(memberDecl.name.expression) ? + const computedNameType = memberDecl.name && memberDecl.name.kind === SyntaxKind.ComputedPropertyName ? checkComputedPropertyName(memberDecl.name) : undefined; if (memberDecl.kind === SyntaxKind.PropertyAssignment || memberDecl.kind === SyntaxKind.ShorthandPropertyAssignment || @@ -25321,7 +25342,10 @@ namespace ts { } if (computedNameType && !(computedNameType.flags & TypeFlags.StringOrNumberLiteralOrUnique)) { - if (isTypeAssignableTo(computedNameType, stringNumberSymbolType)) { + if (isTypeAny(computedNameType)) { + hasComputedStringProperty = true; // string is the closest to a catch-all index signature we have + } + else if (isTypeAssignableTo(computedNameType, stringNumberSymbolType)) { if (isTypeAssignableTo(computedNameType, numberType)) { hasComputedNumberProperty = true; } @@ -26879,48 +26903,6 @@ namespace ts { return checkIndexedAccessIndexType(getFlowTypeOfAccessExpression(node, indexedAccessType.symbol, indexedAccessType, indexExpression), node); } - function checkThatExpressionIsProperSymbolReference(expression: Expression, expressionType: Type, reportError: boolean): boolean { - if (expressionType === errorType) { - // There is already an error, so no need to report one. - return false; - } - - if (!isWellKnownSymbolSyntactically(expression)) { - return false; - } - - // Make sure the property type is the primitive symbol type - if ((expressionType.flags & TypeFlags.ESSymbolLike) === 0) { - if (reportError) { - error(expression, Diagnostics.A_computed_property_name_of_the_form_0_must_be_of_type_symbol, getTextOfNode(expression)); - } - return false; - } - - // The name is Symbol., so make sure Symbol actually resolves to the - // global Symbol object - const leftHandSide = (expression).expression; - const leftHandSideSymbol = getResolvedSymbol(leftHandSide); - if (!leftHandSideSymbol) { - return false; - } - - const globalESSymbol = getGlobalESSymbolConstructorSymbol(/*reportErrors*/ true); - if (!globalESSymbol) { - // Already errored when we tried to look up the symbol - return false; - } - - if (leftHandSideSymbol !== globalESSymbol) { - if (reportError) { - error(leftHandSide, Diagnostics.Symbol_reference_does_not_refer_to_the_global_Symbol_constructor_object); - } - return false; - } - - return true; - } - function callLikeExpressionMayHaveTypeArguments(node: CallLikeExpression): node is CallExpression | NewExpression | TaggedTemplateExpression | JsxOpeningElement { return isCallOrNewExpression(node) || isTaggedTemplateExpression(node) || isJsxOpeningLikeElement(node); } @@ -35198,6 +35180,12 @@ namespace ts { } } + function getPropertyNameForKnownSymbolName(symbolName: string): __String { + const ctorType = getGlobalESSymbolConstructorSymbol(/*reportErrors*/ false); + const uniqueType = ctorType && getTypeOfPropertyOfType(getTypeOfSymbol(ctorType), escapeLeadingUnderscores(symbolName)); + return uniqueType && isTypeUsableAsPropertyName(uniqueType) ? getPropertyNameFromType(uniqueType) : `__@${symbolName}` as __String; + } + /** * Gets the *yield*, *return*, and *next* types of an `Iterable`-like or `AsyncIterable`-like * type from its members. diff --git a/src/compiler/transformers/utilities.ts b/src/compiler/transformers/utilities.ts index a52cf7c68cdf7..3fe5ba5f8aa70 100644 --- a/src/compiler/transformers/utilities.ts +++ b/src/compiler/transformers/utilities.ts @@ -269,8 +269,7 @@ namespace ts { * any such locations */ export function isSimpleInlineableExpression(expression: Expression) { - return !isIdentifier(expression) && isSimpleCopiableExpression(expression) || - isWellKnownSymbolSyntactically(expression); + return !isIdentifier(expression) && isSimpleCopiableExpression(expression); } export function isCompoundAssignment(kind: BinaryOperator): kind is CompoundAssignmentOperator { diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 4352e2f2171e3..03600a3912454 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -2307,12 +2307,6 @@ namespace ts { | CallChainRoot ; - /** @internal */ - export interface WellKnownSymbolExpression extends PropertyAccessExpression { - readonly expression: Identifier & { readonly escapedText: __String & "Symbol" }; - readonly name: Identifier; - } - /** @internal */ export type BindableObjectDefinePropertyCall = CallExpression & { readonly arguments: readonly [BindableStaticNameExpression, StringLiteralLike | NumericLiteral, ObjectLiteralExpression] & Readonly; @@ -2326,7 +2320,7 @@ namespace ts { /** @internal */ export type LiteralLikeElementAccessExpression = ElementAccessExpression & Declaration & { - readonly argumentExpression: StringLiteralLike | NumericLiteral | WellKnownSymbolExpression; + readonly argumentExpression: StringLiteralLike | NumericLiteral; }; /** @internal */ diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 8d9871545ffc8..30696abbbdbb8 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -2244,9 +2244,7 @@ namespace ts { /** x[0] OR x['a'] OR x[Symbol.y] */ export function isLiteralLikeElementAccess(node: Node): node is LiteralLikeElementAccessExpression { - return isElementAccessExpression(node) && ( - isStringOrNumericLiteralLike(node.argumentExpression) || - isWellKnownSymbolSyntactically(node.argumentExpression)); + return isElementAccessExpression(node) && isStringOrNumericLiteralLike(node.argumentExpression); } /** Any series of property and element accesses. */ @@ -2331,9 +2329,6 @@ namespace ts { return escapeLeadingUnderscores(name.text); } } - if (isElementAccessExpression(node) && isWellKnownSymbolSyntactically(node.argumentExpression)) { - return getPropertyNameForKnownSymbolName(idText((node.argumentExpression).name)); - } return undefined; } @@ -3142,9 +3137,6 @@ namespace ts { * 3. The computed name is *not* expressed as a NumericLiteral. * 4. The computed name is *not* expressed as a PlusToken or MinusToken * immediately followed by a NumericLiteral. - * 5. The computed name is *not* expressed as `Symbol.`, where `` - * is a property of the Symbol constructor that denotes a built-in - * Symbol. */ export function hasDynamicName(declaration: Declaration): declaration is DynamicNamedDeclaration | DynamicNamedBinaryExpression { const name = getNameOfDeclaration(declaration); @@ -3157,17 +3149,7 @@ namespace ts { } const expr = isElementAccessExpression(name) ? skipParentheses(name.argumentExpression) : name.expression; return !isStringOrNumericLiteralLike(expr) && - !isSignedNumericLiteral(expr) && - !isWellKnownSymbolSyntactically(expr); - } - - /** - * Checks if the expression is of the form: - * Symbol.name - * where Symbol is literally the word "Symbol", and name is any identifierName - */ - export function isWellKnownSymbolSyntactically(node: Node): node is WellKnownSymbolExpression { - return isPropertyAccessExpression(node) && isESSymbolIdentifier(node.expression); + !isSignedNumericLiteral(expr); } export function getPropertyNameForPropertyNameNode(name: PropertyName): __String | undefined { @@ -3180,10 +3162,7 @@ namespace ts { return escapeLeadingUnderscores(name.text); case SyntaxKind.ComputedPropertyName: const nameExpression = name.expression; - if (isWellKnownSymbolSyntactically(nameExpression)) { - return getPropertyNameForKnownSymbolName(idText((nameExpression).name)); - } - else if (isStringOrNumericLiteralLike(nameExpression)) { + if (isStringOrNumericLiteralLike(nameExpression)) { return escapeLeadingUnderscores(nameExpression.text); } else if (isSignedNumericLiteral(nameExpression)) { @@ -3221,10 +3200,6 @@ namespace ts { return `__@${getSymbolId(symbol)}@${symbol.escapedName}` as __String; } - export function getPropertyNameForKnownSymbolName(symbolName: string): __String { - return "__@" + symbolName as __String; - } - export function getSymbolNameForPrivateIdentifier(containingClassSymbol: Symbol, description: __String): __String { return `__#${getSymbolId(containingClassSymbol)}@${description}` as __String; } diff --git a/src/services/navigationBar.ts b/src/services/navigationBar.ts index 2158270142a1e..c9ee6f1e245ec 100644 --- a/src/services/navigationBar.ts +++ b/src/services/navigationBar.ts @@ -136,7 +136,7 @@ namespace ts.NavigationBar { for (let i = 0; i < depth; i++) endNode(); } function startNestedNodes(targetNode: Node, entityName: BindableStaticNameExpression) { - const names: (PropertyNameLiteral | WellKnownSymbolExpression)[] = []; + const names: PropertyNameLiteral[] = []; while (!isPropertyNameLiteral(entityName)) { const name = getNameOrArgument(entityName); const nameText = getElementOrPropertyAccessName(entityName); @@ -194,6 +194,15 @@ namespace ts.NavigationBar { } } + /** + * Historically, we've elided dynamic names from the nav tree (including late bound names), + * but included certain "well known" symbol names. While we no longer distinguish those well-known + * symbols from other unique symbols, we do the below to retain those members in the nav tree. + */ + function hasNavigationBarName(node: Declaration) { + return !hasDynamicName(node) || (node.kind !== SyntaxKind.BinaryExpression && isPropertyAccessExpression(node.name.expression) && isIdentifier(node.name.expression.expression) && idText(node.name.expression.expression) === "Symbol"); + } + /** Look for navigation bar items in node's subtree, adding them to the current `parent`. */ function addChildrenRecursively(node: Node | undefined): void { curCancellationToken.throwIfCancellationRequested(); @@ -220,18 +229,18 @@ namespace ts.NavigationBar { case SyntaxKind.GetAccessor: case SyntaxKind.SetAccessor: case SyntaxKind.MethodSignature: - if (!hasDynamicName((node))) { + if (hasNavigationBarName((node))) { addNodeWithRecursiveChild(node, (node).body); } break; case SyntaxKind.PropertyDeclaration: - if (!hasDynamicName(node)) { + if (hasNavigationBarName(node)) { addNodeWithRecursiveInitializer(node); } break; case SyntaxKind.PropertySignature: - if (!hasDynamicName(node)) { + if (hasNavigationBarName(node)) { addLeafNode(node); } break; @@ -358,7 +367,7 @@ namespace ts.NavigationBar { assignmentTarget; let depth = 0; - let className: PropertyNameLiteral | WellKnownSymbolExpression; + let className: PropertyNameLiteral; // If we see a prototype assignment, start tracking the target as a class // This is only done for simple classes not nested assignments. if (isIdentifier(prototypeAccess.expression)) { diff --git a/tests/baselines/reference/ES5For-ofTypeCheck10.errors.txt b/tests/baselines/reference/ES5For-ofTypeCheck10.errors.txt index 6622033a687db..fee8e3052104e 100644 --- a/tests/baselines/reference/ES5For-ofTypeCheck10.errors.txt +++ b/tests/baselines/reference/ES5For-ofTypeCheck10.errors.txt @@ -1,5 +1,5 @@ tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck10.ts(9,6): error TS2585: 'Symbol' only refers to a type, but is being used as a value here. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later. -tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck10.ts(14,15): error TS2569: Type 'StringIterator' is not an array type or a string type. Use compiler option '--downlevelIteration' to allow iterating of iterators. +tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck10.ts(14,15): error TS2495: Type 'StringIterator' is not an array type or a string type. ==== tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck10.ts (2 errors) ==== @@ -20,4 +20,4 @@ tests/cases/conformance/statements/for-ofStatements/ES5For-ofTypeCheck10.ts(14,1 for (var v of new StringIterator) { } ~~~~~~~~~~~~~~~~~~ -!!! error TS2569: Type 'StringIterator' is not an array type or a string type. Use compiler option '--downlevelIteration' to allow iterating of iterators. \ No newline at end of file +!!! error TS2495: Type 'StringIterator' is not an array type or a string type. \ No newline at end of file diff --git a/tests/baselines/reference/ES5SymbolProperty1.errors.txt b/tests/baselines/reference/ES5SymbolProperty1.errors.txt deleted file mode 100644 index 1b135dcc91670..0000000000000 --- a/tests/baselines/reference/ES5SymbolProperty1.errors.txt +++ /dev/null @@ -1,16 +0,0 @@ -tests/cases/conformance/Symbols/ES5SymbolProperty1.ts(7,6): error TS2471: A computed property name of the form 'Symbol.foo' must be of type 'symbol'. - - -==== tests/cases/conformance/Symbols/ES5SymbolProperty1.ts (1 errors) ==== - interface SymbolConstructor { - foo: string; - } - var Symbol: SymbolConstructor; - - var obj = { - [Symbol.foo]: 0 - ~~~~~~~~~~ -!!! error TS2471: A computed property name of the form 'Symbol.foo' must be of type 'symbol'. - } - - obj[Symbol.foo]; \ No newline at end of file diff --git a/tests/baselines/reference/ES5SymbolProperty1.types b/tests/baselines/reference/ES5SymbolProperty1.types index ebbd3fb8112ee..7b6ac592cbc9c 100644 --- a/tests/baselines/reference/ES5SymbolProperty1.types +++ b/tests/baselines/reference/ES5SymbolProperty1.types @@ -7,8 +7,8 @@ var Symbol: SymbolConstructor; >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 @@ -19,8 +19,8 @@ var obj = { } obj[Symbol.foo]; ->obj[Symbol.foo] : any ->obj : { [Symbol.foo]: number; } +>obj[Symbol.foo] : number +>obj : { [x: string]: number; } >Symbol.foo : string >Symbol : SymbolConstructor >foo : string diff --git a/tests/baselines/reference/ES5SymbolProperty2.errors.txt b/tests/baselines/reference/ES5SymbolProperty2.errors.txt index 2115ed9997913..e1eb108fcadeb 100644 --- a/tests/baselines/reference/ES5SymbolProperty2.errors.txt +++ b/tests/baselines/reference/ES5SymbolProperty2.errors.txt @@ -1,15 +1,12 @@ -tests/cases/conformance/Symbols/ES5SymbolProperty2.ts(5,10): error TS2471: A computed property name of the form 'Symbol.iterator' must be of type 'symbol'. tests/cases/conformance/Symbols/ES5SymbolProperty2.ts(10,11): error TS2585: 'Symbol' only refers to a type, but is being used as a value here. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later. -==== tests/cases/conformance/Symbols/ES5SymbolProperty2.ts (2 errors) ==== +==== tests/cases/conformance/Symbols/ES5SymbolProperty2.ts (1 errors) ==== module M { var Symbol: any; export class C { [Symbol.iterator]() { } - ~~~~~~~~~~~~~~~ -!!! error TS2471: A computed property name of the form 'Symbol.iterator' must be of type 'symbol'. } (new C)[Symbol.iterator]; } diff --git a/tests/baselines/reference/ES5SymbolProperty3.errors.txt b/tests/baselines/reference/ES5SymbolProperty3.errors.txt deleted file mode 100644 index 2953ed6ac6ab1..0000000000000 --- a/tests/baselines/reference/ES5SymbolProperty3.errors.txt +++ /dev/null @@ -1,13 +0,0 @@ -tests/cases/conformance/Symbols/ES5SymbolProperty3.ts(4,6): error TS2471: A computed property name of the form 'Symbol.iterator' must be of type 'symbol'. - - -==== tests/cases/conformance/Symbols/ES5SymbolProperty3.ts (1 errors) ==== - var Symbol: any; - - class C { - [Symbol.iterator]() { } - ~~~~~~~~~~~~~~~ -!!! error TS2471: A computed property name of the form 'Symbol.iterator' must be of type 'symbol'. - } - - (new C)[Symbol.iterator] \ No newline at end of file diff --git a/tests/baselines/reference/ES5SymbolProperty3.types b/tests/baselines/reference/ES5SymbolProperty3.types index 73800893ac59f..979f507c2037a 100644 --- a/tests/baselines/reference/ES5SymbolProperty3.types +++ b/tests/baselines/reference/ES5SymbolProperty3.types @@ -13,7 +13,7 @@ class C { } (new C)[Symbol.iterator] ->(new C)[Symbol.iterator] : any +>(new C)[Symbol.iterator] : error >(new C) : C >new C : C >C : typeof C diff --git a/tests/baselines/reference/ES5SymbolProperty4.errors.txt b/tests/baselines/reference/ES5SymbolProperty4.errors.txt deleted file mode 100644 index 18f065c6bd5fc..0000000000000 --- a/tests/baselines/reference/ES5SymbolProperty4.errors.txt +++ /dev/null @@ -1,13 +0,0 @@ -tests/cases/conformance/Symbols/ES5SymbolProperty4.ts(4,6): error TS2471: A computed property name of the form 'Symbol.iterator' must be of type 'symbol'. - - -==== tests/cases/conformance/Symbols/ES5SymbolProperty4.ts (1 errors) ==== - var Symbol: { iterator: string }; - - class C { - [Symbol.iterator]() { } - ~~~~~~~~~~~~~~~ -!!! error TS2471: A computed property name of the form 'Symbol.iterator' must be of type 'symbol'. - } - - (new C)[Symbol.iterator] \ No newline at end of file diff --git a/tests/baselines/reference/ES5SymbolProperty4.types b/tests/baselines/reference/ES5SymbolProperty4.types index 4727bb93ec326..1dc0b90062a8d 100644 --- a/tests/baselines/reference/ES5SymbolProperty4.types +++ b/tests/baselines/reference/ES5SymbolProperty4.types @@ -14,7 +14,7 @@ class C { } (new C)[Symbol.iterator] ->(new C)[Symbol.iterator] : any +>(new C)[Symbol.iterator] : error >(new C) : C >new C : C >C : typeof C diff --git a/tests/baselines/reference/ES5SymbolProperty5.errors.txt b/tests/baselines/reference/ES5SymbolProperty5.errors.txt deleted file mode 100644 index e7aca7f484989..0000000000000 --- a/tests/baselines/reference/ES5SymbolProperty5.errors.txt +++ /dev/null @@ -1,13 +0,0 @@ -tests/cases/conformance/Symbols/ES5SymbolProperty5.ts(7,26): error TS2554: Expected 0 arguments, but got 1. - - -==== tests/cases/conformance/Symbols/ES5SymbolProperty5.ts (1 errors) ==== - var Symbol: { iterator: symbol }; - - class C { - [Symbol.iterator]() { } - } - - (new C)[Symbol.iterator](0) // Should error - ~ -!!! error TS2554: Expected 0 arguments, but got 1. \ No newline at end of file diff --git a/tests/baselines/reference/ES5SymbolProperty5.types b/tests/baselines/reference/ES5SymbolProperty5.types index 1b9ce23873744..433d5165855b8 100644 --- a/tests/baselines/reference/ES5SymbolProperty5.types +++ b/tests/baselines/reference/ES5SymbolProperty5.types @@ -14,8 +14,8 @@ class C { } (new C)[Symbol.iterator](0) // Should error ->(new C)[Symbol.iterator](0) : void ->(new C)[Symbol.iterator] : () => void +>(new C)[Symbol.iterator](0) : error +>(new C)[Symbol.iterator] : error >(new C) : C >new C : C >C : typeof C diff --git a/tests/baselines/reference/ES5SymbolProperty7.errors.txt b/tests/baselines/reference/ES5SymbolProperty7.errors.txt deleted file mode 100644 index 21f6f005b3c0f..0000000000000 --- a/tests/baselines/reference/ES5SymbolProperty7.errors.txt +++ /dev/null @@ -1,13 +0,0 @@ -tests/cases/conformance/Symbols/ES5SymbolProperty7.ts(4,6): error TS2471: A computed property name of the form 'Symbol.iterator' must be of type 'symbol'. - - -==== tests/cases/conformance/Symbols/ES5SymbolProperty7.ts (1 errors) ==== - var Symbol: { iterator: any }; - - class C { - [Symbol.iterator]() { } - ~~~~~~~~~~~~~~~ -!!! error TS2471: A computed property name of the form 'Symbol.iterator' must be of type 'symbol'. - } - - (new C)[Symbol.iterator] \ No newline at end of file diff --git a/tests/baselines/reference/ES5SymbolProperty7.types b/tests/baselines/reference/ES5SymbolProperty7.types index b03c10f6a0b0f..fd1404a98ba13 100644 --- a/tests/baselines/reference/ES5SymbolProperty7.types +++ b/tests/baselines/reference/ES5SymbolProperty7.types @@ -14,7 +14,7 @@ class C { } (new C)[Symbol.iterator] ->(new C)[Symbol.iterator] : any +>(new C)[Symbol.iterator] : error >(new C) : C >new C : C >C : typeof C diff --git a/tests/baselines/reference/FunctionDeclaration8_es6.types b/tests/baselines/reference/FunctionDeclaration8_es6.types index 2588f042add9a..ebd9a509ae174 100644 --- a/tests/baselines/reference/FunctionDeclaration8_es6.types +++ b/tests/baselines/reference/FunctionDeclaration8_es6.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/functionDeclarations/FunctionDeclaration8_es6.ts === var v = { [yield]: foo } ->v : { [x: number]: any; } ->{ [yield]: foo } : { [x: number]: any; } +>v : { [x: string]: any; } +>{ [yield]: foo } : { [x: string]: any; } >[yield] : any >yield : any >foo : any diff --git a/tests/baselines/reference/FunctionDeclaration9_es6.types b/tests/baselines/reference/FunctionDeclaration9_es6.types index 0c854f623f435..2328250738e2a 100644 --- a/tests/baselines/reference/FunctionDeclaration9_es6.types +++ b/tests/baselines/reference/FunctionDeclaration9_es6.types @@ -3,8 +3,8 @@ function * foo() { >foo : () => Generator var v = { [yield]: foo } ->v : { [x: number]: () => Generator; } ->{ [yield]: foo } : { [x: number]: () => Generator; } +>v : { [x: string]: () => Generator; } +>{ [yield]: foo } : { [x: string]: () => Generator; } >[yield] : () => Generator >yield : any >foo : () => Generator diff --git a/tests/baselines/reference/FunctionPropertyAssignments5_es6.types b/tests/baselines/reference/FunctionPropertyAssignments5_es6.types index 18b2a7f33e50f..2ade6f3a755ad 100644 --- a/tests/baselines/reference/FunctionPropertyAssignments5_es6.types +++ b/tests/baselines/reference/FunctionPropertyAssignments5_es6.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/functionPropertyAssignments/FunctionPropertyAssignments5_es6.ts === var v = { *[foo()]() { } } ->v : { [x: number]: () => Generator; } ->{ *[foo()]() { } } : { [x: number]: () => Generator; } +>v : { [x: string]: () => Generator; } +>{ *[foo()]() { } } : { [x: string]: () => Generator; } >[foo()] : () => Generator >foo() : any >foo : any diff --git a/tests/baselines/reference/argumentsObjectIterator02_ES6.types b/tests/baselines/reference/argumentsObjectIterator02_ES6.types index a494a45f9356b..07aa33168f15a 100644 --- a/tests/baselines/reference/argumentsObjectIterator02_ES6.types +++ b/tests/baselines/reference/argumentsObjectIterator02_ES6.types @@ -9,9 +9,9 @@ function doubleAndReturnAsArray(x: number, y: number, z: number): [number, numbe >blah : () => IterableIterator >arguments[Symbol.iterator] : () => IterableIterator >arguments : IArguments ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol let result = []; >result : any[] diff --git a/tests/baselines/reference/asyncArrowFunction8_es2017.types b/tests/baselines/reference/asyncArrowFunction8_es2017.types index df476cab5c3db..f15880b39dfa3 100644 --- a/tests/baselines/reference/asyncArrowFunction8_es2017.types +++ b/tests/baselines/reference/asyncArrowFunction8_es2017.types @@ -4,8 +4,8 @@ var foo = async (): Promise => { >async (): Promise => { var v = { [await]: foo }} : () => Promise var v = { [await]: foo } ->v : { [x: number]: () => Promise; } ->{ [await]: foo } : { [x: number]: () => Promise; } +>v : { [x: string]: () => Promise; } +>{ [await]: foo } : { [x: string]: () => Promise; } >[await] : () => Promise >await : any > : any diff --git a/tests/baselines/reference/asyncArrowFunction8_es5.types b/tests/baselines/reference/asyncArrowFunction8_es5.types index 05095f154fc8b..418cdc06fbc2d 100644 --- a/tests/baselines/reference/asyncArrowFunction8_es5.types +++ b/tests/baselines/reference/asyncArrowFunction8_es5.types @@ -4,8 +4,8 @@ var foo = async (): Promise => { >async (): Promise => { var v = { [await]: foo }} : () => Promise var v = { [await]: foo } ->v : { [x: number]: () => Promise; } ->{ [await]: foo } : { [x: number]: () => Promise; } +>v : { [x: string]: () => Promise; } +>{ [await]: foo } : { [x: string]: () => Promise; } >[await] : () => Promise >await : any > : any diff --git a/tests/baselines/reference/asyncArrowFunction8_es6.types b/tests/baselines/reference/asyncArrowFunction8_es6.types index 89545c2fa84c3..e1c4e6145407c 100644 --- a/tests/baselines/reference/asyncArrowFunction8_es6.types +++ b/tests/baselines/reference/asyncArrowFunction8_es6.types @@ -4,8 +4,8 @@ var foo = async (): Promise => { >async (): Promise => { var v = { [await]: foo }} : () => Promise var v = { [await]: foo } ->v : { [x: number]: () => Promise; } ->{ [await]: foo } : { [x: number]: () => Promise; } +>v : { [x: string]: () => Promise; } +>{ [await]: foo } : { [x: string]: () => Promise; } >[await] : () => Promise >await : any > : any diff --git a/tests/baselines/reference/asyncFunctionDeclaration8_es2017.types b/tests/baselines/reference/asyncFunctionDeclaration8_es2017.types index 3e46e59409b83..92d7335fd54e0 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration8_es2017.types +++ b/tests/baselines/reference/asyncFunctionDeclaration8_es2017.types @@ -1,7 +1,7 @@ === tests/cases/conformance/async/es2017/functionDeclarations/asyncFunctionDeclaration8_es2017.ts === var v = { [await]: foo } ->v : { [x: number]: any; } ->{ [await]: foo } : { [x: number]: any; } +>v : { [x: string]: any; } +>{ [await]: foo } : { [x: string]: any; } >[await] : any >await : any >foo : any diff --git a/tests/baselines/reference/asyncFunctionDeclaration8_es5.types b/tests/baselines/reference/asyncFunctionDeclaration8_es5.types index f8647156d1101..65fdadc7696bd 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration8_es5.types +++ b/tests/baselines/reference/asyncFunctionDeclaration8_es5.types @@ -1,7 +1,7 @@ === tests/cases/conformance/async/es5/functionDeclarations/asyncFunctionDeclaration8_es5.ts === var v = { [await]: foo } ->v : { [x: number]: any; } ->{ [await]: foo } : { [x: number]: any; } +>v : { [x: string]: any; } +>{ [await]: foo } : { [x: string]: any; } >[await] : any >await : any >foo : any diff --git a/tests/baselines/reference/asyncFunctionDeclaration8_es6.types b/tests/baselines/reference/asyncFunctionDeclaration8_es6.types index 43a0245c7e0d0..79b594b6734ba 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration8_es6.types +++ b/tests/baselines/reference/asyncFunctionDeclaration8_es6.types @@ -1,7 +1,7 @@ === tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration8_es6.ts === var v = { [await]: foo } ->v : { [x: number]: any; } ->{ [await]: foo } : { [x: number]: any; } +>v : { [x: string]: any; } +>{ [await]: foo } : { [x: string]: any; } >[await] : any >await : any >foo : any diff --git a/tests/baselines/reference/asyncFunctionDeclaration9_es2017.types b/tests/baselines/reference/asyncFunctionDeclaration9_es2017.types index e137ff2f05fc2..ab3624fd0db6e 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration9_es2017.types +++ b/tests/baselines/reference/asyncFunctionDeclaration9_es2017.types @@ -3,8 +3,8 @@ async function foo(): Promise { >foo : () => Promise var v = { [await]: foo } ->v : { [x: number]: () => Promise; } ->{ [await]: foo } : { [x: number]: () => Promise; } +>v : { [x: string]: () => Promise; } +>{ [await]: foo } : { [x: string]: () => Promise; } >[await] : () => Promise >await : any > : any diff --git a/tests/baselines/reference/asyncFunctionDeclaration9_es5.types b/tests/baselines/reference/asyncFunctionDeclaration9_es5.types index 9db2c54c2b644..3ea8f208bda1b 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration9_es5.types +++ b/tests/baselines/reference/asyncFunctionDeclaration9_es5.types @@ -3,8 +3,8 @@ async function foo(): Promise { >foo : () => Promise var v = { [await]: foo } ->v : { [x: number]: () => Promise; } ->{ [await]: foo } : { [x: number]: () => Promise; } +>v : { [x: string]: () => Promise; } +>{ [await]: foo } : { [x: string]: () => Promise; } >[await] : () => Promise >await : any > : any diff --git a/tests/baselines/reference/asyncFunctionDeclaration9_es6.types b/tests/baselines/reference/asyncFunctionDeclaration9_es6.types index c0a9edc7326f2..861a1c5f303fa 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration9_es6.types +++ b/tests/baselines/reference/asyncFunctionDeclaration9_es6.types @@ -3,8 +3,8 @@ async function foo(): Promise { >foo : () => Promise var v = { [await]: foo } ->v : { [x: number]: () => Promise; } ->{ [await]: foo } : { [x: number]: () => Promise; } +>v : { [x: string]: () => Promise; } +>{ [await]: foo } : { [x: string]: () => Promise; } >[await] : () => Promise >await : any > : any diff --git a/tests/baselines/reference/classUsedBeforeInitializedVariables.types b/tests/baselines/reference/classUsedBeforeInitializedVariables.types index f10bf48a8efdf..9b45e66a13ba3 100644 --- a/tests/baselines/reference/classUsedBeforeInitializedVariables.types +++ b/tests/baselines/reference/classUsedBeforeInitializedVariables.types @@ -48,7 +48,7 @@ class Test { withinObjectLiteral: any = { >withinObjectLiteral : any ->{ [this.withinObjectLiteral]: true, } : { [x: number]: boolean; } +>{ [this.withinObjectLiteral]: true, } : { [x: string]: boolean; } [this.withinObjectLiteral]: true, >[this.withinObjectLiteral] : boolean @@ -61,7 +61,7 @@ class Test { withinObjectLiteralGetterName: any = { >withinObjectLiteralGetterName : any ->{ get [this.withinObjectLiteralGetterName]() { return true; } } : { [x: number]: boolean; } +>{ get [this.withinObjectLiteralGetterName]() { return true; } } : { [x: string]: boolean; } get [this.withinObjectLiteralGetterName]() { >[this.withinObjectLiteralGetterName] : boolean @@ -76,7 +76,7 @@ class Test { withinObjectLiteralSetterName: any = { >withinObjectLiteralSetterName : any ->{ set [this.withinObjectLiteralSetterName](_: any) {} } : { [x: number]: any; } +>{ set [this.withinObjectLiteralSetterName](_: any) {} } : { [x: string]: any; } set [this.withinObjectLiteralSetterName](_: any) {} >[this.withinObjectLiteralSetterName] : any diff --git a/tests/baselines/reference/complexRecursiveCollections.types b/tests/baselines/reference/complexRecursiveCollections.types index 783bc32015ae8..d6bf7cf931a27 100644 --- a/tests/baselines/reference/complexRecursiveCollections.types +++ b/tests/baselines/reference/complexRecursiveCollections.types @@ -1122,9 +1122,9 @@ declare module Immutable { [Symbol.iterator](): IterableIterator<[keyof T, T[keyof T]]>; >[Symbol.iterator] : () => IterableIterator<[keyof T, T[keyof T]]> ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol } } export function Record(defaultValues: T, name?: string): Record.Class; @@ -1585,9 +1585,9 @@ declare module Immutable { [Symbol.iterator](): IterableIterator<[K, V]>; >[Symbol.iterator] : () => IterableIterator<[K, V]> ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol } export module Indexed {} export function Indexed(collection: Iterable): Collection.Indexed; @@ -1734,9 +1734,9 @@ declare module Immutable { [Symbol.iterator](): IterableIterator; >[Symbol.iterator] : () => IterableIterator ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol } export module Set {} export function Set(collection: Iterable): Collection.Set; @@ -1798,9 +1798,9 @@ declare module Immutable { [Symbol.iterator](): IterableIterator; >[Symbol.iterator] : () => IterableIterator ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol } } export function Collection>(collection: I): I; diff --git a/tests/baselines/reference/computedPropertiesInDestructuring1.types b/tests/baselines/reference/computedPropertiesInDestructuring1.types index 008ef71220387..31164474b9203 100644 --- a/tests/baselines/reference/computedPropertiesInDestructuring1.types +++ b/tests/baselines/reference/computedPropertiesInDestructuring1.types @@ -163,8 +163,8 @@ let [{[foo.toExponential()]: bar7}] = [{bar: "bar"}]; [{[foo()]: bar4}] = [{bar: "bar"}]; >[{[foo()]: bar4}] = [{bar: "bar"}] : [{ bar: string; }] ->[{[foo()]: bar4}] : [{ [x: number]: any; }] ->{[foo()]: bar4} : { [x: number]: any; } +>[{[foo()]: bar4}] : [{ [x: string]: any; }] +>{[foo()]: bar4} : { [x: string]: any; } >[foo()] : any >foo() : any >foo : string @@ -176,8 +176,8 @@ let [{[foo.toExponential()]: bar7}] = [{bar: "bar"}]; [{[(1 + {})]: bar4}] = [{bar: "bar"}]; >[{[(1 + {})]: bar4}] = [{bar: "bar"}] : [{ bar: string; }] ->[{[(1 + {})]: bar4}] : [{ [x: number]: any; }] ->{[(1 + {})]: bar4} : { [x: number]: any; } +>[{[(1 + {})]: bar4}] : [{ [x: string]: any; }] +>{[(1 + {})]: bar4} : { [x: string]: any; } >[(1 + {})] : any >(1 + {}) : any >1 + {} : any diff --git a/tests/baselines/reference/computedPropertiesInDestructuring1_ES6.types b/tests/baselines/reference/computedPropertiesInDestructuring1_ES6.types index e91f37c3df8f5..bcd0156d4bff8 100644 --- a/tests/baselines/reference/computedPropertiesInDestructuring1_ES6.types +++ b/tests/baselines/reference/computedPropertiesInDestructuring1_ES6.types @@ -170,8 +170,8 @@ let [{[foo.toExponential()]: bar7}] = [{bar: "bar"}]; [{[foo()]: bar4}] = [{bar: "bar"}]; >[{[foo()]: bar4}] = [{bar: "bar"}] : [{ bar: string; }] ->[{[foo()]: bar4}] : [{ [x: number]: any; }] ->{[foo()]: bar4} : { [x: number]: any; } +>[{[foo()]: bar4}] : [{ [x: string]: any; }] +>{[foo()]: bar4} : { [x: string]: any; } >[foo()] : any >foo() : any >foo : string @@ -183,8 +183,8 @@ let [{[foo.toExponential()]: bar7}] = [{bar: "bar"}]; [{[(1 + {})]: bar4}] = [{bar: "bar"}]; >[{[(1 + {})]: bar4}] = [{bar: "bar"}] : [{ bar: string; }] ->[{[(1 + {})]: bar4}] : [{ [x: number]: any; }] ->{[(1 + {})]: bar4} : { [x: number]: any; } +>[{[(1 + {})]: bar4}] : [{ [x: string]: any; }] +>{[(1 + {})]: bar4} : { [x: string]: any; } >[(1 + {})] : any >(1 + {}) : any >1 + {} : any diff --git a/tests/baselines/reference/computedPropertyNames18_ES5.types b/tests/baselines/reference/computedPropertyNames18_ES5.types index 893de7a3157b1..6ab24fd81954d 100644 --- a/tests/baselines/reference/computedPropertyNames18_ES5.types +++ b/tests/baselines/reference/computedPropertyNames18_ES5.types @@ -3,8 +3,8 @@ function foo() { >foo : () => void var obj = { ->obj : { [x: number]: number; } ->{ [this.bar]: 0 } : { [x: number]: number; } +>obj : { [x: string]: number; } +>{ [this.bar]: 0 } : { [x: string]: number; } [this.bar]: 0 >[this.bar] : number diff --git a/tests/baselines/reference/computedPropertyNames18_ES6.types b/tests/baselines/reference/computedPropertyNames18_ES6.types index 37f531a7907ef..f50f2f8a3517d 100644 --- a/tests/baselines/reference/computedPropertyNames18_ES6.types +++ b/tests/baselines/reference/computedPropertyNames18_ES6.types @@ -3,8 +3,8 @@ function foo() { >foo : () => void var obj = { ->obj : { [x: number]: number; } ->{ [this.bar]: 0 } : { [x: number]: number; } +>obj : { [x: string]: number; } +>{ [this.bar]: 0 } : { [x: string]: number; } [this.bar]: 0 >[this.bar] : number diff --git a/tests/baselines/reference/computedPropertyNames19_ES5.types b/tests/baselines/reference/computedPropertyNames19_ES5.types index 81bf76e4ac3c5..2abbae2716dfa 100644 --- a/tests/baselines/reference/computedPropertyNames19_ES5.types +++ b/tests/baselines/reference/computedPropertyNames19_ES5.types @@ -3,8 +3,8 @@ module M { >M : typeof M var obj = { ->obj : { [x: number]: number; } ->{ [this.bar]: 0 } : { [x: number]: number; } +>obj : { [x: string]: number; } +>{ [this.bar]: 0 } : { [x: string]: number; } [this.bar]: 0 >[this.bar] : number diff --git a/tests/baselines/reference/computedPropertyNames19_ES6.types b/tests/baselines/reference/computedPropertyNames19_ES6.types index 5dcc6df206aea..e9b738e651186 100644 --- a/tests/baselines/reference/computedPropertyNames19_ES6.types +++ b/tests/baselines/reference/computedPropertyNames19_ES6.types @@ -3,8 +3,8 @@ module M { >M : typeof M var obj = { ->obj : { [x: number]: number; } ->{ [this.bar]: 0 } : { [x: number]: number; } +>obj : { [x: string]: number; } +>{ [this.bar]: 0 } : { [x: string]: number; } [this.bar]: 0 >[this.bar] : number diff --git a/tests/baselines/reference/computedPropertyNames20_ES5.types b/tests/baselines/reference/computedPropertyNames20_ES5.types index 7a95872481129..4e0816697fcc3 100644 --- a/tests/baselines/reference/computedPropertyNames20_ES5.types +++ b/tests/baselines/reference/computedPropertyNames20_ES5.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/computedProperties/computedPropertyNames20_ES5.ts === var obj = { ->obj : { [x: number]: number; } ->{ [this.bar]: 0} : { [x: number]: number; } +>obj : { [x: string]: number; } +>{ [this.bar]: 0} : { [x: string]: number; } [this.bar]: 0 >[this.bar] : number diff --git a/tests/baselines/reference/computedPropertyNames20_ES6.types b/tests/baselines/reference/computedPropertyNames20_ES6.types index 516559e3e3eeb..fd23997e1a8b9 100644 --- a/tests/baselines/reference/computedPropertyNames20_ES6.types +++ b/tests/baselines/reference/computedPropertyNames20_ES6.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/computedProperties/computedPropertyNames20_ES6.ts === var obj = { ->obj : { [x: number]: number; } ->{ [this.bar]: 0} : { [x: number]: number; } +>obj : { [x: string]: number; } +>{ [this.bar]: 0} : { [x: string]: number; } [this.bar]: 0 >[this.bar] : number diff --git a/tests/baselines/reference/computedPropertyNames23_ES5.types b/tests/baselines/reference/computedPropertyNames23_ES5.types index 7090bfa3ba9a0..88bfa0c8cd479 100644 --- a/tests/baselines/reference/computedPropertyNames23_ES5.types +++ b/tests/baselines/reference/computedPropertyNames23_ES5.types @@ -13,7 +13,7 @@ class C { { [this.bar()]: 1 }[0] >{ [this.bar()]: 1 }[0] : number ->{ [this.bar()]: 1 } : { [x: number]: number; } +>{ [this.bar()]: 1 } : { [x: string]: number; } >[this.bar()] : number >this.bar() : any >this.bar : any diff --git a/tests/baselines/reference/computedPropertyNames23_ES6.types b/tests/baselines/reference/computedPropertyNames23_ES6.types index 39133196ed42f..7c05c1eac5d45 100644 --- a/tests/baselines/reference/computedPropertyNames23_ES6.types +++ b/tests/baselines/reference/computedPropertyNames23_ES6.types @@ -13,7 +13,7 @@ class C { { [this.bar()]: 1 }[0] >{ [this.bar()]: 1 }[0] : number ->{ [this.bar()]: 1 } : { [x: number]: number; } +>{ [this.bar()]: 1 } : { [x: string]: number; } >[this.bar()] : number >this.bar() : any >this.bar : any diff --git a/tests/baselines/reference/computedPropertyNames26_ES5.types b/tests/baselines/reference/computedPropertyNames26_ES5.types index c9bebbd010a9c..429c2abadcf98 100644 --- a/tests/baselines/reference/computedPropertyNames26_ES5.types +++ b/tests/baselines/reference/computedPropertyNames26_ES5.types @@ -18,7 +18,7 @@ class C extends Base { { [super.bar()]: 1 }[0] >{ [super.bar()]: 1 }[0] : number ->{ [super.bar()]: 1 } : { [x: number]: number; } +>{ [super.bar()]: 1 } : { [x: string]: number; } >[super.bar()] : number >super.bar() : any >super.bar : any diff --git a/tests/baselines/reference/computedPropertyNames26_ES6.types b/tests/baselines/reference/computedPropertyNames26_ES6.types index 6a4cf5a15e0c9..fa59e87db9ea4 100644 --- a/tests/baselines/reference/computedPropertyNames26_ES6.types +++ b/tests/baselines/reference/computedPropertyNames26_ES6.types @@ -20,7 +20,7 @@ class C extends Base { { [super.bar()]: 1 }[0] >{ [super.bar()]: 1 }[0] : number ->{ [super.bar()]: 1 } : { [x: number]: number; } +>{ [super.bar()]: 1 } : { [x: string]: number; } >[super.bar()] : number >super.bar() : any >super.bar : any diff --git a/tests/baselines/reference/computedPropertyNames48_ES5.types b/tests/baselines/reference/computedPropertyNames48_ES5.types index d56824ecbc72c..4953c70a4b03b 100644 --- a/tests/baselines/reference/computedPropertyNames48_ES5.types +++ b/tests/baselines/reference/computedPropertyNames48_ES5.types @@ -14,7 +14,7 @@ var a: any; extractIndexer({ >extractIndexer({ [a]: ""}) : string >extractIndexer : (p: { [n: number]: T; }) => T ->{ [a]: ""} : { [x: number]: string; } +>{ [a]: ""} : { [x: string]: string; } [a]: "" >[a] : string diff --git a/tests/baselines/reference/computedPropertyNames48_ES6.types b/tests/baselines/reference/computedPropertyNames48_ES6.types index 516917c0241ce..2643122606889 100644 --- a/tests/baselines/reference/computedPropertyNames48_ES6.types +++ b/tests/baselines/reference/computedPropertyNames48_ES6.types @@ -14,7 +14,7 @@ var a: any; extractIndexer({ >extractIndexer({ [a]: ""}) : string >extractIndexer : (p: { [n: number]: T; }) => T ->{ [a]: ""} : { [x: number]: string; } +>{ [a]: ""} : { [x: string]: string; } [a]: "" >[a] : string diff --git a/tests/baselines/reference/decoratorsOnComputedProperties.js b/tests/baselines/reference/decoratorsOnComputedProperties.js index 3f0444b310aaa..ab9b31ac3d564 100644 --- a/tests/baselines/reference/decoratorsOnComputedProperties.js +++ b/tests/baselines/reference/decoratorsOnComputedProperties.js @@ -196,8 +196,8 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key, else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; -var _a, _b, _c, _d; -var _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21; +var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p; +var _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _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, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51; function x(o, k) { } let i = 0; function foo() { return ++i + ""; } @@ -207,252 +207,256 @@ const fieldNameC = "fieldName3"; class A { constructor() { this["property2"] = 2; - this[Symbol.iterator] = null; + this[_r] = null; this["property4"] = 2; - this[Symbol.match] = null; - this[_f] = null; - this[_h] = null; + this[_a] = null; + this[_t] = null; + this[_v] = null; } } -foo(), _e = foo(), _f = foo(), _g = fieldNameB, _h = fieldNameC; +_q = Symbol.toStringTag, _r = Symbol.iterator, Symbol.isConcatSpreadable, _a = Symbol.match, foo(), _s = foo(), _t = foo(), _u = fieldNameB, _v = fieldNameC; __decorate([ x ], A.prototype, "property", void 0); __decorate([ x -], A.prototype, Symbol.toStringTag, void 0); +], A.prototype, _q, void 0); __decorate([ x ], A.prototype, "property2", void 0); __decorate([ x -], A.prototype, Symbol.iterator, void 0); +], A.prototype, _r, void 0); __decorate([ x -], A.prototype, _e, void 0); +], A.prototype, _s, void 0); __decorate([ x -], A.prototype, _f, void 0); +], A.prototype, _t, void 0); __decorate([ x -], A.prototype, _g, void 0); +], A.prototype, _u, void 0); __decorate([ x -], A.prototype, _h, void 0); -void (_a = class B { +], A.prototype, _v, void 0); +void (_c = class B { constructor() { this["property2"] = 2; - this[Symbol.iterator] = null; + this[_x] = null; this["property4"] = 2; - this[Symbol.match] = null; - this[_k] = null; - this[_m] = null; + this[_b] = null; + this[_z] = null; + this[_1] = null; } }, + _w = Symbol.toStringTag, + _x = Symbol.iterator, + Symbol.isConcatSpreadable, + _b = Symbol.match, foo(), - _j = foo(), - _k = foo(), - _l = fieldNameB, - _m = fieldNameC, - _a); + _y = foo(), + _z = foo(), + _0 = fieldNameB, + _1 = fieldNameC, + _c); class C { constructor() { this["property2"] = 2; - this[Symbol.iterator] = null; + this[_3] = null; this["property4"] = 2; - this[Symbol.match] = null; - this[_p] = null; - this[_r] = null; + this[_d] = null; + this[_5] = null; + this[_7] = null; } - [(foo(), _o = foo(), _p = foo(), _q = fieldNameB, _r = fieldNameC, "some" + "method")]() { } + [(_2 = Symbol.toStringTag, _3 = Symbol.iterator, Symbol.isConcatSpreadable, _d = Symbol.match, foo(), _4 = foo(), _5 = foo(), _6 = fieldNameB, _7 = fieldNameC, "some" + "method")]() { } } __decorate([ x ], C.prototype, "property", void 0); __decorate([ x -], C.prototype, Symbol.toStringTag, void 0); +], C.prototype, _2, void 0); __decorate([ x ], C.prototype, "property2", void 0); __decorate([ x -], C.prototype, Symbol.iterator, void 0); +], C.prototype, _3, void 0); __decorate([ x -], C.prototype, _o, void 0); +], C.prototype, _4, void 0); __decorate([ x -], C.prototype, _p, void 0); +], C.prototype, _5, void 0); __decorate([ x -], C.prototype, _q, void 0); +], C.prototype, _6, void 0); __decorate([ x -], C.prototype, _r, void 0); +], C.prototype, _7, void 0); void class D { constructor() { this["property2"] = 2; - this[Symbol.iterator] = null; + this[_9] = null; this["property4"] = 2; - this[Symbol.match] = null; - this[_t] = null; - this[_v] = null; + this[_e] = null; + this[_11] = null; + this[_13] = null; } - [(foo(), _s = foo(), _t = foo(), _u = fieldNameB, _v = fieldNameC, "some" + "method")]() { } + [(_8 = Symbol.toStringTag, _9 = Symbol.iterator, Symbol.isConcatSpreadable, _e = Symbol.match, foo(), _10 = foo(), _11 = foo(), _12 = fieldNameB, _13 = fieldNameC, "some" + "method")]() { } }; class E { constructor() { this["property2"] = 2; - this[Symbol.iterator] = null; + this[_15] = null; this["property4"] = 2; - this[Symbol.match] = null; - this[_x] = null; - this[_z] = null; + this[_f] = null; + this[_17] = null; + this[_19] = null; } - [(foo(), _w = foo(), _x = foo(), "some" + "method")]() { } + [(_14 = Symbol.toStringTag, _15 = Symbol.iterator, Symbol.isConcatSpreadable, _f = Symbol.match, foo(), _16 = foo(), _17 = foo(), "some" + "method")]() { } } -_y = fieldNameB, _z = fieldNameC; +_18 = fieldNameB, _19 = fieldNameC; __decorate([ x ], E.prototype, "property", void 0); __decorate([ x -], E.prototype, Symbol.toStringTag, void 0); +], E.prototype, _14, void 0); __decorate([ x ], E.prototype, "property2", void 0); __decorate([ x -], E.prototype, Symbol.iterator, void 0); +], E.prototype, _15, void 0); __decorate([ x -], E.prototype, _w, void 0); +], E.prototype, _16, void 0); __decorate([ x -], E.prototype, _x, void 0); +], E.prototype, _17, void 0); __decorate([ x -], E.prototype, _y, void 0); +], E.prototype, _18, void 0); __decorate([ x -], E.prototype, _z, void 0); -void (_b = class F { +], E.prototype, _19, void 0); +void (_h = class F { constructor() { this["property2"] = 2; - this[Symbol.iterator] = null; + this[_21] = null; this["property4"] = 2; - this[Symbol.match] = null; - this[_1] = null; - this[_3] = null; + this[_g] = null; + this[_23] = null; + this[_25] = null; } - [(foo(), _0 = foo(), _1 = foo(), "some" + "method")]() { } + [(_20 = Symbol.toStringTag, _21 = Symbol.iterator, Symbol.isConcatSpreadable, _g = Symbol.match, foo(), _22 = foo(), _23 = foo(), "some" + "method")]() { } }, - _2 = fieldNameB, - _3 = fieldNameC, - _b); + _24 = fieldNameB, + _25 = fieldNameC, + _h); class G { constructor() { this["property2"] = 2; - this[Symbol.iterator] = null; + this[_27] = null; this["property4"] = 2; - this[Symbol.match] = null; - this[_5] = null; - this[_7] = null; + this[_j] = null; + this[_29] = null; + this[_31] = null; } - [(foo(), _4 = foo(), _5 = foo(), "some" + "method")]() { } - [(_6 = fieldNameB, "some" + "method2")]() { } + [(_26 = Symbol.toStringTag, _27 = Symbol.iterator, Symbol.isConcatSpreadable, _j = Symbol.match, foo(), _28 = foo(), _29 = foo(), "some" + "method")]() { } + [(_30 = fieldNameB, "some" + "method2")]() { } } -_7 = fieldNameC; +_31 = fieldNameC; __decorate([ x ], G.prototype, "property", void 0); __decorate([ x -], G.prototype, Symbol.toStringTag, void 0); +], G.prototype, _26, void 0); __decorate([ x ], G.prototype, "property2", void 0); __decorate([ x -], G.prototype, Symbol.iterator, void 0); +], G.prototype, _27, void 0); __decorate([ x -], G.prototype, _4, void 0); +], G.prototype, _28, void 0); __decorate([ x -], G.prototype, _5, void 0); +], G.prototype, _29, void 0); __decorate([ x -], G.prototype, _6, void 0); +], G.prototype, _30, void 0); __decorate([ x -], G.prototype, _7, void 0); -void (_c = class H { +], G.prototype, _31, void 0); +void (_l = class H { constructor() { this["property2"] = 2; - this[Symbol.iterator] = null; + this[_33] = null; this["property4"] = 2; - this[Symbol.match] = null; - this[_9] = null; - this[_11] = null; + this[_k] = null; + this[_35] = null; + this[_37] = null; } - [(foo(), _8 = foo(), _9 = foo(), "some" + "method")]() { } - [(_10 = fieldNameB, "some" + "method2")]() { } + [(_32 = Symbol.toStringTag, _33 = Symbol.iterator, Symbol.isConcatSpreadable, _k = Symbol.match, foo(), _34 = foo(), _35 = foo(), "some" + "method")]() { } + [(_36 = fieldNameB, "some" + "method2")]() { } }, - _11 = fieldNameC, - _c); + _37 = fieldNameC, + _l); class I { constructor() { this["property2"] = 2; - this[Symbol.iterator] = null; + this[_39] = null; this["property4"] = 2; - this[Symbol.match] = null; - this[_13] = null; - this[_16] = null; + this[_m] = null; + this[_41] = null; + this[_44] = null; } - [(foo(), _12 = foo(), _13 = foo(), _14 = "some" + "method")]() { } - [(_15 = fieldNameB, "some" + "method2")]() { } + [(_38 = Symbol.toStringTag, _39 = Symbol.iterator, Symbol.isConcatSpreadable, _m = Symbol.match, foo(), _40 = foo(), _41 = foo(), _42 = "some" + "method")]() { } + [(_43 = fieldNameB, "some" + "method2")]() { } } -_16 = fieldNameC; +_44 = fieldNameC; __decorate([ x ], I.prototype, "property", void 0); __decorate([ x -], I.prototype, Symbol.toStringTag, void 0); +], I.prototype, _38, void 0); __decorate([ x ], I.prototype, "property2", void 0); __decorate([ x -], I.prototype, Symbol.iterator, void 0); +], I.prototype, _39, void 0); __decorate([ x -], I.prototype, _12, void 0); +], I.prototype, _40, void 0); __decorate([ x -], I.prototype, _13, void 0); +], I.prototype, _41, void 0); __decorate([ x -], I.prototype, _14, null); +], I.prototype, _42, null); __decorate([ x -], I.prototype, _15, void 0); +], I.prototype, _43, void 0); __decorate([ x -], I.prototype, _16, void 0); -void (_d = class J { +], I.prototype, _44, void 0); +void (_p = class J { constructor() { this["property2"] = 2; - this[Symbol.iterator] = null; + this[_46] = null; this["property4"] = 2; - this[Symbol.match] = null; - this[_18] = null; - this[_21] = null; + this[_o] = null; + this[_48] = null; + this[_51] = null; } - [(foo(), _17 = foo(), _18 = foo(), _19 = "some" + "method")]() { } - [(_20 = fieldNameB, "some" + "method2")]() { } + [(_45 = Symbol.toStringTag, _46 = Symbol.iterator, Symbol.isConcatSpreadable, _o = Symbol.match, foo(), _47 = foo(), _48 = foo(), _49 = "some" + "method")]() { } + [(_50 = fieldNameB, "some" + "method2")]() { } }, - _21 = fieldNameC, - _d); + _51 = fieldNameC, + _p); diff --git a/tests/baselines/reference/decoratorsOnComputedProperties.types b/tests/baselines/reference/decoratorsOnComputedProperties.types index aa1571a516e1d..b29ab45bfd2c0 100644 --- a/tests/baselines/reference/decoratorsOnComputedProperties.types +++ b/tests/baselines/reference/decoratorsOnComputedProperties.types @@ -38,9 +38,9 @@ class A { @x [Symbol.toStringTag]: any; >x : (o: object, k: PropertyKey) => void >[Symbol.toStringTag] : any ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol @x ["property2"]: any = 2; >x : (o: object, k: PropertyKey) => void @@ -51,9 +51,9 @@ class A { @x [Symbol.iterator]: any = null; >x : (o: object, k: PropertyKey) => void >[Symbol.iterator] : any ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >null : null ["property3"]: any; @@ -62,9 +62,9 @@ class A { [Symbol.isConcatSpreadable]: any; >[Symbol.isConcatSpreadable] : any ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol ["property4"]: any = 2; >["property4"] : any @@ -73,9 +73,9 @@ class A { [Symbol.match]: any = null; >[Symbol.match] : any ->Symbol.match : symbol +>Symbol.match : unique symbol >Symbol : SymbolConstructor ->match : symbol +>match : unique symbol >null : null [foo()]: any; @@ -125,9 +125,9 @@ void class B { @x [Symbol.toStringTag]: any; >x : (o: object, k: PropertyKey) => void >[Symbol.toStringTag] : any ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol @x ["property2"]: any = 2; >x : (o: object, k: PropertyKey) => void @@ -138,9 +138,9 @@ void class B { @x [Symbol.iterator]: any = null; >x : (o: object, k: PropertyKey) => void >[Symbol.iterator] : any ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >null : null ["property3"]: any; @@ -149,9 +149,9 @@ void class B { [Symbol.isConcatSpreadable]: any; >[Symbol.isConcatSpreadable] : any ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol ["property4"]: any = 2; >["property4"] : any @@ -160,9 +160,9 @@ void class B { [Symbol.match]: any = null; >[Symbol.match] : any ->Symbol.match : symbol +>Symbol.match : unique symbol >Symbol : SymbolConstructor ->match : symbol +>match : unique symbol >null : null [foo()]: any; @@ -211,9 +211,9 @@ class C { @x [Symbol.toStringTag]: any; >x : (o: object, k: PropertyKey) => void >[Symbol.toStringTag] : any ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol @x ["property2"]: any = 2; >x : (o: object, k: PropertyKey) => void @@ -224,9 +224,9 @@ class C { @x [Symbol.iterator]: any = null; >x : (o: object, k: PropertyKey) => void >[Symbol.iterator] : any ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >null : null ["property3"]: any; @@ -235,9 +235,9 @@ class C { [Symbol.isConcatSpreadable]: any; >[Symbol.isConcatSpreadable] : any ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol ["property4"]: any = 2; >["property4"] : any @@ -246,9 +246,9 @@ class C { [Symbol.match]: any = null; >[Symbol.match] : any ->Symbol.match : symbol +>Symbol.match : unique symbol >Symbol : SymbolConstructor ->match : symbol +>match : unique symbol >null : null [foo()]: any; @@ -304,9 +304,9 @@ void class D { @x [Symbol.toStringTag]: any; >x : (o: object, k: PropertyKey) => void >[Symbol.toStringTag] : any ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol @x ["property2"]: any = 2; >x : (o: object, k: PropertyKey) => void @@ -317,9 +317,9 @@ void class D { @x [Symbol.iterator]: any = null; >x : (o: object, k: PropertyKey) => void >[Symbol.iterator] : any ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >null : null ["property3"]: any; @@ -328,9 +328,9 @@ void class D { [Symbol.isConcatSpreadable]: any; >[Symbol.isConcatSpreadable] : any ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol ["property4"]: any = 2; >["property4"] : any @@ -339,9 +339,9 @@ void class D { [Symbol.match]: any = null; >[Symbol.match] : any ->Symbol.match : symbol +>Symbol.match : unique symbol >Symbol : SymbolConstructor ->match : symbol +>match : unique symbol >null : null [foo()]: any; @@ -396,9 +396,9 @@ class E { @x [Symbol.toStringTag]: any; >x : (o: object, k: PropertyKey) => void >[Symbol.toStringTag] : any ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol @x ["property2"]: any = 2; >x : (o: object, k: PropertyKey) => void @@ -409,9 +409,9 @@ class E { @x [Symbol.iterator]: any = null; >x : (o: object, k: PropertyKey) => void >[Symbol.iterator] : any ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >null : null ["property3"]: any; @@ -420,9 +420,9 @@ class E { [Symbol.isConcatSpreadable]: any; >[Symbol.isConcatSpreadable] : any ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol ["property4"]: any = 2; >["property4"] : any @@ -431,9 +431,9 @@ class E { [Symbol.match]: any = null; >[Symbol.match] : any ->Symbol.match : symbol +>Symbol.match : unique symbol >Symbol : SymbolConstructor ->match : symbol +>match : unique symbol >null : null [foo()]: any; @@ -489,9 +489,9 @@ void class F { @x [Symbol.toStringTag]: any; >x : (o: object, k: PropertyKey) => void >[Symbol.toStringTag] : any ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol @x ["property2"]: any = 2; >x : (o: object, k: PropertyKey) => void @@ -502,9 +502,9 @@ void class F { @x [Symbol.iterator]: any = null; >x : (o: object, k: PropertyKey) => void >[Symbol.iterator] : any ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >null : null ["property3"]: any; @@ -513,9 +513,9 @@ void class F { [Symbol.isConcatSpreadable]: any; >[Symbol.isConcatSpreadable] : any ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol ["property4"]: any = 2; >["property4"] : any @@ -524,9 +524,9 @@ void class F { [Symbol.match]: any = null; >[Symbol.match] : any ->Symbol.match : symbol +>Symbol.match : unique symbol >Symbol : SymbolConstructor ->match : symbol +>match : unique symbol >null : null [foo()]: any; @@ -581,9 +581,9 @@ class G { @x [Symbol.toStringTag]: any; >x : (o: object, k: PropertyKey) => void >[Symbol.toStringTag] : any ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol @x ["property2"]: any = 2; >x : (o: object, k: PropertyKey) => void @@ -594,9 +594,9 @@ class G { @x [Symbol.iterator]: any = null; >x : (o: object, k: PropertyKey) => void >[Symbol.iterator] : any ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >null : null ["property3"]: any; @@ -605,9 +605,9 @@ class G { [Symbol.isConcatSpreadable]: any; >[Symbol.isConcatSpreadable] : any ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol ["property4"]: any = 2; >["property4"] : any @@ -616,9 +616,9 @@ class G { [Symbol.match]: any = null; >[Symbol.match] : any ->Symbol.match : symbol +>Symbol.match : unique symbol >Symbol : SymbolConstructor ->match : symbol +>match : unique symbol >null : null [foo()]: any; @@ -680,9 +680,9 @@ void class H { @x [Symbol.toStringTag]: any; >x : (o: object, k: PropertyKey) => void >[Symbol.toStringTag] : any ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol @x ["property2"]: any = 2; >x : (o: object, k: PropertyKey) => void @@ -693,9 +693,9 @@ void class H { @x [Symbol.iterator]: any = null; >x : (o: object, k: PropertyKey) => void >[Symbol.iterator] : any ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >null : null ["property3"]: any; @@ -704,9 +704,9 @@ void class H { [Symbol.isConcatSpreadable]: any; >[Symbol.isConcatSpreadable] : any ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol ["property4"]: any = 2; >["property4"] : any @@ -715,9 +715,9 @@ void class H { [Symbol.match]: any = null; >[Symbol.match] : any ->Symbol.match : symbol +>Symbol.match : unique symbol >Symbol : SymbolConstructor ->match : symbol +>match : unique symbol >null : null [foo()]: any; @@ -778,9 +778,9 @@ class I { @x [Symbol.toStringTag]: any; >x : (o: object, k: PropertyKey) => void >[Symbol.toStringTag] : any ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol @x ["property2"]: any = 2; >x : (o: object, k: PropertyKey) => void @@ -791,9 +791,9 @@ class I { @x [Symbol.iterator]: any = null; >x : (o: object, k: PropertyKey) => void >[Symbol.iterator] : any ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >null : null ["property3"]: any; @@ -802,9 +802,9 @@ class I { [Symbol.isConcatSpreadable]: any; >[Symbol.isConcatSpreadable] : any ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol ["property4"]: any = 2; >["property4"] : any @@ -813,9 +813,9 @@ class I { [Symbol.match]: any = null; >[Symbol.match] : any ->Symbol.match : symbol +>Symbol.match : unique symbol >Symbol : SymbolConstructor ->match : symbol +>match : unique symbol >null : null [foo()]: any; @@ -878,9 +878,9 @@ void class J { @x [Symbol.toStringTag]: any; >x : (o: object, k: PropertyKey) => void >[Symbol.toStringTag] : any ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol @x ["property2"]: any = 2; >x : (o: object, k: PropertyKey) => void @@ -891,9 +891,9 @@ void class J { @x [Symbol.iterator]: any = null; >x : (o: object, k: PropertyKey) => void >[Symbol.iterator] : any ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >null : null ["property3"]: any; @@ -902,9 +902,9 @@ void class J { [Symbol.isConcatSpreadable]: any; >[Symbol.isConcatSpreadable] : any ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol ["property4"]: any = 2; >["property4"] : any @@ -913,9 +913,9 @@ void class J { [Symbol.match]: any = null; >[Symbol.match] : any ->Symbol.match : symbol +>Symbol.match : unique symbol >Symbol : SymbolConstructor ->match : symbol +>match : unique symbol >null : null [foo()]: any; diff --git a/tests/baselines/reference/destructuredLateBoundNameHasCorrectTypes.types b/tests/baselines/reference/destructuredLateBoundNameHasCorrectTypes.types index 8342017958aa2..5f57f74660687 100644 --- a/tests/baselines/reference/destructuredLateBoundNameHasCorrectTypes.types +++ b/tests/baselines/reference/destructuredLateBoundNameHasCorrectTypes.types @@ -1,8 +1,8 @@ === tests/cases/compiler/destructuredLateBoundNameHasCorrectTypes.ts === let { [Symbol.iterator]: destructured } = []; ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >destructured : () => IterableIterator >[] : undefined[] diff --git a/tests/baselines/reference/es5-asyncFunctionObjectLiterals.types b/tests/baselines/reference/es5-asyncFunctionObjectLiterals.types index b594e1ba35ad1..24ad1c9f28cc3 100644 --- a/tests/baselines/reference/es5-asyncFunctionObjectLiterals.types +++ b/tests/baselines/reference/es5-asyncFunctionObjectLiterals.types @@ -51,9 +51,9 @@ async function objectLiteral2() { >objectLiteral2 : () => Promise x = { ->x = { [await a]: y, b: z } : { [x: number]: any; b: any; } +>x = { [await a]: y, b: z } : { [x: string]: any; b: any; } >x : any ->{ [await a]: y, b: z } : { [x: number]: any; b: any; } +>{ [await a]: y, b: z } : { [x: string]: any; b: any; } [await a]: y, >[await a] : any @@ -72,9 +72,9 @@ async function objectLiteral3() { >objectLiteral3 : () => Promise x = { ->x = { [a]: await y, b: z } : { [x: number]: any; b: any; } +>x = { [a]: await y, b: z } : { [x: string]: any; b: any; } >x : any ->{ [a]: await y, b: z } : { [x: number]: any; b: any; } +>{ [a]: await y, b: z } : { [x: string]: any; b: any; } [a]: await y, >[a] : any @@ -93,9 +93,9 @@ async function objectLiteral4() { >objectLiteral4 : () => Promise x = { ->x = { a: await y, [b]: z } : { [x: number]: any; a: any; } +>x = { a: await y, [b]: z } : { [x: string]: any; a: any; } >x : any ->{ a: await y, [b]: z } : { [x: number]: any; a: any; } +>{ a: await y, [b]: z } : { [x: string]: any; a: any; } a: await y, >a : any @@ -114,9 +114,9 @@ async function objectLiteral5() { >objectLiteral5 : () => Promise x = { ->x = { a: y, [await b]: z } : { [x: number]: any; a: any; } +>x = { a: y, [await b]: z } : { [x: string]: any; a: any; } >x : any ->{ a: y, [await b]: z } : { [x: number]: any; a: any; } +>{ a: y, [await b]: z } : { [x: string]: any; a: any; } a: y, >a : any @@ -135,9 +135,9 @@ async function objectLiteral6() { >objectLiteral6 : () => Promise x = { ->x = { a: y, [b]: await z } : { [x: number]: any; a: any; } +>x = { a: y, [b]: await z } : { [x: string]: any; a: any; } >x : any ->{ a: y, [b]: await z } : { [x: number]: any; a: any; } +>{ a: y, [b]: await z } : { [x: string]: any; a: any; } a: y, >a : any diff --git a/tests/baselines/reference/es5-yieldFunctionObjectLiterals.types b/tests/baselines/reference/es5-yieldFunctionObjectLiterals.types index c32ec8fd5c363..e8f863c22d40a 100644 --- a/tests/baselines/reference/es5-yieldFunctionObjectLiterals.types +++ b/tests/baselines/reference/es5-yieldFunctionObjectLiterals.types @@ -135,8 +135,8 @@ function* objectLiteral6() { >objectLiteral6 : () => Generator const x = { ->x : { [x: number]: number; a: number; c: number; } ->{ a: 1, [yield]: 2, c: 4, } : { [x: number]: number; a: number; c: number; } +>x : { [x: string]: number; a: number; c: number; } +>{ a: 1, [yield]: 2, c: 4, } : { [x: string]: number; a: number; c: number; } a: 1, >a : number @@ -157,8 +157,8 @@ function* objectLiteral7() { >objectLiteral7 : () => Generator const x = { ->x : { [x: number]: any; a: number; c: number; } ->{ a: 1, [yield]: yield 2, c: 4, } : { [x: number]: any; a: number; c: number; } +>x : { [x: string]: any; a: number; c: number; } +>{ a: 1, [yield]: yield 2, c: 4, } : { [x: string]: any; a: number; c: number; } a: 1, >a : number diff --git a/tests/baselines/reference/for-of15.types b/tests/baselines/reference/for-of15.types index 3ad50870a11ad..130e2c21c7203 100644 --- a/tests/baselines/reference/for-of15.types +++ b/tests/baselines/reference/for-of15.types @@ -10,9 +10,9 @@ class StringIterator { } [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/for-of16.types b/tests/baselines/reference/for-of16.types index 0396cf215d288..2fb955fec59ff 100644 --- a/tests/baselines/reference/for-of16.types +++ b/tests/baselines/reference/for-of16.types @@ -4,9 +4,9 @@ class StringIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/for-of17.types b/tests/baselines/reference/for-of17.types index 98768f241bac6..be08586182507 100644 --- a/tests/baselines/reference/for-of17.types +++ b/tests/baselines/reference/for-of17.types @@ -20,9 +20,9 @@ class NumberIterator { } [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/for-of18.types b/tests/baselines/reference/for-of18.types index de784f5ec0d05..643afccd73745 100644 --- a/tests/baselines/reference/for-of18.types +++ b/tests/baselines/reference/for-of18.types @@ -20,9 +20,9 @@ class StringIterator { } [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/for-of19.types b/tests/baselines/reference/for-of19.types index 2f9620e45aa8e..04a7180dfad90 100644 --- a/tests/baselines/reference/for-of19.types +++ b/tests/baselines/reference/for-of19.types @@ -24,9 +24,9 @@ class FooIterator { } [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/for-of20.types b/tests/baselines/reference/for-of20.types index d94c056899237..1261375e897c8 100644 --- a/tests/baselines/reference/for-of20.types +++ b/tests/baselines/reference/for-of20.types @@ -24,9 +24,9 @@ class FooIterator { } [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/for-of21.types b/tests/baselines/reference/for-of21.types index fa6a26466d412..e499da668650d 100644 --- a/tests/baselines/reference/for-of21.types +++ b/tests/baselines/reference/for-of21.types @@ -24,9 +24,9 @@ class FooIterator { } [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/for-of22.types b/tests/baselines/reference/for-of22.types index 7a6da8a8f604c..524aafb6c6f07 100644 --- a/tests/baselines/reference/for-of22.types +++ b/tests/baselines/reference/for-of22.types @@ -24,9 +24,9 @@ class FooIterator { } [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/for-of23.types b/tests/baselines/reference/for-of23.types index a88b5162b503d..ca817cb7625af 100644 --- a/tests/baselines/reference/for-of23.types +++ b/tests/baselines/reference/for-of23.types @@ -24,9 +24,9 @@ class FooIterator { } [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/for-of25.types b/tests/baselines/reference/for-of25.types index 5cc40748bb071..3eb43b9bf7325 100644 --- a/tests/baselines/reference/for-of25.types +++ b/tests/baselines/reference/for-of25.types @@ -4,9 +4,9 @@ class StringIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => any ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return x; >x : any diff --git a/tests/baselines/reference/for-of26.types b/tests/baselines/reference/for-of26.types index 5209b1856b38f..bfe34a0488d95 100644 --- a/tests/baselines/reference/for-of26.types +++ b/tests/baselines/reference/for-of26.types @@ -10,9 +10,9 @@ class StringIterator { } [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/for-of27.js b/tests/baselines/reference/for-of27.js index 6adc66e241b2b..0845c03bc64b8 100644 --- a/tests/baselines/reference/for-of27.js +++ b/tests/baselines/reference/for-of27.js @@ -8,4 +8,5 @@ for (var v of new StringIterator) { } //// [for-of27.js] class StringIterator { } +Symbol.iterator; for (var v of new StringIterator) { } diff --git a/tests/baselines/reference/for-of27.types b/tests/baselines/reference/for-of27.types index c72d306c18765..f3db042cdbf00 100644 --- a/tests/baselines/reference/for-of27.types +++ b/tests/baselines/reference/for-of27.types @@ -4,9 +4,9 @@ class StringIterator { [Symbol.iterator]: any; >[Symbol.iterator] : any ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol } for (var v of new StringIterator) { } diff --git a/tests/baselines/reference/for-of28.types b/tests/baselines/reference/for-of28.types index d1f95753722a8..d9e2099119fd9 100644 --- a/tests/baselines/reference/for-of28.types +++ b/tests/baselines/reference/for-of28.types @@ -7,9 +7,9 @@ class StringIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/for-of29.types b/tests/baselines/reference/for-of29.types index 52a18f0cf50af..331f68a5ce401 100644 --- a/tests/baselines/reference/for-of29.types +++ b/tests/baselines/reference/for-of29.types @@ -4,9 +4,9 @@ var iterableWithOptionalIterator: { [Symbol.iterator]?(): Iterator >[Symbol.iterator] : () => Iterator ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol }; diff --git a/tests/baselines/reference/for-of30.types b/tests/baselines/reference/for-of30.types index d415360dc6fa6..2fcf0af647484 100644 --- a/tests/baselines/reference/for-of30.types +++ b/tests/baselines/reference/for-of30.types @@ -24,9 +24,9 @@ class StringIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/for-of31.types b/tests/baselines/reference/for-of31.types index 330c39578f391..35d486a665a76 100644 --- a/tests/baselines/reference/for-of31.types +++ b/tests/baselines/reference/for-of31.types @@ -17,9 +17,9 @@ class StringIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/for-of33.types b/tests/baselines/reference/for-of33.types index 1410ee0653505..0b148994963c2 100644 --- a/tests/baselines/reference/for-of33.types +++ b/tests/baselines/reference/for-of33.types @@ -4,9 +4,9 @@ class StringIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => any ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return v; >v : any diff --git a/tests/baselines/reference/for-of34.types b/tests/baselines/reference/for-of34.types index 3cb11706a1366..9fbb7a15391b4 100644 --- a/tests/baselines/reference/for-of34.types +++ b/tests/baselines/reference/for-of34.types @@ -11,9 +11,9 @@ class StringIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/for-of35.types b/tests/baselines/reference/for-of35.types index 66d1106073e73..b3e363a0c12bb 100644 --- a/tests/baselines/reference/for-of35.types +++ b/tests/baselines/reference/for-of35.types @@ -20,9 +20,9 @@ class StringIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/generatorAssignability.types b/tests/baselines/reference/generatorAssignability.types index c498104aeba7a..3a271f11b7e22 100644 --- a/tests/baselines/reference/generatorAssignability.types +++ b/tests/baselines/reference/generatorAssignability.types @@ -164,9 +164,9 @@ async function f3() { >o : { [Symbol.asyncIterator]: () => Generator<1 | 2, void, unknown>; } >{[Symbol.asyncIterator]: syncGenerator} : { [Symbol.asyncIterator]: () => Generator<1 | 2, void, unknown>; } >[Symbol.asyncIterator] : () => Generator<1 | 2, void, unknown> ->Symbol.asyncIterator : symbol +>Symbol.asyncIterator : unique symbol >Symbol : SymbolConstructor ->asyncIterator : symbol +>asyncIterator : unique symbol >syncGenerator : () => Generator<1 | 2, void, unknown> for await (const x of o) { diff --git a/tests/baselines/reference/generatorES6_6.types b/tests/baselines/reference/generatorES6_6.types index 05e0bcc7f88b2..d1d05a1d0a44f 100644 --- a/tests/baselines/reference/generatorES6_6.types +++ b/tests/baselines/reference/generatorES6_6.types @@ -4,9 +4,9 @@ class C { *[Symbol.iterator]() { >[Symbol.iterator] : () => Generator ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol let a = yield 1; >a : any diff --git a/tests/baselines/reference/generatorTypeCheck28.types b/tests/baselines/reference/generatorTypeCheck28.types index abd66af518e77..1bc2e2f37a259 100644 --- a/tests/baselines/reference/generatorTypeCheck28.types +++ b/tests/baselines/reference/generatorTypeCheck28.types @@ -9,9 +9,9 @@ function* g(): IterableIterator<(x: string) => number> { *[Symbol.iterator]() { >[Symbol.iterator] : () => Generator<(x: string) => number, void, undefined> ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol yield x => x.length; >yield x => x.length : undefined diff --git a/tests/baselines/reference/generatorTypeCheck41.types b/tests/baselines/reference/generatorTypeCheck41.types index d22c875416f8b..e06689538bd48 100644 --- a/tests/baselines/reference/generatorTypeCheck41.types +++ b/tests/baselines/reference/generatorTypeCheck41.types @@ -3,8 +3,8 @@ function* g() { >g : () => Generator let x = { ->x : { [x: number]: number; } ->{ [yield 0]: 0 } : { [x: number]: number; } +>x : { [x: string]: number; } +>{ [yield 0]: 0 } : { [x: string]: number; } [yield 0]: 0 >[yield 0] : number diff --git a/tests/baselines/reference/generatorTypeCheck42.types b/tests/baselines/reference/generatorTypeCheck42.types index f3e82ad1a98d0..dd69a15f6d70b 100644 --- a/tests/baselines/reference/generatorTypeCheck42.types +++ b/tests/baselines/reference/generatorTypeCheck42.types @@ -3,8 +3,8 @@ function* g() { >g : () => Generator let x = { ->x : { [x: number]: () => void; } ->{ [yield 0]() { } } : { [x: number]: () => void; } +>x : { [x: string]: () => void; } +>{ [yield 0]() { } } : { [x: string]: () => void; } [yield 0]() { >[yield 0] : () => void diff --git a/tests/baselines/reference/generatorTypeCheck43.types b/tests/baselines/reference/generatorTypeCheck43.types index cdf5cdc81bbb8..e7731cfffc574 100644 --- a/tests/baselines/reference/generatorTypeCheck43.types +++ b/tests/baselines/reference/generatorTypeCheck43.types @@ -3,8 +3,8 @@ function* g() { >g : () => Generator let x = { ->x : { [x: number]: () => Generator; } ->{ *[yield 0]() { } } : { [x: number]: () => Generator; } +>x : { [x: string]: () => Generator; } +>{ *[yield 0]() { } } : { [x: string]: () => Generator; } *[yield 0]() { >[yield 0] : () => Generator diff --git a/tests/baselines/reference/generatorTypeCheck44.types b/tests/baselines/reference/generatorTypeCheck44.types index 53dfd59266ec8..130a614931e2e 100644 --- a/tests/baselines/reference/generatorTypeCheck44.types +++ b/tests/baselines/reference/generatorTypeCheck44.types @@ -3,8 +3,8 @@ function* g() { >g : () => Generator let x = { ->x : { [x: number]: number; } ->{ get [yield 0]() { return 0; } } : { [x: number]: number; } +>x : { [x: string]: number; } +>{ get [yield 0]() { return 0; } } : { [x: string]: number; } get [yield 0]() { >[yield 0] : number diff --git a/tests/baselines/reference/generatorTypeCheck46.types b/tests/baselines/reference/generatorTypeCheck46.types index 3beb73892cef8..2b7f691d969df 100644 --- a/tests/baselines/reference/generatorTypeCheck46.types +++ b/tests/baselines/reference/generatorTypeCheck46.types @@ -19,9 +19,9 @@ foo("", function* () { *[Symbol.iterator]() { >[Symbol.iterator] : () => Generator<(x: string) => number, void, undefined> ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol yield x => x.length >yield x => x.length : undefined diff --git a/tests/baselines/reference/intersectionTypeInference3.types b/tests/baselines/reference/intersectionTypeInference3.types index fb8c01ea33674..173a882312776 100644 --- a/tests/baselines/reference/intersectionTypeInference3.types +++ b/tests/baselines/reference/intersectionTypeInference3.types @@ -6,9 +6,9 @@ type Nominal = Type & { [Symbol.species]: Kind; >[Symbol.species] : Kind ->Symbol.species : symbol +>Symbol.species : unique symbol >Symbol : SymbolConstructor ->species : symbol +>species : unique symbol }; diff --git a/tests/baselines/reference/invalidNewTarget.es5.types b/tests/baselines/reference/invalidNewTarget.es5.types index 5a7703b684462..e3cc854aaeb94 100644 --- a/tests/baselines/reference/invalidNewTarget.es5.types +++ b/tests/baselines/reference/invalidNewTarget.es5.types @@ -73,8 +73,8 @@ class C { } const O = { ->O : { [x: number]: any; k(): any; readonly l: any; m: any; n: any; } ->{ [new.target]: undefined, k() { return new.target; }, get l() { return new.target; }, set m(_) { _ = new.target; }, n: new.target,} : { [x: number]: undefined; k(): any; readonly l: any; m: any; n: any; } +>O : { [x: string]: any; k(): any; readonly l: any; m: any; n: any; } +>{ [new.target]: undefined, k() { return new.target; }, get l() { return new.target; }, set m(_) { _ = new.target; }, n: new.target,} : { [x: string]: any; k(): any; readonly l: any; m: any; n: any; } [new.target]: undefined, >[new.target] : undefined diff --git a/tests/baselines/reference/invalidNewTarget.es6.types b/tests/baselines/reference/invalidNewTarget.es6.types index a7690f4cbbca8..bb9dfef0bf66d 100644 --- a/tests/baselines/reference/invalidNewTarget.es6.types +++ b/tests/baselines/reference/invalidNewTarget.es6.types @@ -73,8 +73,8 @@ class C { } const O = { ->O : { [x: number]: any; k(): any; readonly l: any; m: any; n: any; } ->{ [new.target]: undefined, k() { return new.target; }, get l() { return new.target; }, set m(_) { _ = new.target; }, n: new.target,} : { [x: number]: undefined; k(): any; readonly l: any; m: any; n: any; } +>O : { [x: string]: any; k(): any; readonly l: any; m: any; n: any; } +>{ [new.target]: undefined, k() { return new.target; }, get l() { return new.target; }, set m(_) { _ = new.target; }, n: new.target,} : { [x: string]: any; k(): any; readonly l: any; m: any; n: any; } [new.target]: undefined, >[new.target] : undefined diff --git a/tests/baselines/reference/iterableArrayPattern1.types b/tests/baselines/reference/iterableArrayPattern1.types index 8bdf0ebc6ed15..e9dde480d4749 100644 --- a/tests/baselines/reference/iterableArrayPattern1.types +++ b/tests/baselines/reference/iterableArrayPattern1.types @@ -22,9 +22,9 @@ class SymbolIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iterableArrayPattern10.types b/tests/baselines/reference/iterableArrayPattern10.types index 2ae11652898da..3f431ac7850b0 100644 --- a/tests/baselines/reference/iterableArrayPattern10.types +++ b/tests/baselines/reference/iterableArrayPattern10.types @@ -31,9 +31,9 @@ class FooIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iterableArrayPattern11.types b/tests/baselines/reference/iterableArrayPattern11.types index 6c9f384aa4fe3..fe7cdd293044b 100644 --- a/tests/baselines/reference/iterableArrayPattern11.types +++ b/tests/baselines/reference/iterableArrayPattern11.types @@ -31,9 +31,9 @@ class FooIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iterableArrayPattern12.types b/tests/baselines/reference/iterableArrayPattern12.types index d55d2f2fecbd6..0280487bbc58f 100644 --- a/tests/baselines/reference/iterableArrayPattern12.types +++ b/tests/baselines/reference/iterableArrayPattern12.types @@ -31,9 +31,9 @@ class FooIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iterableArrayPattern13.types b/tests/baselines/reference/iterableArrayPattern13.types index d73f5cf0ab8de..f6e14c16392ef 100644 --- a/tests/baselines/reference/iterableArrayPattern13.types +++ b/tests/baselines/reference/iterableArrayPattern13.types @@ -31,9 +31,9 @@ class FooIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iterableArrayPattern14.types b/tests/baselines/reference/iterableArrayPattern14.types index b16b7e39c12cb..d364cf7dc8fcf 100644 --- a/tests/baselines/reference/iterableArrayPattern14.types +++ b/tests/baselines/reference/iterableArrayPattern14.types @@ -31,9 +31,9 @@ class FooIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iterableArrayPattern15.types b/tests/baselines/reference/iterableArrayPattern15.types index f6e922f84e0f5..5dcf6a0d560ce 100644 --- a/tests/baselines/reference/iterableArrayPattern15.types +++ b/tests/baselines/reference/iterableArrayPattern15.types @@ -31,9 +31,9 @@ class FooIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iterableArrayPattern16.types b/tests/baselines/reference/iterableArrayPattern16.types index 429311f4e0078..e5da87323dd4f 100644 --- a/tests/baselines/reference/iterableArrayPattern16.types +++ b/tests/baselines/reference/iterableArrayPattern16.types @@ -43,9 +43,9 @@ class FooIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this @@ -75,9 +75,9 @@ class FooIteratorIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iterableArrayPattern17.types b/tests/baselines/reference/iterableArrayPattern17.types index aa5c56896c4d7..fc9bd4477b34c 100644 --- a/tests/baselines/reference/iterableArrayPattern17.types +++ b/tests/baselines/reference/iterableArrayPattern17.types @@ -31,9 +31,9 @@ class FooIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iterableArrayPattern18.types b/tests/baselines/reference/iterableArrayPattern18.types index 023dd934dae3e..bc9ac65d66f2f 100644 --- a/tests/baselines/reference/iterableArrayPattern18.types +++ b/tests/baselines/reference/iterableArrayPattern18.types @@ -31,9 +31,9 @@ class FooIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iterableArrayPattern19.types b/tests/baselines/reference/iterableArrayPattern19.types index b1e71f1e35751..8e22bda21e8a7 100644 --- a/tests/baselines/reference/iterableArrayPattern19.types +++ b/tests/baselines/reference/iterableArrayPattern19.types @@ -32,9 +32,9 @@ class FooArrayIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iterableArrayPattern2.types b/tests/baselines/reference/iterableArrayPattern2.types index 2dfab111579db..e39bbdd7be709 100644 --- a/tests/baselines/reference/iterableArrayPattern2.types +++ b/tests/baselines/reference/iterableArrayPattern2.types @@ -22,9 +22,9 @@ class SymbolIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iterableArrayPattern20.types b/tests/baselines/reference/iterableArrayPattern20.types index 56ef1a4f41199..c46423228a790 100644 --- a/tests/baselines/reference/iterableArrayPattern20.types +++ b/tests/baselines/reference/iterableArrayPattern20.types @@ -32,9 +32,9 @@ class FooArrayIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iterableArrayPattern3.types b/tests/baselines/reference/iterableArrayPattern3.types index b8d2ca0782684..09125d682447d 100644 --- a/tests/baselines/reference/iterableArrayPattern3.types +++ b/tests/baselines/reference/iterableArrayPattern3.types @@ -31,9 +31,9 @@ class FooIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iterableArrayPattern4.types b/tests/baselines/reference/iterableArrayPattern4.types index 11c508f11d8e4..1ecdf2092d2d7 100644 --- a/tests/baselines/reference/iterableArrayPattern4.types +++ b/tests/baselines/reference/iterableArrayPattern4.types @@ -31,9 +31,9 @@ class FooIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iterableArrayPattern5.types b/tests/baselines/reference/iterableArrayPattern5.types index 1600f94e3dd31..af485de99c2af 100644 --- a/tests/baselines/reference/iterableArrayPattern5.types +++ b/tests/baselines/reference/iterableArrayPattern5.types @@ -31,9 +31,9 @@ class FooIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iterableArrayPattern6.types b/tests/baselines/reference/iterableArrayPattern6.types index a28a4def27167..dd4a8acd7e50a 100644 --- a/tests/baselines/reference/iterableArrayPattern6.types +++ b/tests/baselines/reference/iterableArrayPattern6.types @@ -31,9 +31,9 @@ class FooIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iterableArrayPattern7.types b/tests/baselines/reference/iterableArrayPattern7.types index 16d080b84bfdb..e6f59bf19a6fb 100644 --- a/tests/baselines/reference/iterableArrayPattern7.types +++ b/tests/baselines/reference/iterableArrayPattern7.types @@ -31,9 +31,9 @@ class FooIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iterableArrayPattern8.types b/tests/baselines/reference/iterableArrayPattern8.types index c4c46bca57404..93f89e344c0d2 100644 --- a/tests/baselines/reference/iterableArrayPattern8.types +++ b/tests/baselines/reference/iterableArrayPattern8.types @@ -31,9 +31,9 @@ class FooIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iterableArrayPattern9.types b/tests/baselines/reference/iterableArrayPattern9.types index ca9ced3e787d9..94a4e33ea69f8 100644 --- a/tests/baselines/reference/iterableArrayPattern9.types +++ b/tests/baselines/reference/iterableArrayPattern9.types @@ -38,9 +38,9 @@ class FooIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iteratorSpreadInArray.types b/tests/baselines/reference/iteratorSpreadInArray.types index 1b0f6954f71b2..c71ad753d1ba5 100644 --- a/tests/baselines/reference/iteratorSpreadInArray.types +++ b/tests/baselines/reference/iteratorSpreadInArray.types @@ -22,9 +22,9 @@ class SymbolIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iteratorSpreadInArray10.types b/tests/baselines/reference/iteratorSpreadInArray10.types index dd6bec4bbbd53..364202ec3ec94 100644 --- a/tests/baselines/reference/iteratorSpreadInArray10.types +++ b/tests/baselines/reference/iteratorSpreadInArray10.types @@ -4,9 +4,9 @@ class SymbolIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iteratorSpreadInArray2.types b/tests/baselines/reference/iteratorSpreadInArray2.types index 12eff588816c1..e05f8d4b0bc2b 100644 --- a/tests/baselines/reference/iteratorSpreadInArray2.types +++ b/tests/baselines/reference/iteratorSpreadInArray2.types @@ -22,9 +22,9 @@ class SymbolIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this @@ -53,9 +53,9 @@ class NumberIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iteratorSpreadInArray3.types b/tests/baselines/reference/iteratorSpreadInArray3.types index 5c32643e302b6..c13d41bd43c68 100644 --- a/tests/baselines/reference/iteratorSpreadInArray3.types +++ b/tests/baselines/reference/iteratorSpreadInArray3.types @@ -22,9 +22,9 @@ class SymbolIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iteratorSpreadInArray4.types b/tests/baselines/reference/iteratorSpreadInArray4.types index a6c8a53d320f8..9c5ae99689154 100644 --- a/tests/baselines/reference/iteratorSpreadInArray4.types +++ b/tests/baselines/reference/iteratorSpreadInArray4.types @@ -22,9 +22,9 @@ class SymbolIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iteratorSpreadInArray5.types b/tests/baselines/reference/iteratorSpreadInArray5.types index eac7f537f357b..6163460fece06 100644 --- a/tests/baselines/reference/iteratorSpreadInArray5.types +++ b/tests/baselines/reference/iteratorSpreadInArray5.types @@ -22,9 +22,9 @@ class SymbolIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iteratorSpreadInArray6.types b/tests/baselines/reference/iteratorSpreadInArray6.types index 60d3401b1a781..94e784558265b 100644 --- a/tests/baselines/reference/iteratorSpreadInArray6.types +++ b/tests/baselines/reference/iteratorSpreadInArray6.types @@ -22,9 +22,9 @@ class SymbolIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iteratorSpreadInArray7.types b/tests/baselines/reference/iteratorSpreadInArray7.types index 9d3cf2cfa7ed6..11dfaeb872c00 100644 --- a/tests/baselines/reference/iteratorSpreadInArray7.types +++ b/tests/baselines/reference/iteratorSpreadInArray7.types @@ -22,9 +22,9 @@ class SymbolIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iteratorSpreadInArray9.types b/tests/baselines/reference/iteratorSpreadInArray9.types index 82e4064526afa..1cac23527eae5 100644 --- a/tests/baselines/reference/iteratorSpreadInArray9.types +++ b/tests/baselines/reference/iteratorSpreadInArray9.types @@ -18,9 +18,9 @@ class SymbolIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iteratorSpreadInCall.types b/tests/baselines/reference/iteratorSpreadInCall.types index fc971f24f5e89..9d369c853f89c 100644 --- a/tests/baselines/reference/iteratorSpreadInCall.types +++ b/tests/baselines/reference/iteratorSpreadInCall.types @@ -26,9 +26,9 @@ class SymbolIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iteratorSpreadInCall10.types b/tests/baselines/reference/iteratorSpreadInCall10.types index 4e50ac9382182..ecd43ef5f50c0 100644 --- a/tests/baselines/reference/iteratorSpreadInCall10.types +++ b/tests/baselines/reference/iteratorSpreadInCall10.types @@ -29,9 +29,9 @@ class SymbolIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iteratorSpreadInCall11.types b/tests/baselines/reference/iteratorSpreadInCall11.types index f420f4983d639..7396283989d28 100644 --- a/tests/baselines/reference/iteratorSpreadInCall11.types +++ b/tests/baselines/reference/iteratorSpreadInCall11.types @@ -29,9 +29,9 @@ class SymbolIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iteratorSpreadInCall12.types b/tests/baselines/reference/iteratorSpreadInCall12.types index 5f0f0a34ccec6..74ca929a1561a 100644 --- a/tests/baselines/reference/iteratorSpreadInCall12.types +++ b/tests/baselines/reference/iteratorSpreadInCall12.types @@ -29,9 +29,9 @@ class SymbolIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this @@ -60,9 +60,9 @@ class _StringIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iteratorSpreadInCall2.types b/tests/baselines/reference/iteratorSpreadInCall2.types index 4ffcf0b01de97..94ad7d780b682 100644 --- a/tests/baselines/reference/iteratorSpreadInCall2.types +++ b/tests/baselines/reference/iteratorSpreadInCall2.types @@ -26,9 +26,9 @@ class SymbolIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iteratorSpreadInCall3.types b/tests/baselines/reference/iteratorSpreadInCall3.types index 8c629fc2d7623..570fbd6892a56 100644 --- a/tests/baselines/reference/iteratorSpreadInCall3.types +++ b/tests/baselines/reference/iteratorSpreadInCall3.types @@ -26,9 +26,9 @@ class SymbolIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iteratorSpreadInCall4.types b/tests/baselines/reference/iteratorSpreadInCall4.types index 56968f87094e1..2ac3d6b455391 100644 --- a/tests/baselines/reference/iteratorSpreadInCall4.types +++ b/tests/baselines/reference/iteratorSpreadInCall4.types @@ -27,9 +27,9 @@ class SymbolIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iteratorSpreadInCall5.types b/tests/baselines/reference/iteratorSpreadInCall5.types index f6b2c632c282f..f1060fa09a230 100644 --- a/tests/baselines/reference/iteratorSpreadInCall5.types +++ b/tests/baselines/reference/iteratorSpreadInCall5.types @@ -26,9 +26,9 @@ class SymbolIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this @@ -57,9 +57,9 @@ class _StringIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iteratorSpreadInCall6.types b/tests/baselines/reference/iteratorSpreadInCall6.types index cd834cfa625bf..bacd53f2e0e09 100644 --- a/tests/baselines/reference/iteratorSpreadInCall6.types +++ b/tests/baselines/reference/iteratorSpreadInCall6.types @@ -26,9 +26,9 @@ class SymbolIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this @@ -57,9 +57,9 @@ class _StringIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iteratorSpreadInCall7.types b/tests/baselines/reference/iteratorSpreadInCall7.types index a2b33c87d3d3a..6d4b8ae56356c 100644 --- a/tests/baselines/reference/iteratorSpreadInCall7.types +++ b/tests/baselines/reference/iteratorSpreadInCall7.types @@ -29,9 +29,9 @@ class SymbolIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this @@ -60,9 +60,9 @@ class _StringIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iteratorSpreadInCall8.types b/tests/baselines/reference/iteratorSpreadInCall8.types index dc8dabdc59ea6..36834d94e196f 100644 --- a/tests/baselines/reference/iteratorSpreadInCall8.types +++ b/tests/baselines/reference/iteratorSpreadInCall8.types @@ -29,9 +29,9 @@ class SymbolIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this @@ -60,9 +60,9 @@ class _StringIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/iteratorSpreadInCall9.types b/tests/baselines/reference/iteratorSpreadInCall9.types index ffb97ce731bb2..8f142f7571cc4 100644 --- a/tests/baselines/reference/iteratorSpreadInCall9.types +++ b/tests/baselines/reference/iteratorSpreadInCall9.types @@ -29,9 +29,9 @@ class SymbolIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this @@ -60,9 +60,9 @@ class _StringIterator { [Symbol.iterator]() { >[Symbol.iterator] : () => this ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol return this; >this : this diff --git a/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration.types b/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration.types index 9ff78e86ea80f..ea9be13dbb177 100644 --- a/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration.types +++ b/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration.types @@ -16,9 +16,9 @@ const items = []; >[] : undefined[] module.exports = items; ->module.exports = items : { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; [Symbol.iterator](): IterableIterator; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; } ->module.exports : { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; [Symbol.iterator](): IterableIterator; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; [Symbol.iterator](): IterableIterator; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; }; } ->exports : { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; [Symbol.iterator](): IterableIterator; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; } +>module.exports = items : { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.iterator](): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; } +>module.exports : { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.iterator](): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; } +>module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.iterator](): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; }; } +>exports : { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.iterator](): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; } >items : Item[] diff --git a/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration2.types b/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration2.types index 3675a48b2d9f8..579d1fa111f56 100644 --- a/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration2.types +++ b/tests/baselines/reference/jsDeclarationsTypeReassignmentFromDeclaration2.types @@ -7,10 +7,10 @@ const items = require("./some-mod")(); >"./some-mod" : "./some-mod" module.exports = items; ->module.exports = items : { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; [Symbol.iterator](): IterableIterator; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; } ->module.exports : { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; [Symbol.iterator](): IterableIterator; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; } ->module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; [Symbol.iterator](): IterableIterator; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; }; } ->exports : { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; [Symbol.iterator](): IterableIterator; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; } +>module.exports = items : { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.iterator](): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; } +>module.exports : { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.iterator](): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; } +>module : { "\"tests/cases/conformance/jsdoc/declarations/index\"": { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.iterator](): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; }; } +>exports : { [n: number]: Item; length: number; toString(): string; toLocaleString(): string; pop(): Item; push(...items: Item[]): number; concat(...items: ConcatArray[]): Item[]; concat(...items: (Item | ConcatArray)[]): Item[]; join(separator?: string): string; reverse(): Item[]; shift(): Item; slice(start?: number, end?: number): Item[]; sort(compareFn?: (a: Item, b: Item) => number): Item[]; splice(start: number, deleteCount?: number): Item[]; splice(start: number, deleteCount: number, ...items: Item[]): Item[]; unshift(...items: Item[]): number; indexOf(searchElement: Item, fromIndex?: number): number; lastIndexOf(searchElement: Item, fromIndex?: number): number; every(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): this is S[]; every(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; some(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): boolean; forEach(callbackfn: (value: Item, index: number, array: Item[]) => void, thisArg?: any): void; map(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter(predicate: (value: Item, index: number, array: Item[]) => value is S, thisArg?: any): S[]; filter(predicate: (value: Item, index: number, array: Item[]) => unknown, thisArg?: any): Item[]; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduce(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduce(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item): Item; reduceRight(callbackfn: (previousValue: Item, currentValue: Item, currentIndex: number, array: Item[]) => Item, initialValue: Item): Item; reduceRight(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find(predicate: (this: void, value: Item, index: number, obj: Item[]) => value is S, thisArg?: any): S; find(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): Item; findIndex(predicate: (value: Item, index: number, obj: Item[]) => unknown, thisArg?: any): number; fill(value: Item, start?: number, end?: number): Item[]; copyWithin(target: number, start: number, end?: number): Item[]; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator; values(): IterableIterator; [Symbol.iterator](): IterableIterator; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; } >items : Item[] === tests/cases/conformance/jsdoc/declarations/some-mod.d.ts === diff --git a/tests/baselines/reference/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.types b/tests/baselines/reference/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.types index 7d4c7acc1deaf..64a21a55835bd 100644 --- a/tests/baselines/reference/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.types +++ b/tests/baselines/reference/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.types @@ -60,8 +60,8 @@ Math.sign(1); // Using ES6 object var o = { ->o : { a: number; [Symbol.hasInstance](value: any): boolean; } ->{ a: 2, [Symbol.hasInstance](value: any) { return false; }} : { a: number; [Symbol.hasInstance](value: any): boolean; } +>o : { [x: string]: number | ((value: any) => boolean); a: number; } +>{ a: 2, [Symbol.hasInstance](value: any) { return false; }} : { [x: string]: number | ((value: any) => boolean); a: number; } a: 2, >a : number @@ -81,7 +81,7 @@ var o = { o.hasOwnProperty(Symbol.hasInstance); >o.hasOwnProperty(Symbol.hasInstance) : boolean >o.hasOwnProperty : (v: PropertyKey) => boolean ->o : { a: number; [Symbol.hasInstance](value: any): boolean; } +>o : { [x: string]: number | ((value: any) => boolean); a: number; } >hasOwnProperty : (v: PropertyKey) => boolean >Symbol.hasInstance : any >Symbol : any @@ -140,8 +140,8 @@ var s = Symbol(); // Using ES6 wellknown-symbol const o1 = { ->o1 : { [Symbol.hasInstance](value: any): boolean; } ->{ [Symbol.hasInstance](value: any) { return false; }} : { [Symbol.hasInstance](value: any): boolean; } +>o1 : { [x: string]: (value: any) => boolean; } +>{ [Symbol.hasInstance](value: any) { return false; }} : { [x: string]: (value: any) => boolean; } [Symbol.hasInstance](value: any) { >[Symbol.hasInstance] : (value: any) => boolean diff --git a/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.types b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.types index f885083eac0b0..a7512bc94ab71 100644 --- a/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.types +++ b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions1.types @@ -113,9 +113,9 @@ var o = { [Symbol.hasInstance](value: any) { >[Symbol.hasInstance] : (value: any) => boolean ->Symbol.hasInstance : symbol +>Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor ->hasInstance : symbol +>hasInstance : unique symbol >value : any return false; @@ -127,9 +127,9 @@ o.hasOwnProperty(Symbol.hasInstance); >o.hasOwnProperty : (v: PropertyKey) => boolean >o : { a: number; [Symbol.hasInstance](value: any): boolean; } >hasOwnProperty : (v: PropertyKey) => boolean ->Symbol.hasInstance : symbol +>Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor ->hasInstance : symbol +>hasInstance : unique symbol // Using ES6 promise async function out() { @@ -221,9 +221,9 @@ const o1 = { [Symbol.hasInstance](value: any) { >[Symbol.hasInstance] : (value: any) => boolean ->Symbol.hasInstance : symbol +>Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor ->hasInstance : symbol +>hasInstance : unique symbol >value : any return false; diff --git a/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.types b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.types index 22ed7e3b636db..4aad64cf7fec3 100644 --- a/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.types +++ b/tests/baselines/reference/modularizeLibrary_NoErrorDuplicateLibOptions2.types @@ -113,9 +113,9 @@ var o = { [Symbol.hasInstance](value: any) { >[Symbol.hasInstance] : (value: any) => boolean ->Symbol.hasInstance : symbol +>Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor ->hasInstance : symbol +>hasInstance : unique symbol >value : any return false; @@ -127,9 +127,9 @@ o.hasOwnProperty(Symbol.hasInstance); >o.hasOwnProperty : (v: PropertyKey) => boolean >o : { a: number; [Symbol.hasInstance](value: any): boolean; } >hasOwnProperty : (v: PropertyKey) => boolean ->Symbol.hasInstance : symbol +>Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor ->hasInstance : symbol +>hasInstance : unique symbol // Using ES6 promise async function out() { @@ -221,9 +221,9 @@ const o1 = { [Symbol.hasInstance](value: any) { >[Symbol.hasInstance] : (value: any) => boolean ->Symbol.hasInstance : symbol +>Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor ->hasInstance : symbol +>hasInstance : unique symbol >value : any return false; diff --git a/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.types b/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.types index 610df69522a2c..45ea713ea17c3 100644 --- a/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.types +++ b/tests/baselines/reference/modularizeLibrary_TargetES5UsingES6Lib.types @@ -113,9 +113,9 @@ var o = { [Symbol.hasInstance](value: any) { >[Symbol.hasInstance] : (value: any) => boolean ->Symbol.hasInstance : symbol +>Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor ->hasInstance : symbol +>hasInstance : unique symbol >value : any return false; @@ -127,9 +127,9 @@ o.hasOwnProperty(Symbol.hasInstance); >o.hasOwnProperty : (v: PropertyKey) => boolean >o : { a: number; [Symbol.hasInstance](value: any): boolean; } >hasOwnProperty : (v: PropertyKey) => boolean ->Symbol.hasInstance : symbol +>Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor ->hasInstance : symbol +>hasInstance : unique symbol // Using ES6 promise async function out() { @@ -221,9 +221,9 @@ const o1 = { [Symbol.hasInstance](value: any) { >[Symbol.hasInstance] : (value: any) => boolean ->Symbol.hasInstance : symbol +>Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor ->hasInstance : symbol +>hasInstance : unique symbol >value : any return false; diff --git a/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.types b/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.types index e59666753d531..ba55dc465e84a 100644 --- a/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.types +++ b/tests/baselines/reference/modularizeLibrary_TargetES6UsingES6Lib.types @@ -68,9 +68,9 @@ var o = { [Symbol.hasInstance](value: any) { >[Symbol.hasInstance] : (value: any) => boolean ->Symbol.hasInstance : symbol +>Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor ->hasInstance : symbol +>hasInstance : unique symbol >value : any return false; @@ -82,9 +82,9 @@ o.hasOwnProperty(Symbol.hasInstance); >o.hasOwnProperty : (v: PropertyKey) => boolean >o : { a: number; [Symbol.hasInstance](value: any): boolean; } >hasOwnProperty : (v: PropertyKey) => boolean ->Symbol.hasInstance : symbol +>Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor ->hasInstance : symbol +>hasInstance : unique symbol // Using Es6 proxy var t = {} @@ -144,9 +144,9 @@ const o1 = { [Symbol.hasInstance](value: any) { >[Symbol.hasInstance] : (value: any) => boolean ->Symbol.hasInstance : symbol +>Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor ->hasInstance : symbol +>hasInstance : unique symbol >value : any return false; diff --git a/tests/baselines/reference/modularizeLibrary_UsingES5LibES6ArrayLibES6WellknownSymbolLib.types b/tests/baselines/reference/modularizeLibrary_UsingES5LibES6ArrayLibES6WellknownSymbolLib.types index 830cbe6a0f42f..d754962ab8689 100644 --- a/tests/baselines/reference/modularizeLibrary_UsingES5LibES6ArrayLibES6WellknownSymbolLib.types +++ b/tests/baselines/reference/modularizeLibrary_UsingES5LibES6ArrayLibES6WellknownSymbolLib.types @@ -30,8 +30,8 @@ a[Symbol.isConcatSpreadable] = false; >a[Symbol.isConcatSpreadable] = false : false >a[Symbol.isConcatSpreadable] : error >a : string[] ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol >false : false diff --git a/tests/baselines/reference/parser.asyncGenerators.classMethods.es2018.types b/tests/baselines/reference/parser.asyncGenerators.classMethods.es2018.types index 8de20801f686d..9ba9d23751eeb 100644 --- a/tests/baselines/reference/parser.asyncGenerators.classMethods.es2018.types +++ b/tests/baselines/reference/parser.asyncGenerators.classMethods.es2018.types @@ -239,8 +239,8 @@ class C22 { >f : () => AsyncGenerator const x = { [yield]: 1 }; ->x : { [x: number]: number; } ->{ [yield]: 1 } : { [x: number]: number; } +>x : { [x: string]: number; } +>{ [yield]: 1 } : { [x: string]: number; } >[yield] : number >yield : any >1 : 1 diff --git a/tests/baselines/reference/parser.asyncGenerators.functionDeclarations.es2018.types b/tests/baselines/reference/parser.asyncGenerators.functionDeclarations.es2018.types index 668567c29ce12..0fdc28d73b710 100644 --- a/tests/baselines/reference/parser.asyncGenerators.functionDeclarations.es2018.types +++ b/tests/baselines/reference/parser.asyncGenerators.functionDeclarations.es2018.types @@ -147,8 +147,8 @@ async function * f21() { >f21 : () => AsyncGenerator const x = { [yield]: 1 }; ->x : { [x: number]: number; } ->{ [yield]: 1 } : { [x: number]: number; } +>x : { [x: string]: number; } +>{ [yield]: 1 } : { [x: string]: number; } >[yield] : number >yield : any >1 : 1 diff --git a/tests/baselines/reference/parser.asyncGenerators.functionExpressions.es2018.types b/tests/baselines/reference/parser.asyncGenerators.functionExpressions.es2018.types index 071b5834b3ed8..87a4fb10a0553 100644 --- a/tests/baselines/reference/parser.asyncGenerators.functionExpressions.es2018.types +++ b/tests/baselines/reference/parser.asyncGenerators.functionExpressions.es2018.types @@ -186,8 +186,8 @@ const f21 = async function *() { >async function *() { const x = { [yield]: 1 };} : () => AsyncGenerator const x = { [yield]: 1 }; ->x : { [x: number]: number; } ->{ [yield]: 1 } : { [x: number]: number; } +>x : { [x: string]: number; } +>{ [yield]: 1 } : { [x: string]: number; } >[yield] : number >yield : any >1 : 1 diff --git a/tests/baselines/reference/parser.asyncGenerators.objectLiteralMethods.es2018.types b/tests/baselines/reference/parser.asyncGenerators.objectLiteralMethods.es2018.types index b9ec519e0e918..5eac9ce9b23fe 100644 --- a/tests/baselines/reference/parser.asyncGenerators.objectLiteralMethods.es2018.types +++ b/tests/baselines/reference/parser.asyncGenerators.objectLiteralMethods.es2018.types @@ -251,8 +251,8 @@ const o21 = { >f : () => AsyncGenerator const x = { [yield]: 1 }; ->x : { [x: number]: number; } ->{ [yield]: 1 } : { [x: number]: number; } +>x : { [x: string]: number; } +>{ [yield]: 1 } : { [x: string]: number; } >[yield] : number >yield : any >1 : 1 diff --git a/tests/baselines/reference/parserComputedPropertyName1.types b/tests/baselines/reference/parserComputedPropertyName1.types index 229b345194efc..1b77ff7bb6067 100644 --- a/tests/baselines/reference/parserComputedPropertyName1.types +++ b/tests/baselines/reference/parserComputedPropertyName1.types @@ -1,7 +1,7 @@ === tests/cases/conformance/parser/ecmascript6/ComputedPropertyNames/parserComputedPropertyName1.ts === var v = { [e] }; ->v : { [x: number]: any; } ->{ [e] } : { [x: number]: any; } +>v : { [x: string]: any; } +>{ [e] } : { [x: string]: any; } >[e] : any >e : any > : any diff --git a/tests/baselines/reference/parserComputedPropertyName17.types b/tests/baselines/reference/parserComputedPropertyName17.types index 141f36f9455ee..bfe61e79cab83 100644 --- a/tests/baselines/reference/parserComputedPropertyName17.types +++ b/tests/baselines/reference/parserComputedPropertyName17.types @@ -1,7 +1,7 @@ === tests/cases/conformance/parser/ecmascript6/ComputedPropertyNames/parserComputedPropertyName17.ts === var v = { set [e](v) { } } ->v : { [x: number]: any; } ->{ set [e](v) { } } : { [x: number]: any; } +>v : { [x: string]: any; } +>{ set [e](v) { } } : { [x: string]: any; } >[e] : any >e : any >v : any diff --git a/tests/baselines/reference/parserComputedPropertyName2.types b/tests/baselines/reference/parserComputedPropertyName2.types index fedfb2ea33ff8..bc1600e4b2b08 100644 --- a/tests/baselines/reference/parserComputedPropertyName2.types +++ b/tests/baselines/reference/parserComputedPropertyName2.types @@ -1,7 +1,7 @@ === tests/cases/conformance/parser/ecmascript6/ComputedPropertyNames/parserComputedPropertyName2.ts === var v = { [e]: 1 }; ->v : { [x: number]: number; } ->{ [e]: 1 } : { [x: number]: number; } +>v : { [x: string]: number; } +>{ [e]: 1 } : { [x: string]: number; } >[e] : number >e : any >1 : 1 diff --git a/tests/baselines/reference/parserComputedPropertyName3.types b/tests/baselines/reference/parserComputedPropertyName3.types index 7a9d4aff23248..981221459cac4 100644 --- a/tests/baselines/reference/parserComputedPropertyName3.types +++ b/tests/baselines/reference/parserComputedPropertyName3.types @@ -1,7 +1,7 @@ === tests/cases/conformance/parser/ecmascript6/ComputedPropertyNames/parserComputedPropertyName3.ts === var v = { [e]() { } }; ->v : { [x: number]: () => void; } ->{ [e]() { } } : { [x: number]: () => void; } +>v : { [x: string]: () => void; } +>{ [e]() { } } : { [x: string]: () => void; } >[e] : () => void >e : any diff --git a/tests/baselines/reference/parserComputedPropertyName37.types b/tests/baselines/reference/parserComputedPropertyName37.types index c0ef9ee0eb3c3..145108c7d78cc 100644 --- a/tests/baselines/reference/parserComputedPropertyName37.types +++ b/tests/baselines/reference/parserComputedPropertyName37.types @@ -1,7 +1,7 @@ === tests/cases/conformance/parser/ecmascript6/ComputedPropertyNames/parserComputedPropertyName37.ts === var v = { ->v : { [x: number]: number; } ->{ [public]: 0} : { [x: number]: number; } +>v : { [x: string]: number; } +>{ [public]: 0} : { [x: string]: number; } [public]: 0 >[public] : number diff --git a/tests/baselines/reference/parserComputedPropertyName4.types b/tests/baselines/reference/parserComputedPropertyName4.types index 66ac75b156b26..05065aee5a4d0 100644 --- a/tests/baselines/reference/parserComputedPropertyName4.types +++ b/tests/baselines/reference/parserComputedPropertyName4.types @@ -1,7 +1,7 @@ === tests/cases/conformance/parser/ecmascript6/ComputedPropertyNames/parserComputedPropertyName4.ts === var v = { get [e]() { } }; ->v : { [x: number]: void; } ->{ get [e]() { } } : { [x: number]: void; } +>v : { [x: string]: void; } +>{ get [e]() { } } : { [x: string]: void; } >[e] : void >e : any diff --git a/tests/baselines/reference/parserComputedPropertyName5.types b/tests/baselines/reference/parserComputedPropertyName5.types index 383f590909fc2..6d5b6dbd23583 100644 --- a/tests/baselines/reference/parserComputedPropertyName5.types +++ b/tests/baselines/reference/parserComputedPropertyName5.types @@ -1,7 +1,7 @@ === tests/cases/conformance/parser/ecmascript6/ComputedPropertyNames/parserComputedPropertyName5.ts === var v = { public get [e]() { } }; ->v : { [x: number]: void; } ->{ public get [e]() { } } : { [x: number]: void; } +>v : { [x: string]: void; } +>{ public get [e]() { } } : { [x: string]: void; } >[e] : void >e : any diff --git a/tests/baselines/reference/parserComputedPropertyName6.types b/tests/baselines/reference/parserComputedPropertyName6.types index c292156dce011..c15cefd59c2ee 100644 --- a/tests/baselines/reference/parserComputedPropertyName6.types +++ b/tests/baselines/reference/parserComputedPropertyName6.types @@ -1,7 +1,7 @@ === tests/cases/conformance/parser/ecmascript6/ComputedPropertyNames/parserComputedPropertyName6.ts === var v = { [e]: 1, [e + e]: 2 }; ->v : { [x: number]: number; } ->{ [e]: 1, [e + e]: 2 } : { [x: number]: number; } +>v : { [x: string]: number; } +>{ [e]: 1, [e + e]: 2 } : { [x: string]: number; } >[e] : number >e : any >1 : 1 diff --git a/tests/baselines/reference/parserES5ComputedPropertyName2.types b/tests/baselines/reference/parserES5ComputedPropertyName2.types index 6d40c5687e9a7..0aa59a0ccda28 100644 --- a/tests/baselines/reference/parserES5ComputedPropertyName2.types +++ b/tests/baselines/reference/parserES5ComputedPropertyName2.types @@ -1,7 +1,7 @@ === tests/cases/conformance/parser/ecmascript5/ComputedPropertyNames/parserES5ComputedPropertyName2.ts === var v = { [e]: 1 }; ->v : { [x: number]: number; } ->{ [e]: 1 } : { [x: number]: number; } +>v : { [x: string]: number; } +>{ [e]: 1 } : { [x: string]: number; } >[e] : number >e : any >1 : 1 diff --git a/tests/baselines/reference/parserES5ComputedPropertyName3.types b/tests/baselines/reference/parserES5ComputedPropertyName3.types index 012ebae6bbf3f..d40de1262582f 100644 --- a/tests/baselines/reference/parserES5ComputedPropertyName3.types +++ b/tests/baselines/reference/parserES5ComputedPropertyName3.types @@ -1,7 +1,7 @@ === tests/cases/conformance/parser/ecmascript5/ComputedPropertyNames/parserES5ComputedPropertyName3.ts === var v = { [e]() { } }; ->v : { [x: number]: () => void; } ->{ [e]() { } } : { [x: number]: () => void; } +>v : { [x: string]: () => void; } +>{ [e]() { } } : { [x: string]: () => void; } >[e] : () => void >e : any diff --git a/tests/baselines/reference/parserES5ComputedPropertyName4.types b/tests/baselines/reference/parserES5ComputedPropertyName4.types index 4e021729a7d8c..160885480944e 100644 --- a/tests/baselines/reference/parserES5ComputedPropertyName4.types +++ b/tests/baselines/reference/parserES5ComputedPropertyName4.types @@ -1,7 +1,7 @@ === tests/cases/conformance/parser/ecmascript5/ComputedPropertyNames/parserES5ComputedPropertyName4.ts === var v = { get [e]() { } }; ->v : { [x: number]: void; } ->{ get [e]() { } } : { [x: number]: void; } +>v : { [x: string]: void; } +>{ get [e]() { } } : { [x: string]: void; } >[e] : void >e : any diff --git a/tests/baselines/reference/parserES5SymbolProperty1.errors.txt b/tests/baselines/reference/parserES5SymbolProperty1.errors.txt index 3082110db2876..b329320a8ff6d 100644 --- a/tests/baselines/reference/parserES5SymbolProperty1.errors.txt +++ b/tests/baselines/reference/parserES5SymbolProperty1.errors.txt @@ -1,9 +1,12 @@ +tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty1.ts(2,5): error TS1169: A computed property name in an interface must refer to an expression whose type is a literal type or a 'unique symbol' type. tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty1.ts(2,6): error TS2585: 'Symbol' only refers to a type, but is being used as a value here. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later. -==== tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty1.ts (1 errors) ==== +==== tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty1.ts (2 errors) ==== interface I { [Symbol.iterator]: string; + ~~~~~~~~~~~~~~~~~ +!!! error TS1169: A computed property name in an interface must refer to an expression whose type is a literal type or a 'unique symbol' type. ~~~~~~ !!! error TS2585: 'Symbol' only refers to a type, but is being used as a value here. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later. } \ No newline at end of file diff --git a/tests/baselines/reference/parserES5SymbolProperty2.errors.txt b/tests/baselines/reference/parserES5SymbolProperty2.errors.txt index cc0a80c7889a7..794e8318d507f 100644 --- a/tests/baselines/reference/parserES5SymbolProperty2.errors.txt +++ b/tests/baselines/reference/parserES5SymbolProperty2.errors.txt @@ -1,9 +1,12 @@ +tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty2.ts(2,5): error TS1169: A computed property name in an interface must refer to an expression whose type is a literal type or a 'unique symbol' type. tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty2.ts(2,6): error TS2585: 'Symbol' only refers to a type, but is being used as a value here. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later. -==== tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty2.ts (1 errors) ==== +==== tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty2.ts (2 errors) ==== interface I { [Symbol.unscopables](): string; + ~~~~~~~~~~~~~~~~~~~~ +!!! error TS1169: A computed property name in an interface must refer to an expression whose type is a literal type or a 'unique symbol' type. ~~~~~~ !!! error TS2585: 'Symbol' only refers to a type, but is being used as a value here. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later. } \ No newline at end of file diff --git a/tests/baselines/reference/parserES5SymbolProperty3.errors.txt b/tests/baselines/reference/parserES5SymbolProperty3.errors.txt index 894ffc0bb8f02..95ecbf02cb17a 100644 --- a/tests/baselines/reference/parserES5SymbolProperty3.errors.txt +++ b/tests/baselines/reference/parserES5SymbolProperty3.errors.txt @@ -1,9 +1,12 @@ +tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty3.ts(2,5): error TS1165: A computed property name in an ambient context must refer to an expression whose type is a literal type or a 'unique symbol' type. tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty3.ts(2,6): error TS2585: 'Symbol' only refers to a type, but is being used as a value here. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later. -==== tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty3.ts (1 errors) ==== +==== tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty3.ts (2 errors) ==== declare class C { [Symbol.unscopables](): string; + ~~~~~~~~~~~~~~~~~~~~ +!!! error TS1165: A computed property name in an ambient context must refer to an expression whose type is a literal type or a 'unique symbol' type. ~~~~~~ !!! error TS2585: 'Symbol' only refers to a type, but is being used as a value here. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later. } \ No newline at end of file diff --git a/tests/baselines/reference/parserES5SymbolProperty4.errors.txt b/tests/baselines/reference/parserES5SymbolProperty4.errors.txt index 2cc89cefd71fb..2eb6725fe3ca6 100644 --- a/tests/baselines/reference/parserES5SymbolProperty4.errors.txt +++ b/tests/baselines/reference/parserES5SymbolProperty4.errors.txt @@ -1,9 +1,12 @@ +tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty4.ts(2,5): error TS1166: A computed property name in a class property declaration must refer to an expression whose type is a literal type or a 'unique symbol' type. tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty4.ts(2,6): error TS2585: 'Symbol' only refers to a type, but is being used as a value here. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later. -==== tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty4.ts (1 errors) ==== +==== tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty4.ts (2 errors) ==== declare class C { [Symbol.isRegExp]: string; + ~~~~~~~~~~~~~~~~~ +!!! error TS1166: A computed property name in a class property declaration must refer to an expression whose type is a literal type or a 'unique symbol' type. ~~~~~~ !!! error TS2585: 'Symbol' only refers to a type, but is being used as a value here. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later. } \ No newline at end of file diff --git a/tests/baselines/reference/parserES5SymbolProperty5.errors.txt b/tests/baselines/reference/parserES5SymbolProperty5.errors.txt index f37f0e0d02805..6cdceaf251d59 100644 --- a/tests/baselines/reference/parserES5SymbolProperty5.errors.txt +++ b/tests/baselines/reference/parserES5SymbolProperty5.errors.txt @@ -1,9 +1,12 @@ +tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty5.ts(2,5): error TS1166: A computed property name in a class property declaration must refer to an expression whose type is a literal type or a 'unique symbol' type. tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty5.ts(2,6): error TS2585: 'Symbol' only refers to a type, but is being used as a value here. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later. -==== tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty5.ts (1 errors) ==== +==== tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty5.ts (2 errors) ==== class C { [Symbol.isRegExp]: string; + ~~~~~~~~~~~~~~~~~ +!!! error TS1166: A computed property name in a class property declaration must refer to an expression whose type is a literal type or a 'unique symbol' type. ~~~~~~ !!! error TS2585: 'Symbol' only refers to a type, but is being used as a value here. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later. } \ No newline at end of file diff --git a/tests/baselines/reference/parserES5SymbolProperty5.js b/tests/baselines/reference/parserES5SymbolProperty5.js index 9042b73bbd98e..bd4eb997f5a21 100644 --- a/tests/baselines/reference/parserES5SymbolProperty5.js +++ b/tests/baselines/reference/parserES5SymbolProperty5.js @@ -9,3 +9,4 @@ var C = /** @class */ (function () { } return C; }()); +Symbol.isRegExp; diff --git a/tests/baselines/reference/parserES5SymbolProperty6.errors.txt b/tests/baselines/reference/parserES5SymbolProperty6.errors.txt index 08d48f2c02a3e..9e19029a91ac2 100644 --- a/tests/baselines/reference/parserES5SymbolProperty6.errors.txt +++ b/tests/baselines/reference/parserES5SymbolProperty6.errors.txt @@ -1,9 +1,12 @@ +tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty6.ts(2,5): error TS1166: A computed property name in a class property declaration must refer to an expression whose type is a literal type or a 'unique symbol' type. tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty6.ts(2,6): error TS2585: 'Symbol' only refers to a type, but is being used as a value here. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later. -==== tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty6.ts (1 errors) ==== +==== tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty6.ts (2 errors) ==== class C { [Symbol.toStringTag]: string = ""; + ~~~~~~~~~~~~~~~~~~~~ +!!! error TS1166: A computed property name in a class property declaration must refer to an expression whose type is a literal type or a 'unique symbol' type. ~~~~~~ !!! error TS2585: 'Symbol' only refers to a type, but is being used as a value here. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later. } \ No newline at end of file diff --git a/tests/baselines/reference/parserES5SymbolProperty6.js b/tests/baselines/reference/parserES5SymbolProperty6.js index da7c05716219e..feda26811f7d8 100644 --- a/tests/baselines/reference/parserES5SymbolProperty6.js +++ b/tests/baselines/reference/parserES5SymbolProperty6.js @@ -4,9 +4,11 @@ class C { } //// [parserES5SymbolProperty6.js] +var _a; var C = /** @class */ (function () { function C() { - this[Symbol.toStringTag] = ""; + this[_a] = ""; } return C; }()); +_a = Symbol.toStringTag; diff --git a/tests/baselines/reference/parserES5SymbolProperty8.errors.txt b/tests/baselines/reference/parserES5SymbolProperty8.errors.txt index 90e0df0211fe7..65e42b47aa313 100644 --- a/tests/baselines/reference/parserES5SymbolProperty8.errors.txt +++ b/tests/baselines/reference/parserES5SymbolProperty8.errors.txt @@ -1,9 +1,12 @@ +tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty8.ts(2,5): error TS1170: A computed property name in a type literal must refer to an expression whose type is a literal type or a 'unique symbol' type. tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty8.ts(2,6): error TS2585: 'Symbol' only refers to a type, but is being used as a value here. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later. -==== tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty8.ts (1 errors) ==== +==== tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty8.ts (2 errors) ==== var x: { [Symbol.toPrimitive](): string + ~~~~~~~~~~~~~~~~~~~~ +!!! error TS1170: A computed property name in a type literal must refer to an expression whose type is a literal type or a 'unique symbol' type. ~~~~~~ !!! error TS2585: 'Symbol' only refers to a type, but is being used as a value here. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later. } \ No newline at end of file diff --git a/tests/baselines/reference/parserES5SymbolProperty8.types b/tests/baselines/reference/parserES5SymbolProperty8.types index fcafdfd2ae280..fe070af9cedd7 100644 --- a/tests/baselines/reference/parserES5SymbolProperty8.types +++ b/tests/baselines/reference/parserES5SymbolProperty8.types @@ -1,6 +1,6 @@ === tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty8.ts === var x: { ->x : { [Symbol.toPrimitive](): string; } +>x : {} [Symbol.toPrimitive](): string >[Symbol.toPrimitive] : () => string diff --git a/tests/baselines/reference/parserES5SymbolProperty9.errors.txt b/tests/baselines/reference/parserES5SymbolProperty9.errors.txt index 9a21a7942cb13..b5df77272b654 100644 --- a/tests/baselines/reference/parserES5SymbolProperty9.errors.txt +++ b/tests/baselines/reference/parserES5SymbolProperty9.errors.txt @@ -1,9 +1,12 @@ +tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty9.ts(2,5): error TS1170: A computed property name in a type literal must refer to an expression whose type is a literal type or a 'unique symbol' type. tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty9.ts(2,6): error TS2585: 'Symbol' only refers to a type, but is being used as a value here. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later. -==== tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty9.ts (1 errors) ==== +==== tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty9.ts (2 errors) ==== var x: { [Symbol.toPrimitive]: string + ~~~~~~~~~~~~~~~~~~~~ +!!! error TS1170: A computed property name in a type literal must refer to an expression whose type is a literal type or a 'unique symbol' type. ~~~~~~ !!! error TS2585: 'Symbol' only refers to a type, but is being used as a value here. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later. } \ No newline at end of file diff --git a/tests/baselines/reference/parserES5SymbolProperty9.types b/tests/baselines/reference/parserES5SymbolProperty9.types index b5568a201a597..b4d47ffc3f3ed 100644 --- a/tests/baselines/reference/parserES5SymbolProperty9.types +++ b/tests/baselines/reference/parserES5SymbolProperty9.types @@ -1,6 +1,6 @@ === tests/cases/conformance/parser/ecmascript5/Symbols/parserES5SymbolProperty9.ts === var x: { ->x : { [Symbol.toPrimitive]: string; } +>x : {} [Symbol.toPrimitive]: string >[Symbol.toPrimitive] : string diff --git a/tests/baselines/reference/parserSymbolIndexer5.types b/tests/baselines/reference/parserSymbolIndexer5.types index e7a51c52393d3..864312e54389f 100644 --- a/tests/baselines/reference/parserSymbolIndexer5.types +++ b/tests/baselines/reference/parserSymbolIndexer5.types @@ -1,7 +1,7 @@ === tests/cases/conformance/parser/ecmascript6/Symbols/parserSymbolIndexer5.ts === var x = { ->x : { [x: number]: any; "": any; } ->{ [s: symbol]: ""} : { [x: number]: any; "": any; } +>x : { [x: string]: any; "": any; } +>{ [s: symbol]: ""} : { [x: string]: any; "": any; } [s: symbol]: "" >[s : any diff --git a/tests/baselines/reference/parserSymbolProperty1.types b/tests/baselines/reference/parserSymbolProperty1.types index 3df25afd9f680..d5c02a9e1ca97 100644 --- a/tests/baselines/reference/parserSymbolProperty1.types +++ b/tests/baselines/reference/parserSymbolProperty1.types @@ -2,7 +2,7 @@ interface I { [Symbol.iterator]: string; >[Symbol.iterator] : string ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol } diff --git a/tests/baselines/reference/parserSymbolProperty2.types b/tests/baselines/reference/parserSymbolProperty2.types index dc254010a90f6..ebeb48ea72774 100644 --- a/tests/baselines/reference/parserSymbolProperty2.types +++ b/tests/baselines/reference/parserSymbolProperty2.types @@ -2,7 +2,7 @@ interface I { [Symbol.unscopables](): string; >[Symbol.unscopables] : () => string ->Symbol.unscopables : symbol +>Symbol.unscopables : unique symbol >Symbol : SymbolConstructor ->unscopables : symbol +>unscopables : unique symbol } diff --git a/tests/baselines/reference/parserSymbolProperty3.types b/tests/baselines/reference/parserSymbolProperty3.types index 342b8f979b6aa..95264a2932656 100644 --- a/tests/baselines/reference/parserSymbolProperty3.types +++ b/tests/baselines/reference/parserSymbolProperty3.types @@ -4,7 +4,7 @@ declare class C { [Symbol.unscopables](): string; >[Symbol.unscopables] : () => string ->Symbol.unscopables : symbol +>Symbol.unscopables : unique symbol >Symbol : SymbolConstructor ->unscopables : symbol +>unscopables : unique symbol } diff --git a/tests/baselines/reference/parserSymbolProperty4.types b/tests/baselines/reference/parserSymbolProperty4.types index d59c507d1d202..bc0d67e056e19 100644 --- a/tests/baselines/reference/parserSymbolProperty4.types +++ b/tests/baselines/reference/parserSymbolProperty4.types @@ -4,7 +4,7 @@ declare class C { [Symbol.toPrimitive]: string; >[Symbol.toPrimitive] : string ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol } diff --git a/tests/baselines/reference/parserSymbolProperty5.js b/tests/baselines/reference/parserSymbolProperty5.js index 62a805602d1b1..2a3a558eeeed9 100644 --- a/tests/baselines/reference/parserSymbolProperty5.js +++ b/tests/baselines/reference/parserSymbolProperty5.js @@ -6,3 +6,4 @@ class C { //// [parserSymbolProperty5.js] class C { } +Symbol.toPrimitive; diff --git a/tests/baselines/reference/parserSymbolProperty5.types b/tests/baselines/reference/parserSymbolProperty5.types index 0c07379a4ebbd..e6941ab3c7732 100644 --- a/tests/baselines/reference/parserSymbolProperty5.types +++ b/tests/baselines/reference/parserSymbolProperty5.types @@ -4,7 +4,7 @@ class C { [Symbol.toPrimitive]: string; >[Symbol.toPrimitive] : string ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol } diff --git a/tests/baselines/reference/parserSymbolProperty6.js b/tests/baselines/reference/parserSymbolProperty6.js index d2aa55fe0859a..4bb5a7c01f41b 100644 --- a/tests/baselines/reference/parserSymbolProperty6.js +++ b/tests/baselines/reference/parserSymbolProperty6.js @@ -4,8 +4,10 @@ class C { } //// [parserSymbolProperty6.js] +var _a; class C { constructor() { - this[Symbol.toStringTag] = ""; + this[_a] = ""; } } +_a = Symbol.toStringTag; diff --git a/tests/baselines/reference/parserSymbolProperty6.types b/tests/baselines/reference/parserSymbolProperty6.types index fb2003b9db942..f9e1f3e979fdb 100644 --- a/tests/baselines/reference/parserSymbolProperty6.types +++ b/tests/baselines/reference/parserSymbolProperty6.types @@ -4,8 +4,8 @@ class C { [Symbol.toStringTag]: string = ""; >[Symbol.toStringTag] : string ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol >"" : "" } diff --git a/tests/baselines/reference/parserSymbolProperty7.types b/tests/baselines/reference/parserSymbolProperty7.types index 9ac1ca2f7d32f..18e5a95aa2c27 100644 --- a/tests/baselines/reference/parserSymbolProperty7.types +++ b/tests/baselines/reference/parserSymbolProperty7.types @@ -4,7 +4,7 @@ class C { [Symbol.toStringTag](): void { } >[Symbol.toStringTag] : () => void ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol } diff --git a/tests/baselines/reference/parserSymbolProperty8.types b/tests/baselines/reference/parserSymbolProperty8.types index dfac56694359a..29cea864c62fe 100644 --- a/tests/baselines/reference/parserSymbolProperty8.types +++ b/tests/baselines/reference/parserSymbolProperty8.types @@ -4,7 +4,7 @@ var x: { [Symbol.toPrimitive](): string >[Symbol.toPrimitive] : () => string ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol } diff --git a/tests/baselines/reference/parserSymbolProperty9.types b/tests/baselines/reference/parserSymbolProperty9.types index 48d3f56a2f3fe..a2a96591b60b4 100644 --- a/tests/baselines/reference/parserSymbolProperty9.types +++ b/tests/baselines/reference/parserSymbolProperty9.types @@ -4,7 +4,7 @@ var x: { [Symbol.toPrimitive]: string >[Symbol.toPrimitive] : string ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol } diff --git a/tests/baselines/reference/privateIndexer2.types b/tests/baselines/reference/privateIndexer2.types index 98ade7651ae29..e279d40b355a3 100644 --- a/tests/baselines/reference/privateIndexer2.types +++ b/tests/baselines/reference/privateIndexer2.types @@ -3,7 +3,7 @@ var x = { >x : any ->{ private [x: string]: string;} : { [x: number]: any; string: any; } +>{ private [x: string]: string;} : { [x: string]: any; string: any; } private [x: string]: string; >[x : any diff --git a/tests/baselines/reference/regexMatchAll-esnext.types b/tests/baselines/reference/regexMatchAll-esnext.types index 9a902b6000094..ed7abe4da65db 100644 --- a/tests/baselines/reference/regexMatchAll-esnext.types +++ b/tests/baselines/reference/regexMatchAll-esnext.types @@ -4,9 +4,9 @@ const matches = /\w/g[Symbol.matchAll]("matchAll"); >/\w/g[Symbol.matchAll]("matchAll") : IterableIterator >/\w/g[Symbol.matchAll] : (str: string) => IterableIterator >/\w/g : RegExp ->Symbol.matchAll : symbol +>Symbol.matchAll : unique symbol >Symbol : SymbolConstructor ->matchAll : symbol +>matchAll : unique symbol >"matchAll" : "matchAll" const array = [...matches]; diff --git a/tests/baselines/reference/regexMatchAll.types b/tests/baselines/reference/regexMatchAll.types index a109cdc46116b..3071526790606 100644 --- a/tests/baselines/reference/regexMatchAll.types +++ b/tests/baselines/reference/regexMatchAll.types @@ -4,9 +4,9 @@ const matches = /\w/g[Symbol.matchAll]("matchAll"); >/\w/g[Symbol.matchAll]("matchAll") : IterableIterator >/\w/g[Symbol.matchAll] : (str: string) => IterableIterator >/\w/g : RegExp ->Symbol.matchAll : symbol +>Symbol.matchAll : unique symbol >Symbol : SymbolConstructor ->matchAll : symbol +>matchAll : unique symbol >"matchAll" : "matchAll" const array = [...matches]; diff --git a/tests/baselines/reference/requireOfJsonFileWithComputedPropertyName.types b/tests/baselines/reference/requireOfJsonFileWithComputedPropertyName.types index 3fc20bb2cce9d..8b8cb7c64c4de 100644 --- a/tests/baselines/reference/requireOfJsonFileWithComputedPropertyName.types +++ b/tests/baselines/reference/requireOfJsonFileWithComputedPropertyName.types @@ -1,26 +1,26 @@ === tests/cases/compiler/file1.ts === import b1 = require('./b.json'); ->b1 : { [x: number]: number; } +>b1 : { [x: string]: number; } let x = b1; ->x : { [x: number]: number; } ->b1 : { [x: number]: number; } +>x : { [x: string]: number; } +>b1 : { [x: string]: number; } import b2 = require('./b.json'); ->b2 : { [x: number]: number; } +>b2 : { [x: string]: number; } if (x) { ->x : { [x: number]: number; } +>x : { [x: string]: number; } x = b2; ->x = b2 : { [x: number]: number; } ->x : { [x: number]: number; } ->b2 : { [x: number]: number; } +>x = b2 : { [x: string]: number; } +>x : { [x: string]: number; } +>b2 : { [x: string]: number; } } === tests/cases/compiler/b.json === { ->{ [a]: 10} : { [x: number]: number; } +>{ [a]: 10} : { [x: string]: number; } [a]: 10 >[a] : number diff --git a/tests/baselines/reference/superSymbolIndexedAccess2.types b/tests/baselines/reference/superSymbolIndexedAccess2.types index f76c768444066..de4dac377f813 100644 --- a/tests/baselines/reference/superSymbolIndexedAccess2.types +++ b/tests/baselines/reference/superSymbolIndexedAccess2.types @@ -4,9 +4,9 @@ class Foo { [Symbol.isConcatSpreadable]() { >[Symbol.isConcatSpreadable] : () => number ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol return 0; >0 : 0 @@ -19,16 +19,16 @@ class Bar extends Foo { [Symbol.isConcatSpreadable]() { >[Symbol.isConcatSpreadable] : () => number ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol return super[Symbol.isConcatSpreadable](); >super[Symbol.isConcatSpreadable]() : number >super[Symbol.isConcatSpreadable] : () => number >super : Foo ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol } } diff --git a/tests/baselines/reference/symbolDeclarationEmit1.js b/tests/baselines/reference/symbolDeclarationEmit1.js index b8ca5495ba759..e2904372a104a 100644 --- a/tests/baselines/reference/symbolDeclarationEmit1.js +++ b/tests/baselines/reference/symbolDeclarationEmit1.js @@ -6,6 +6,7 @@ class C { //// [symbolDeclarationEmit1.js] class C { } +Symbol.toPrimitive; //// [symbolDeclarationEmit1.d.ts] diff --git a/tests/baselines/reference/symbolDeclarationEmit1.types b/tests/baselines/reference/symbolDeclarationEmit1.types index 0493f5b327274..533f2607167d1 100644 --- a/tests/baselines/reference/symbolDeclarationEmit1.types +++ b/tests/baselines/reference/symbolDeclarationEmit1.types @@ -4,7 +4,7 @@ class C { [Symbol.toPrimitive]: number; >[Symbol.toPrimitive] : number ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol } diff --git a/tests/baselines/reference/symbolDeclarationEmit10.types b/tests/baselines/reference/symbolDeclarationEmit10.types index 9a47c89173979..4492dba079c92 100644 --- a/tests/baselines/reference/symbolDeclarationEmit10.types +++ b/tests/baselines/reference/symbolDeclarationEmit10.types @@ -5,15 +5,15 @@ var obj = { get [Symbol.isConcatSpreadable]() { return '' }, >[Symbol.isConcatSpreadable] : string ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol >'' : "" set [Symbol.isConcatSpreadable](x) { } >[Symbol.isConcatSpreadable] : string ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol >x : string } diff --git a/tests/baselines/reference/symbolDeclarationEmit11.js b/tests/baselines/reference/symbolDeclarationEmit11.js index b0cd9cfddbd5b..dc6ea17829dae 100644 --- a/tests/baselines/reference/symbolDeclarationEmit11.js +++ b/tests/baselines/reference/symbolDeclarationEmit11.js @@ -7,12 +7,13 @@ class C { } //// [symbolDeclarationEmit11.js] +var _a; class C { - static [Symbol.isConcatSpreadable]() { } + static [(_a = Symbol.iterator, Symbol.isConcatSpreadable)]() { } static get [Symbol.toPrimitive]() { return ""; } static set [Symbol.toPrimitive](x) { } } -C[Symbol.iterator] = 0; +C[_a] = 0; //// [symbolDeclarationEmit11.d.ts] diff --git a/tests/baselines/reference/symbolDeclarationEmit11.types b/tests/baselines/reference/symbolDeclarationEmit11.types index 2d9c9a95e0861..9bb3176e99505 100644 --- a/tests/baselines/reference/symbolDeclarationEmit11.types +++ b/tests/baselines/reference/symbolDeclarationEmit11.types @@ -4,28 +4,28 @@ class C { static [Symbol.iterator] = 0; >[Symbol.iterator] : number ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >0 : 0 static [Symbol.isConcatSpreadable]() { } >[Symbol.isConcatSpreadable] : () => void ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol static get [Symbol.toPrimitive]() { return ""; } >[Symbol.toPrimitive] : string ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol >"" : "" static set [Symbol.toPrimitive](x) { } >[Symbol.toPrimitive] : string ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol >x : string } diff --git a/tests/baselines/reference/symbolDeclarationEmit12.errors.txt b/tests/baselines/reference/symbolDeclarationEmit12.errors.txt index d9759c00f6de2..d61dc75af17f9 100644 --- a/tests/baselines/reference/symbolDeclarationEmit12.errors.txt +++ b/tests/baselines/reference/symbolDeclarationEmit12.errors.txt @@ -1,6 +1,6 @@ -tests/cases/conformance/es6/Symbols/symbolDeclarationEmit12.ts(5,9): error TS2300: Duplicate identifier '[Symbol.toPrimitive]'. -tests/cases/conformance/es6/Symbols/symbolDeclarationEmit12.ts(9,13): error TS2300: Duplicate identifier '[Symbol.toPrimitive]'. -tests/cases/conformance/es6/Symbols/symbolDeclarationEmit12.ts(10,13): error TS2300: Duplicate identifier '[Symbol.toPrimitive]'. +tests/cases/conformance/es6/Symbols/symbolDeclarationEmit12.ts(5,9): error TS2733: Property '[Symbol.toPrimitive]' was also declared here. +tests/cases/conformance/es6/Symbols/symbolDeclarationEmit12.ts(9,13): error TS2718: Duplicate property '[Symbol.toPrimitive]'. +tests/cases/conformance/es6/Symbols/symbolDeclarationEmit12.ts(10,13): error TS2718: Duplicate property '[Symbol.toPrimitive]'. ==== tests/cases/conformance/es6/Symbols/symbolDeclarationEmit12.ts (3 errors) ==== @@ -10,15 +10,15 @@ tests/cases/conformance/es6/Symbols/symbolDeclarationEmit12.ts(10,13): error TS2 [Symbol.iterator]: I; [Symbol.toPrimitive](x: I) { } ~~~~~~~~~~~~~~~~~~~~ -!!! error TS2300: Duplicate identifier '[Symbol.toPrimitive]'. +!!! error TS2733: Property '[Symbol.toPrimitive]' was also declared here. [Symbol.isConcatSpreadable](): I { return undefined } get [Symbol.toPrimitive]() { return undefined; } ~~~~~~~~~~~~~~~~~~~~ -!!! error TS2300: Duplicate identifier '[Symbol.toPrimitive]'. +!!! error TS2718: Duplicate property '[Symbol.toPrimitive]'. set [Symbol.toPrimitive](x: I) { } ~~~~~~~~~~~~~~~~~~~~ -!!! error TS2300: Duplicate identifier '[Symbol.toPrimitive]'. +!!! error TS2718: Duplicate property '[Symbol.toPrimitive]'. } } \ No newline at end of file diff --git a/tests/baselines/reference/symbolDeclarationEmit12.js b/tests/baselines/reference/symbolDeclarationEmit12.js index 5d9f70334d44e..74804efe83f00 100644 --- a/tests/baselines/reference/symbolDeclarationEmit12.js +++ b/tests/baselines/reference/symbolDeclarationEmit12.js @@ -16,7 +16,7 @@ module M { var M; (function (M) { class C { - [Symbol.toPrimitive](x) { } + [(Symbol.iterator, Symbol.toPrimitive)](x) { } [Symbol.isConcatSpreadable]() { return undefined; } diff --git a/tests/baselines/reference/symbolDeclarationEmit12.types b/tests/baselines/reference/symbolDeclarationEmit12.types index 9768972dcae27..087b9f52f702f 100644 --- a/tests/baselines/reference/symbolDeclarationEmit12.types +++ b/tests/baselines/reference/symbolDeclarationEmit12.types @@ -8,38 +8,38 @@ module M { [Symbol.iterator]: I; >[Symbol.iterator] : I ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol [Symbol.toPrimitive](x: I) { } >[Symbol.toPrimitive] : (x: I) => void ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol >x : I [Symbol.isConcatSpreadable](): I { >[Symbol.isConcatSpreadable] : () => I ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol return undefined >undefined : undefined } get [Symbol.toPrimitive]() { return undefined; } >[Symbol.toPrimitive] : any ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol >undefined : undefined set [Symbol.toPrimitive](x: I) { } >[Symbol.toPrimitive] : I ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol >x : I } } diff --git a/tests/baselines/reference/symbolDeclarationEmit13.types b/tests/baselines/reference/symbolDeclarationEmit13.types index 26e2087c2e9c4..9ffb1d8fbf18e 100644 --- a/tests/baselines/reference/symbolDeclarationEmit13.types +++ b/tests/baselines/reference/symbolDeclarationEmit13.types @@ -4,15 +4,15 @@ class C { get [Symbol.toPrimitive]() { return ""; } >[Symbol.toPrimitive] : string ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol >"" : "" set [Symbol.toStringTag](x) { } >[Symbol.toStringTag] : any ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol >x : any } diff --git a/tests/baselines/reference/symbolDeclarationEmit14.types b/tests/baselines/reference/symbolDeclarationEmit14.types index e8e2490e9fe96..daf81242ecb46 100644 --- a/tests/baselines/reference/symbolDeclarationEmit14.types +++ b/tests/baselines/reference/symbolDeclarationEmit14.types @@ -4,15 +4,15 @@ class C { get [Symbol.toPrimitive]() { return ""; } >[Symbol.toPrimitive] : string ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol >"" : "" get [Symbol.toStringTag]() { return ""; } >[Symbol.toStringTag] : string ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol >"" : "" } diff --git a/tests/baselines/reference/symbolDeclarationEmit2.js b/tests/baselines/reference/symbolDeclarationEmit2.js index 3fde1f6b46762..ae649b3d62afd 100644 --- a/tests/baselines/reference/symbolDeclarationEmit2.js +++ b/tests/baselines/reference/symbolDeclarationEmit2.js @@ -4,11 +4,13 @@ class C { } //// [symbolDeclarationEmit2.js] +var _a; class C { constructor() { - this[Symbol.toPrimitive] = ""; + this[_a] = ""; } } +_a = Symbol.toPrimitive; //// [symbolDeclarationEmit2.d.ts] diff --git a/tests/baselines/reference/symbolDeclarationEmit2.types b/tests/baselines/reference/symbolDeclarationEmit2.types index e12781ad742f6..1796f23fa064c 100644 --- a/tests/baselines/reference/symbolDeclarationEmit2.types +++ b/tests/baselines/reference/symbolDeclarationEmit2.types @@ -4,8 +4,8 @@ class C { [Symbol.toPrimitive] = ""; >[Symbol.toPrimitive] : string ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol >"" : "" } diff --git a/tests/baselines/reference/symbolDeclarationEmit3.types b/tests/baselines/reference/symbolDeclarationEmit3.types index 7166bc3fa931b..3b8e37f5188e0 100644 --- a/tests/baselines/reference/symbolDeclarationEmit3.types +++ b/tests/baselines/reference/symbolDeclarationEmit3.types @@ -4,22 +4,22 @@ class C { [Symbol.toPrimitive](x: number); >[Symbol.toPrimitive] : { (x: number): any; (x: string): any; } ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol >x : number [Symbol.toPrimitive](x: string); >[Symbol.toPrimitive] : { (x: number): any; (x: string): any; } ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol >x : string [Symbol.toPrimitive](x: any) { } >[Symbol.toPrimitive] : { (x: number): any; (x: string): any; } ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol >x : any } diff --git a/tests/baselines/reference/symbolDeclarationEmit4.types b/tests/baselines/reference/symbolDeclarationEmit4.types index e73791f6901ab..347ac0943de63 100644 --- a/tests/baselines/reference/symbolDeclarationEmit4.types +++ b/tests/baselines/reference/symbolDeclarationEmit4.types @@ -4,15 +4,15 @@ class C { get [Symbol.toPrimitive]() { return ""; } >[Symbol.toPrimitive] : string ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol >"" : "" set [Symbol.toPrimitive](x) { } >[Symbol.toPrimitive] : string ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol >x : string } diff --git a/tests/baselines/reference/symbolDeclarationEmit5.types b/tests/baselines/reference/symbolDeclarationEmit5.types index 5a9508639fdf3..36382d87de1b9 100644 --- a/tests/baselines/reference/symbolDeclarationEmit5.types +++ b/tests/baselines/reference/symbolDeclarationEmit5.types @@ -2,7 +2,7 @@ interface I { [Symbol.isConcatSpreadable](): string; >[Symbol.isConcatSpreadable] : () => string ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol } diff --git a/tests/baselines/reference/symbolDeclarationEmit6.types b/tests/baselines/reference/symbolDeclarationEmit6.types index b4d6cf6d1e426..31f5ef32c9d3e 100644 --- a/tests/baselines/reference/symbolDeclarationEmit6.types +++ b/tests/baselines/reference/symbolDeclarationEmit6.types @@ -2,7 +2,7 @@ interface I { [Symbol.isConcatSpreadable]: string; >[Symbol.isConcatSpreadable] : string ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol } diff --git a/tests/baselines/reference/symbolDeclarationEmit7.types b/tests/baselines/reference/symbolDeclarationEmit7.types index 207d3f0bab052..2166dfd46788c 100644 --- a/tests/baselines/reference/symbolDeclarationEmit7.types +++ b/tests/baselines/reference/symbolDeclarationEmit7.types @@ -4,7 +4,7 @@ var obj: { [Symbol.isConcatSpreadable]: string; >[Symbol.isConcatSpreadable] : string ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol } diff --git a/tests/baselines/reference/symbolDeclarationEmit8.types b/tests/baselines/reference/symbolDeclarationEmit8.types index bf8309e4cdede..98dbc63529681 100644 --- a/tests/baselines/reference/symbolDeclarationEmit8.types +++ b/tests/baselines/reference/symbolDeclarationEmit8.types @@ -5,8 +5,8 @@ var obj = { [Symbol.isConcatSpreadable]: 0 >[Symbol.isConcatSpreadable] : number ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol >0 : 0 } diff --git a/tests/baselines/reference/symbolDeclarationEmit9.types b/tests/baselines/reference/symbolDeclarationEmit9.types index 176009d28c9f5..532abeb103663 100644 --- a/tests/baselines/reference/symbolDeclarationEmit9.types +++ b/tests/baselines/reference/symbolDeclarationEmit9.types @@ -5,7 +5,7 @@ var obj = { [Symbol.isConcatSpreadable]() { } >[Symbol.isConcatSpreadable] : () => void ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol } diff --git a/tests/baselines/reference/symbolProperty10.js b/tests/baselines/reference/symbolProperty10.js index 74bcf886461e5..7e4d14c1622e3 100644 --- a/tests/baselines/reference/symbolProperty10.js +++ b/tests/baselines/reference/symbolProperty10.js @@ -13,6 +13,7 @@ var c: C = i; //// [symbolProperty10.js] class C { } +Symbol.iterator; var i; i = new C; var c = i; diff --git a/tests/baselines/reference/symbolProperty10.types b/tests/baselines/reference/symbolProperty10.types index 1d474ddab4d05..96a4c57df5063 100644 --- a/tests/baselines/reference/symbolProperty10.types +++ b/tests/baselines/reference/symbolProperty10.types @@ -4,18 +4,18 @@ class C { [Symbol.iterator]: { x; y }; >[Symbol.iterator] : { x: any; y: any; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : any >y : any } interface I { [Symbol.iterator]?: { x }; >[Symbol.iterator] : { x: any; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : any } diff --git a/tests/baselines/reference/symbolProperty11.types b/tests/baselines/reference/symbolProperty11.types index 5df8a06544b9b..49ed305d9f578 100644 --- a/tests/baselines/reference/symbolProperty11.types +++ b/tests/baselines/reference/symbolProperty11.types @@ -5,9 +5,9 @@ class C { } interface I { [Symbol.iterator]?: { x }; >[Symbol.iterator] : { x: any; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : any } diff --git a/tests/baselines/reference/symbolProperty12.js b/tests/baselines/reference/symbolProperty12.js index 474ec4a0ffad8..b59633f3314a8 100644 --- a/tests/baselines/reference/symbolProperty12.js +++ b/tests/baselines/reference/symbolProperty12.js @@ -13,6 +13,7 @@ var c: C = i; //// [symbolProperty12.js] class C { } +Symbol.iterator; var i; i = new C; var c = i; diff --git a/tests/baselines/reference/symbolProperty12.types b/tests/baselines/reference/symbolProperty12.types index 97cae402a9551..d003612f090c2 100644 --- a/tests/baselines/reference/symbolProperty12.types +++ b/tests/baselines/reference/symbolProperty12.types @@ -4,17 +4,17 @@ class C { private [Symbol.iterator]: { x }; >[Symbol.iterator] : { x: any; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : any } interface I { [Symbol.iterator]: { x }; >[Symbol.iterator] : { x: any; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : any } diff --git a/tests/baselines/reference/symbolProperty13.js b/tests/baselines/reference/symbolProperty13.js index d7620d01159dc..4b44317b27f4f 100644 --- a/tests/baselines/reference/symbolProperty13.js +++ b/tests/baselines/reference/symbolProperty13.js @@ -19,6 +19,7 @@ bar(i); //// [symbolProperty13.js] class C { } +Symbol.iterator; foo(new C); var i; bar(i); diff --git a/tests/baselines/reference/symbolProperty13.types b/tests/baselines/reference/symbolProperty13.types index 7e407c1effb23..9540935263840 100644 --- a/tests/baselines/reference/symbolProperty13.types +++ b/tests/baselines/reference/symbolProperty13.types @@ -4,18 +4,18 @@ class C { [Symbol.iterator]: { x; y }; >[Symbol.iterator] : { x: any; y: any; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : any >y : any } interface I { [Symbol.iterator]: { x }; >[Symbol.iterator] : { x: any; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : any } diff --git a/tests/baselines/reference/symbolProperty14.js b/tests/baselines/reference/symbolProperty14.js index 716bc68b43029..5244aebfc4b16 100644 --- a/tests/baselines/reference/symbolProperty14.js +++ b/tests/baselines/reference/symbolProperty14.js @@ -19,6 +19,7 @@ bar(i); //// [symbolProperty14.js] class C { } +Symbol.iterator; foo(new C); var i; bar(i); diff --git a/tests/baselines/reference/symbolProperty14.types b/tests/baselines/reference/symbolProperty14.types index 2d8e22f3c4521..76dfff5e1f78b 100644 --- a/tests/baselines/reference/symbolProperty14.types +++ b/tests/baselines/reference/symbolProperty14.types @@ -4,18 +4,18 @@ class C { [Symbol.iterator]: { x; y }; >[Symbol.iterator] : { x: any; y: any; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : any >y : any } interface I { [Symbol.iterator]?: { x }; >[Symbol.iterator] : { x: any; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : any } diff --git a/tests/baselines/reference/symbolProperty15.types b/tests/baselines/reference/symbolProperty15.types index 7c19f01d8bdf7..2bb074d58c02a 100644 --- a/tests/baselines/reference/symbolProperty15.types +++ b/tests/baselines/reference/symbolProperty15.types @@ -5,9 +5,9 @@ class C { } interface I { [Symbol.iterator]?: { x }; >[Symbol.iterator] : { x: any; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : any } diff --git a/tests/baselines/reference/symbolProperty16.js b/tests/baselines/reference/symbolProperty16.js index 1382d913104f9..54e826db86cf3 100644 --- a/tests/baselines/reference/symbolProperty16.js +++ b/tests/baselines/reference/symbolProperty16.js @@ -19,6 +19,7 @@ bar(i); //// [symbolProperty16.js] class C { } +Symbol.iterator; foo(new C); var i; bar(i); diff --git a/tests/baselines/reference/symbolProperty16.types b/tests/baselines/reference/symbolProperty16.types index 9aa19d53adc0b..5b271dbc76c35 100644 --- a/tests/baselines/reference/symbolProperty16.types +++ b/tests/baselines/reference/symbolProperty16.types @@ -4,17 +4,17 @@ class C { private [Symbol.iterator]: { x }; >[Symbol.iterator] : { x: any; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : any } interface I { [Symbol.iterator]: { x }; >[Symbol.iterator] : { x: any; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : any } diff --git a/tests/baselines/reference/symbolProperty17.types b/tests/baselines/reference/symbolProperty17.types index 75c3ec4b609ca..2ed8dc1fe0208 100644 --- a/tests/baselines/reference/symbolProperty17.types +++ b/tests/baselines/reference/symbolProperty17.types @@ -2,9 +2,9 @@ interface I { [Symbol.iterator]: number; >[Symbol.iterator] : number ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol [s: symbol]: string; >s : symbol @@ -20,7 +20,7 @@ var it = i[Symbol.iterator]; >it : number >i[Symbol.iterator] : number >i : I ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol diff --git a/tests/baselines/reference/symbolProperty18.types b/tests/baselines/reference/symbolProperty18.types index 4a4d9e413ae5e..520ce8e96bed3 100644 --- a/tests/baselines/reference/symbolProperty18.types +++ b/tests/baselines/reference/symbolProperty18.types @@ -5,23 +5,23 @@ var i = { [Symbol.iterator]: 0, >[Symbol.iterator] : number ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >0 : 0 [Symbol.toStringTag]() { return "" }, >[Symbol.toStringTag] : () => string ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol >"" : "" set [Symbol.toPrimitive](p: boolean) { } >[Symbol.toPrimitive] : boolean ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol >p : boolean } @@ -29,25 +29,25 @@ var it = i[Symbol.iterator]; >it : number >i[Symbol.iterator] : number >i : { [Symbol.iterator]: number; [Symbol.toStringTag](): string; [Symbol.toPrimitive]: boolean; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol var str = i[Symbol.toStringTag](); >str : string >i[Symbol.toStringTag]() : string >i[Symbol.toStringTag] : () => string >i : { [Symbol.iterator]: number; [Symbol.toStringTag](): string; [Symbol.toPrimitive]: boolean; } ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol i[Symbol.toPrimitive] = false; >i[Symbol.toPrimitive] = false : false >i[Symbol.toPrimitive] : boolean >i : { [Symbol.iterator]: number; [Symbol.toStringTag](): string; [Symbol.toPrimitive]: boolean; } ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol >false : false diff --git a/tests/baselines/reference/symbolProperty19.types b/tests/baselines/reference/symbolProperty19.types index 8d369de58c2d0..5483416f24003 100644 --- a/tests/baselines/reference/symbolProperty19.types +++ b/tests/baselines/reference/symbolProperty19.types @@ -5,18 +5,18 @@ var i = { [Symbol.iterator]: { p: null }, >[Symbol.iterator] : { p: null; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >{ p: null } : { p: null; } >p : null >null : null [Symbol.toStringTag]() { return { p: undefined }; } >[Symbol.toStringTag] : () => { p: any; } ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol >{ p: undefined } : { p: undefined; } >p : undefined >undefined : undefined @@ -26,16 +26,16 @@ var it = i[Symbol.iterator]; >it : { p: any; } >i[Symbol.iterator] : { p: any; } >i : { [Symbol.iterator]: { p: any; }; [Symbol.toStringTag](): { p: any; }; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol var str = i[Symbol.toStringTag](); >str : { p: any; } >i[Symbol.toStringTag]() : { p: any; } >i[Symbol.toStringTag] : () => { p: any; } >i : { [Symbol.iterator]: { p: any; }; [Symbol.toStringTag](): { p: any; }; } ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol diff --git a/tests/baselines/reference/symbolProperty20.types b/tests/baselines/reference/symbolProperty20.types index 2d02cc511f4b2..e0edaa5671554 100644 --- a/tests/baselines/reference/symbolProperty20.types +++ b/tests/baselines/reference/symbolProperty20.types @@ -2,16 +2,16 @@ interface I { [Symbol.iterator]: (s: string) => string; >[Symbol.iterator] : (s: string) => string ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >s : string [Symbol.toStringTag](s: number): number; >[Symbol.toStringTag] : (s: number) => number ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol >s : number } @@ -21,18 +21,18 @@ var i: I = { [Symbol.iterator]: s => s, >[Symbol.iterator] : (s: string) => string ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >s => s : (s: string) => string >s : string >s : string [Symbol.toStringTag](n) { return n; } >[Symbol.toStringTag] : (n: number) => number ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol >n : number >n : number } diff --git a/tests/baselines/reference/symbolProperty21.types b/tests/baselines/reference/symbolProperty21.types index da584b488f526..60b2460c7cbf5 100644 --- a/tests/baselines/reference/symbolProperty21.types +++ b/tests/baselines/reference/symbolProperty21.types @@ -2,15 +2,15 @@ interface I { [Symbol.unscopables]: T; >[Symbol.unscopables] : T ->Symbol.unscopables : symbol +>Symbol.unscopables : unique symbol >Symbol : SymbolConstructor ->unscopables : symbol +>unscopables : unique symbol [Symbol.isConcatSpreadable]: U; >[Symbol.isConcatSpreadable] : U ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol } declare function foo(p: I): { t: T; u: U }; @@ -26,23 +26,23 @@ foo({ [Symbol.isConcatSpreadable]: "", >[Symbol.isConcatSpreadable] : string ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol >"" : "" [Symbol.toPrimitive]: 0, >[Symbol.toPrimitive] : number ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol >0 : 0 [Symbol.unscopables]: true >[Symbol.unscopables] : true ->Symbol.unscopables : symbol +>Symbol.unscopables : unique symbol >Symbol : SymbolConstructor ->unscopables : symbol +>unscopables : unique symbol >true : true }); diff --git a/tests/baselines/reference/symbolProperty22.types b/tests/baselines/reference/symbolProperty22.types index 88b2cdd7ecd2e..a0db26a36daf9 100644 --- a/tests/baselines/reference/symbolProperty22.types +++ b/tests/baselines/reference/symbolProperty22.types @@ -2,9 +2,9 @@ interface I { [Symbol.unscopables](x: T): U; >[Symbol.unscopables] : (x: T) => U ->Symbol.unscopables : symbol +>Symbol.unscopables : unique symbol >Symbol : SymbolConstructor ->unscopables : symbol +>unscopables : unique symbol >x : T } @@ -19,9 +19,9 @@ foo("", { [Symbol.unscopables]: s => s.length }); >"" : "" >{ [Symbol.unscopables]: s => s.length } : { [Symbol.unscopables]: (s: string) => number; } >[Symbol.unscopables] : (s: string) => number ->Symbol.unscopables : symbol +>Symbol.unscopables : unique symbol >Symbol : SymbolConstructor ->unscopables : symbol +>unscopables : unique symbol >s => s.length : (s: string) => number >s : string >s.length : number diff --git a/tests/baselines/reference/symbolProperty23.types b/tests/baselines/reference/symbolProperty23.types index f694d3b9e7fe4..f5cc5653434b3 100644 --- a/tests/baselines/reference/symbolProperty23.types +++ b/tests/baselines/reference/symbolProperty23.types @@ -2,9 +2,9 @@ interface I { [Symbol.toPrimitive]: () => boolean; >[Symbol.toPrimitive] : () => boolean ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol } class C implements I { @@ -12,9 +12,9 @@ class C implements I { [Symbol.toPrimitive]() { >[Symbol.toPrimitive] : () => boolean ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol return true; >true : true diff --git a/tests/baselines/reference/symbolProperty24.types b/tests/baselines/reference/symbolProperty24.types index 6a363c6c01187..e0f3e3cb6a172 100644 --- a/tests/baselines/reference/symbolProperty24.types +++ b/tests/baselines/reference/symbolProperty24.types @@ -2,9 +2,9 @@ interface I { [Symbol.toPrimitive]: () => boolean; >[Symbol.toPrimitive] : () => boolean ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol } class C implements I { @@ -12,9 +12,9 @@ class C implements I { [Symbol.toPrimitive]() { >[Symbol.toPrimitive] : () => string ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol return ""; >"" : "" diff --git a/tests/baselines/reference/symbolProperty25.types b/tests/baselines/reference/symbolProperty25.types index 3a2e3b209989c..ceac927fd080b 100644 --- a/tests/baselines/reference/symbolProperty25.types +++ b/tests/baselines/reference/symbolProperty25.types @@ -2,9 +2,9 @@ interface I { [Symbol.toPrimitive]: () => boolean; >[Symbol.toPrimitive] : () => boolean ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol } class C implements I { @@ -12,9 +12,9 @@ class C implements I { [Symbol.toStringTag]() { >[Symbol.toStringTag] : () => string ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol return ""; >"" : "" diff --git a/tests/baselines/reference/symbolProperty26.types b/tests/baselines/reference/symbolProperty26.types index abea57bd6903e..a79626467899c 100644 --- a/tests/baselines/reference/symbolProperty26.types +++ b/tests/baselines/reference/symbolProperty26.types @@ -4,9 +4,9 @@ class C1 { [Symbol.toStringTag]() { >[Symbol.toStringTag] : () => string ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol return ""; >"" : "" @@ -19,9 +19,9 @@ class C2 extends C1 { [Symbol.toStringTag]() { >[Symbol.toStringTag] : () => string ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol return ""; >"" : "" diff --git a/tests/baselines/reference/symbolProperty27.types b/tests/baselines/reference/symbolProperty27.types index b27ffdff71339..98ae6c0784e81 100644 --- a/tests/baselines/reference/symbolProperty27.types +++ b/tests/baselines/reference/symbolProperty27.types @@ -4,9 +4,9 @@ class C1 { [Symbol.toStringTag]() { >[Symbol.toStringTag] : () => {} ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol return {}; >{} : {} @@ -19,9 +19,9 @@ class C2 extends C1 { [Symbol.toStringTag]() { >[Symbol.toStringTag] : () => string ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol return ""; >"" : "" diff --git a/tests/baselines/reference/symbolProperty28.types b/tests/baselines/reference/symbolProperty28.types index b6519966fc56d..de725c5931afb 100644 --- a/tests/baselines/reference/symbolProperty28.types +++ b/tests/baselines/reference/symbolProperty28.types @@ -4,9 +4,9 @@ class C1 { [Symbol.toStringTag]() { >[Symbol.toStringTag] : () => { x: string; } ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol return { x: "" }; >{ x: "" } : { x: string; } @@ -28,8 +28,8 @@ var obj = c[Symbol.toStringTag]().x; >c[Symbol.toStringTag]() : { x: string; } >c[Symbol.toStringTag] : () => { x: string; } >c : C2 ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol >x : string diff --git a/tests/baselines/reference/symbolProperty29.types b/tests/baselines/reference/symbolProperty29.types index f4388acb041b2..e4c5bec1e7943 100644 --- a/tests/baselines/reference/symbolProperty29.types +++ b/tests/baselines/reference/symbolProperty29.types @@ -4,9 +4,9 @@ class C1 { [Symbol.toStringTag]() { >[Symbol.toStringTag] : () => { x: string; } ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol return { x: "" }; >{ x: "" } : { x: string; } diff --git a/tests/baselines/reference/symbolProperty30.types b/tests/baselines/reference/symbolProperty30.types index 6d66de0fc8a28..5464ea908e7f9 100644 --- a/tests/baselines/reference/symbolProperty30.types +++ b/tests/baselines/reference/symbolProperty30.types @@ -4,9 +4,9 @@ class C1 { [Symbol.toStringTag]() { >[Symbol.toStringTag] : () => { x: string; } ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol return { x: "" }; >{ x: "" } : { x: string; } diff --git a/tests/baselines/reference/symbolProperty31.types b/tests/baselines/reference/symbolProperty31.types index 82c4df523c478..f1e6b72793e74 100644 --- a/tests/baselines/reference/symbolProperty31.types +++ b/tests/baselines/reference/symbolProperty31.types @@ -4,9 +4,9 @@ class C1 { [Symbol.toStringTag]() { >[Symbol.toStringTag] : () => { x: string; } ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol return { x: "" }; >{ x: "" } : { x: string; } diff --git a/tests/baselines/reference/symbolProperty32.types b/tests/baselines/reference/symbolProperty32.types index bf899308c0ac3..2db3c1092f077 100644 --- a/tests/baselines/reference/symbolProperty32.types +++ b/tests/baselines/reference/symbolProperty32.types @@ -4,9 +4,9 @@ class C1 { [Symbol.toStringTag]() { >[Symbol.toStringTag] : () => { x: string; } ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol return { x: "" }; >{ x: "" } : { x: string; } diff --git a/tests/baselines/reference/symbolProperty33.types b/tests/baselines/reference/symbolProperty33.types index b8ae732ca17bf..6f85c4f06d15e 100644 --- a/tests/baselines/reference/symbolProperty33.types +++ b/tests/baselines/reference/symbolProperty33.types @@ -5,9 +5,9 @@ class C1 extends C2 { [Symbol.toStringTag]() { >[Symbol.toStringTag] : () => { x: string; } ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol return { x: "" }; >{ x: "" } : { x: string; } diff --git a/tests/baselines/reference/symbolProperty34.types b/tests/baselines/reference/symbolProperty34.types index 724c676f26c68..de0b7268abd71 100644 --- a/tests/baselines/reference/symbolProperty34.types +++ b/tests/baselines/reference/symbolProperty34.types @@ -5,9 +5,9 @@ class C1 extends C2 { [Symbol.toStringTag]() { >[Symbol.toStringTag] : () => { x: string; } ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol return { x: "" }; >{ x: "" } : { x: string; } diff --git a/tests/baselines/reference/symbolProperty35.types b/tests/baselines/reference/symbolProperty35.types index fb3b8420022c1..08b9f2c74702e 100644 --- a/tests/baselines/reference/symbolProperty35.types +++ b/tests/baselines/reference/symbolProperty35.types @@ -2,17 +2,17 @@ interface I1 { [Symbol.toStringTag](): { x: string } >[Symbol.toStringTag] : () => { x: string;} ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol >x : string } interface I2 { [Symbol.toStringTag](): { x: number } >[Symbol.toStringTag] : () => { x: number;} ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol >x : number } diff --git a/tests/baselines/reference/symbolProperty36.errors.txt b/tests/baselines/reference/symbolProperty36.errors.txt deleted file mode 100644 index 69102da1db387..0000000000000 --- a/tests/baselines/reference/symbolProperty36.errors.txt +++ /dev/null @@ -1,10 +0,0 @@ -tests/cases/conformance/es6/Symbols/symbolProperty36.ts(3,5): error TS2300: Duplicate identifier '[Symbol.isConcatSpreadable]'. - - -==== tests/cases/conformance/es6/Symbols/symbolProperty36.ts (1 errors) ==== - var x = { - [Symbol.isConcatSpreadable]: 0, - [Symbol.isConcatSpreadable]: 1 - ~~~~~~~~~~~~~~~~~~~~~~~~~~~ -!!! error TS2300: Duplicate identifier '[Symbol.isConcatSpreadable]'. - } \ No newline at end of file diff --git a/tests/baselines/reference/symbolProperty36.types b/tests/baselines/reference/symbolProperty36.types index afd80a19c9f1e..734f28f2dbb78 100644 --- a/tests/baselines/reference/symbolProperty36.types +++ b/tests/baselines/reference/symbolProperty36.types @@ -5,15 +5,15 @@ var x = { [Symbol.isConcatSpreadable]: 0, >[Symbol.isConcatSpreadable] : number ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol >0 : 0 [Symbol.isConcatSpreadable]: 1 >[Symbol.isConcatSpreadable] : number ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol >1 : 1 } diff --git a/tests/baselines/reference/symbolProperty37.types b/tests/baselines/reference/symbolProperty37.types index d55beb7bc100d..4984753126eb3 100644 --- a/tests/baselines/reference/symbolProperty37.types +++ b/tests/baselines/reference/symbolProperty37.types @@ -2,13 +2,13 @@ interface I { [Symbol.isConcatSpreadable]: string; >[Symbol.isConcatSpreadable] : string ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol [Symbol.isConcatSpreadable]: string; >[Symbol.isConcatSpreadable] : string ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol } diff --git a/tests/baselines/reference/symbolProperty38.types b/tests/baselines/reference/symbolProperty38.types index 83c7a31b111f6..adb9dee95583a 100644 --- a/tests/baselines/reference/symbolProperty38.types +++ b/tests/baselines/reference/symbolProperty38.types @@ -2,14 +2,14 @@ interface I { [Symbol.isConcatSpreadable]: string; >[Symbol.isConcatSpreadable] : string ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol } interface I { [Symbol.isConcatSpreadable]: string; >[Symbol.isConcatSpreadable] : string ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol } diff --git a/tests/baselines/reference/symbolProperty39.types b/tests/baselines/reference/symbolProperty39.types index 90a5fcd375e35..33461d4d1a770 100644 --- a/tests/baselines/reference/symbolProperty39.types +++ b/tests/baselines/reference/symbolProperty39.types @@ -4,23 +4,23 @@ class C { [Symbol.iterator](x: string): string; >[Symbol.iterator] : { (x: string): string; (x: number): number; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : string [Symbol.iterator](x: number): number; >[Symbol.iterator] : { (x: string): string; (x: number): number; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : number [Symbol.iterator](x: any) { >[Symbol.iterator] : { (x: string): string; (x: number): number; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : any return undefined; @@ -28,9 +28,9 @@ class C { } [Symbol.iterator](x: any) { >[Symbol.iterator] : { (x: string): string; (x: number): number; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : any return undefined; diff --git a/tests/baselines/reference/symbolProperty40.types b/tests/baselines/reference/symbolProperty40.types index ca65adaa0bc3c..fe94507019b33 100644 --- a/tests/baselines/reference/symbolProperty40.types +++ b/tests/baselines/reference/symbolProperty40.types @@ -4,23 +4,23 @@ class C { [Symbol.iterator](x: string): string; >[Symbol.iterator] : { (x: string): string; (x: number): number; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : string [Symbol.iterator](x: number): number; >[Symbol.iterator] : { (x: string): string; (x: number): number; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : number [Symbol.iterator](x: any) { >[Symbol.iterator] : { (x: string): string; (x: number): number; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : any return undefined; @@ -37,17 +37,17 @@ c[Symbol.iterator](""); >c[Symbol.iterator]("") : string >c[Symbol.iterator] : { (x: string): string; (x: number): number; } >c : C ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >"" : "" c[Symbol.iterator](0); >c[Symbol.iterator](0) : number >c[Symbol.iterator] : { (x: string): string; (x: number): number; } >c : C ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >0 : 0 diff --git a/tests/baselines/reference/symbolProperty41.types b/tests/baselines/reference/symbolProperty41.types index 4991af55277db..1c005b4328145 100644 --- a/tests/baselines/reference/symbolProperty41.types +++ b/tests/baselines/reference/symbolProperty41.types @@ -4,26 +4,26 @@ class C { [Symbol.iterator](x: string): { x: string }; >[Symbol.iterator] : { (x: string): { x: string;}; (x: "hello"): { x: string; hello: string; }; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : string >x : string [Symbol.iterator](x: "hello"): { x: string; hello: string }; >[Symbol.iterator] : { (x: string): { x: string; }; (x: "hello"): { x: string; hello: string;}; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : "hello" >x : string >hello : string [Symbol.iterator](x: any) { >[Symbol.iterator] : { (x: string): { x: string; }; (x: "hello"): { x: string; hello: string; }; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : any return undefined; @@ -40,17 +40,17 @@ c[Symbol.iterator](""); >c[Symbol.iterator]("") : { x: string; } >c[Symbol.iterator] : { (x: string): { x: string; }; (x: "hello"): { x: string; hello: string; }; } >c : C ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >"" : "" c[Symbol.iterator]("hello"); >c[Symbol.iterator]("hello") : { x: string; hello: string; } >c[Symbol.iterator] : { (x: string): { x: string; }; (x: "hello"): { x: string; hello: string; }; } >c : C ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >"hello" : "hello" diff --git a/tests/baselines/reference/symbolProperty42.types b/tests/baselines/reference/symbolProperty42.types index 72fa0138bab31..b5ed285f12196 100644 --- a/tests/baselines/reference/symbolProperty42.types +++ b/tests/baselines/reference/symbolProperty42.types @@ -4,23 +4,23 @@ class C { [Symbol.iterator](x: string): string; >[Symbol.iterator] : { (x: string): string; (x: any): any; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : string static [Symbol.iterator](x: number): number; >[Symbol.iterator] : (x: number) => number ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : number [Symbol.iterator](x: any) { >[Symbol.iterator] : { (x: string): string; (x: any): any; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : any return undefined; diff --git a/tests/baselines/reference/symbolProperty43.types b/tests/baselines/reference/symbolProperty43.types index b4ffaeac9bd31..94ef7b692a203 100644 --- a/tests/baselines/reference/symbolProperty43.types +++ b/tests/baselines/reference/symbolProperty43.types @@ -4,15 +4,15 @@ class C { [Symbol.iterator](x: string): string; >[Symbol.iterator] : { (x: string): string; (x: number): number; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : string [Symbol.iterator](x: number): number; >[Symbol.iterator] : { (x: string): string; (x: number): number; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : number } diff --git a/tests/baselines/reference/symbolProperty44.errors.txt b/tests/baselines/reference/symbolProperty44.errors.txt index 2cef480e73664..6f614d609abdb 100644 --- a/tests/baselines/reference/symbolProperty44.errors.txt +++ b/tests/baselines/reference/symbolProperty44.errors.txt @@ -1,17 +1,17 @@ -tests/cases/conformance/es6/Symbols/symbolProperty44.ts(2,9): error TS2300: Duplicate identifier '[Symbol.hasInstance]'. -tests/cases/conformance/es6/Symbols/symbolProperty44.ts(5,9): error TS2300: Duplicate identifier '[Symbol.hasInstance]'. +tests/cases/conformance/es6/Symbols/symbolProperty44.ts(2,9): error TS2733: Property '[Symbol.hasInstance]' was also declared here. +tests/cases/conformance/es6/Symbols/symbolProperty44.ts(5,9): error TS2718: Duplicate property '[Symbol.hasInstance]'. ==== tests/cases/conformance/es6/Symbols/symbolProperty44.ts (2 errors) ==== class C { get [Symbol.hasInstance]() { ~~~~~~~~~~~~~~~~~~~~ -!!! error TS2300: Duplicate identifier '[Symbol.hasInstance]'. +!!! error TS2733: Property '[Symbol.hasInstance]' was also declared here. return ""; } get [Symbol.hasInstance]() { ~~~~~~~~~~~~~~~~~~~~ -!!! error TS2300: Duplicate identifier '[Symbol.hasInstance]'. +!!! error TS2718: Duplicate property '[Symbol.hasInstance]'. return ""; } } \ No newline at end of file diff --git a/tests/baselines/reference/symbolProperty44.types b/tests/baselines/reference/symbolProperty44.types index 2900c3eebc0f6..6206f1062062e 100644 --- a/tests/baselines/reference/symbolProperty44.types +++ b/tests/baselines/reference/symbolProperty44.types @@ -4,18 +4,18 @@ class C { get [Symbol.hasInstance]() { >[Symbol.hasInstance] : string ->Symbol.hasInstance : symbol +>Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor ->hasInstance : symbol +>hasInstance : unique symbol return ""; >"" : "" } get [Symbol.hasInstance]() { >[Symbol.hasInstance] : string ->Symbol.hasInstance : symbol +>Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor ->hasInstance : symbol +>hasInstance : unique symbol return ""; >"" : "" diff --git a/tests/baselines/reference/symbolProperty45.types b/tests/baselines/reference/symbolProperty45.types index 674a262fcd633..4d5e4657f1868 100644 --- a/tests/baselines/reference/symbolProperty45.types +++ b/tests/baselines/reference/symbolProperty45.types @@ -4,18 +4,18 @@ class C { get [Symbol.hasInstance]() { >[Symbol.hasInstance] : string ->Symbol.hasInstance : symbol +>Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor ->hasInstance : symbol +>hasInstance : unique symbol return ""; >"" : "" } get [Symbol.toPrimitive]() { >[Symbol.toPrimitive] : string ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol return ""; >"" : "" diff --git a/tests/baselines/reference/symbolProperty46.types b/tests/baselines/reference/symbolProperty46.types index afdda60c51078..9ef3873ba591d 100644 --- a/tests/baselines/reference/symbolProperty46.types +++ b/tests/baselines/reference/symbolProperty46.types @@ -4,9 +4,9 @@ class C { get [Symbol.hasInstance]() { >[Symbol.hasInstance] : string ->Symbol.hasInstance : symbol +>Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor ->hasInstance : symbol +>hasInstance : unique symbol return ""; >"" : "" @@ -14,9 +14,9 @@ class C { // Should take a string set [Symbol.hasInstance](x) { >[Symbol.hasInstance] : string ->Symbol.hasInstance : symbol +>Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor ->hasInstance : symbol +>hasInstance : unique symbol >x : string } } @@ -27,9 +27,9 @@ class C { >(new C) : C >new C : C >C : typeof C ->Symbol.hasInstance : symbol +>Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor ->hasInstance : symbol +>hasInstance : unique symbol >0 : 0 (new C)[Symbol.hasInstance] = ""; @@ -38,8 +38,8 @@ class C { >(new C) : C >new C : C >C : typeof C ->Symbol.hasInstance : symbol +>Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor ->hasInstance : symbol +>hasInstance : unique symbol >"" : "" diff --git a/tests/baselines/reference/symbolProperty47.types b/tests/baselines/reference/symbolProperty47.types index af01c5e74a74a..59937f3208457 100644 --- a/tests/baselines/reference/symbolProperty47.types +++ b/tests/baselines/reference/symbolProperty47.types @@ -4,9 +4,9 @@ class C { get [Symbol.hasInstance]() { >[Symbol.hasInstance] : number ->Symbol.hasInstance : symbol +>Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor ->hasInstance : symbol +>hasInstance : unique symbol return ""; >"" : "" @@ -14,9 +14,9 @@ class C { // Should take a string set [Symbol.hasInstance](x: number) { >[Symbol.hasInstance] : number ->Symbol.hasInstance : symbol +>Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor ->hasInstance : symbol +>hasInstance : unique symbol >x : number } } @@ -27,9 +27,9 @@ class C { >(new C) : C >new C : C >C : typeof C ->Symbol.hasInstance : symbol +>Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor ->hasInstance : symbol +>hasInstance : unique symbol >0 : 0 (new C)[Symbol.hasInstance] = ""; @@ -38,8 +38,8 @@ class C { >(new C) : C >new C : C >C : typeof C ->Symbol.hasInstance : symbol +>Symbol.hasInstance : unique symbol >Symbol : SymbolConstructor ->hasInstance : symbol +>hasInstance : unique symbol >"" : "" diff --git a/tests/baselines/reference/symbolProperty48.errors.txt b/tests/baselines/reference/symbolProperty48.errors.txt deleted file mode 100644 index 8d52fa48a0728..0000000000000 --- a/tests/baselines/reference/symbolProperty48.errors.txt +++ /dev/null @@ -1,13 +0,0 @@ -tests/cases/conformance/es6/Symbols/symbolProperty48.ts(5,10): error TS2471: A computed property name of the form 'Symbol.iterator' must be of type 'symbol'. - - -==== tests/cases/conformance/es6/Symbols/symbolProperty48.ts (1 errors) ==== - module M { - var Symbol; - - class C { - [Symbol.iterator]() { } - ~~~~~~~~~~~~~~~ -!!! error TS2471: A computed property name of the form 'Symbol.iterator' must be of type 'symbol'. - } - } \ No newline at end of file diff --git a/tests/baselines/reference/symbolProperty49.errors.txt b/tests/baselines/reference/symbolProperty49.errors.txt deleted file mode 100644 index 8a15b359ee7e8..0000000000000 --- a/tests/baselines/reference/symbolProperty49.errors.txt +++ /dev/null @@ -1,13 +0,0 @@ -tests/cases/conformance/es6/Symbols/symbolProperty49.ts(5,10): error TS2471: A computed property name of the form 'Symbol.iterator' must be of type 'symbol'. - - -==== tests/cases/conformance/es6/Symbols/symbolProperty49.ts (1 errors) ==== - module M { - export var Symbol; - - class C { - [Symbol.iterator]() { } - ~~~~~~~~~~~~~~~ -!!! error TS2471: A computed property name of the form 'Symbol.iterator' must be of type 'symbol'. - } - } \ No newline at end of file diff --git a/tests/baselines/reference/symbolProperty5.types b/tests/baselines/reference/symbolProperty5.types index 398253128a701..58848f9ae237f 100644 --- a/tests/baselines/reference/symbolProperty5.types +++ b/tests/baselines/reference/symbolProperty5.types @@ -5,22 +5,22 @@ var x = { [Symbol.iterator]: 0, >[Symbol.iterator] : number ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >0 : 0 [Symbol.toPrimitive]() { }, >[Symbol.toPrimitive] : () => void ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol get [Symbol.toStringTag]() { >[Symbol.toStringTag] : number ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol return 0; >0 : 0 diff --git a/tests/baselines/reference/symbolProperty50.types b/tests/baselines/reference/symbolProperty50.types index cac53fc72ba88..0c54687bfd7aa 100644 --- a/tests/baselines/reference/symbolProperty50.types +++ b/tests/baselines/reference/symbolProperty50.types @@ -9,8 +9,8 @@ module M { [Symbol.iterator]() { } >[Symbol.iterator] : () => void ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol } } diff --git a/tests/baselines/reference/symbolProperty51.types b/tests/baselines/reference/symbolProperty51.types index c08495a403760..8fc79ae7c4db2 100644 --- a/tests/baselines/reference/symbolProperty51.types +++ b/tests/baselines/reference/symbolProperty51.types @@ -9,8 +9,8 @@ module M { [Symbol.iterator]() { } >[Symbol.iterator] : () => void ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol } } diff --git a/tests/baselines/reference/symbolProperty52.errors.txt b/tests/baselines/reference/symbolProperty52.errors.txt index 5374f282c8461..4887130bbd419 100644 --- a/tests/baselines/reference/symbolProperty52.errors.txt +++ b/tests/baselines/reference/symbolProperty52.errors.txt @@ -1,9 +1,8 @@ tests/cases/conformance/es6/Symbols/symbolProperty52.ts(2,13): error TS2339: Property 'nonsense' does not exist on type 'SymbolConstructor'. -tests/cases/conformance/es6/Symbols/symbolProperty52.ts(5,1): error TS2741: Property '[Symbol.nonsense]' is missing in type '{}' but required in type '{ [Symbol.nonsense]: number; }'. tests/cases/conformance/es6/Symbols/symbolProperty52.ts(7,12): error TS2339: Property 'nonsense' does not exist on type 'SymbolConstructor'. -==== tests/cases/conformance/es6/Symbols/symbolProperty52.ts (3 errors) ==== +==== tests/cases/conformance/es6/Symbols/symbolProperty52.ts (2 errors) ==== var obj = { [Symbol.nonsense]: 0 ~~~~~~~~ @@ -11,9 +10,6 @@ tests/cases/conformance/es6/Symbols/symbolProperty52.ts(7,12): error TS2339: Pro }; obj = {}; - ~~~ -!!! error TS2741: Property '[Symbol.nonsense]' is missing in type '{}' but required in type '{ [Symbol.nonsense]: number; }'. -!!! related TS2728 tests/cases/conformance/es6/Symbols/symbolProperty52.ts:2:5: '[Symbol.nonsense]' is declared here. obj[Symbol.nonsense]; ~~~~~~~~ diff --git a/tests/baselines/reference/symbolProperty52.types b/tests/baselines/reference/symbolProperty52.types index d67595a22b76c..72ad1693a697e 100644 --- a/tests/baselines/reference/symbolProperty52.types +++ b/tests/baselines/reference/symbolProperty52.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/Symbols/symbolProperty52.ts === var obj = { ->obj : { [Symbol.nonsense]: number; } ->{ [Symbol.nonsense]: 0} : { [Symbol.nonsense]: number; } +>obj : { [x: string]: number; } +>{ [Symbol.nonsense]: 0} : { [x: string]: number; } [Symbol.nonsense]: 0 >[Symbol.nonsense] : number @@ -14,12 +14,12 @@ var obj = { obj = {}; >obj = {} : {} ->obj : { [Symbol.nonsense]: number; } +>obj : { [x: string]: number; } >{} : {} obj[Symbol.nonsense]; ->obj[Symbol.nonsense] : any ->obj : { [Symbol.nonsense]: number; } +>obj[Symbol.nonsense] : number +>obj : { [x: string]: number; } >Symbol.nonsense : any >Symbol : SymbolConstructor >nonsense : any diff --git a/tests/baselines/reference/symbolProperty53.types b/tests/baselines/reference/symbolProperty53.types index 77dc3f16452f8..14fcc3e487545 100644 --- a/tests/baselines/reference/symbolProperty53.types +++ b/tests/baselines/reference/symbolProperty53.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/Symbols/symbolProperty53.ts === var obj = { ->obj : { [Symbol.for]: number; } ->{ [Symbol.for]: 0} : { [Symbol.for]: number; } +>obj : {} +>{ [Symbol.for]: 0} : {} [Symbol.for]: 0 >[Symbol.for] : number @@ -14,7 +14,7 @@ var obj = { obj[Symbol.for]; >obj[Symbol.for] : any ->obj : { [Symbol.for]: number; } +>obj : {} >Symbol.for : (key: string) => symbol >Symbol : SymbolConstructor >for : (key: string) => symbol diff --git a/tests/baselines/reference/symbolProperty54.types b/tests/baselines/reference/symbolProperty54.types index 2c6f9cd9e72df..8e4e9ab2bb737 100644 --- a/tests/baselines/reference/symbolProperty54.types +++ b/tests/baselines/reference/symbolProperty54.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/Symbols/symbolProperty54.ts === var obj = { ->obj : { [Symbol.prototype]: number; } ->{ [Symbol.prototype]: 0} : { [Symbol.prototype]: number; } +>obj : {} +>{ [Symbol.prototype]: 0} : {} [Symbol.prototype]: 0 >[Symbol.prototype] : number diff --git a/tests/baselines/reference/symbolProperty55.types b/tests/baselines/reference/symbolProperty55.types index d96b8b43751b3..01f5af8d3a3d7 100644 --- a/tests/baselines/reference/symbolProperty55.types +++ b/tests/baselines/reference/symbolProperty55.types @@ -5,9 +5,9 @@ var obj = { [Symbol.iterator]: 0 >[Symbol.iterator] : number ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >0 : 0 }; @@ -21,9 +21,9 @@ module M { // The following should be of type 'any'. This is because even though obj has a property keyed by Symbol.iterator, // the key passed in here is the *wrong* Symbol.iterator. It is not the iterator property of the global Symbol. obj[Symbol.iterator]; ->obj[Symbol.iterator] : error +>obj[Symbol.iterator] : number >obj : { [Symbol.iterator]: number; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol } diff --git a/tests/baselines/reference/symbolProperty56.types b/tests/baselines/reference/symbolProperty56.types index b6731ed5e8003..35714185269a0 100644 --- a/tests/baselines/reference/symbolProperty56.types +++ b/tests/baselines/reference/symbolProperty56.types @@ -5,9 +5,9 @@ var obj = { [Symbol.iterator]: 0 >[Symbol.iterator] : number ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >0 : 0 }; diff --git a/tests/baselines/reference/symbolProperty57.types b/tests/baselines/reference/symbolProperty57.types index eeb00489bb201..3db4be739dd6d 100644 --- a/tests/baselines/reference/symbolProperty57.types +++ b/tests/baselines/reference/symbolProperty57.types @@ -5,9 +5,9 @@ var obj = { [Symbol.iterator]: 0 >[Symbol.iterator] : number ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >0 : 0 }; diff --git a/tests/baselines/reference/symbolProperty58.errors.txt b/tests/baselines/reference/symbolProperty58.errors.txt deleted file mode 100644 index 5f8b117a74c1b..0000000000000 --- a/tests/baselines/reference/symbolProperty58.errors.txt +++ /dev/null @@ -1,13 +0,0 @@ -tests/cases/conformance/es6/Symbols/symbolProperty58.ts(6,6): error TS2471: A computed property name of the form 'Symbol.foo' must be of type 'symbol'. - - -==== tests/cases/conformance/es6/Symbols/symbolProperty58.ts (1 errors) ==== - interface SymbolConstructor { - foo: string; - } - - var obj = { - [Symbol.foo]: 0 - ~~~~~~~~~~ -!!! error TS2471: A computed property name of the form 'Symbol.foo' must be of type 'symbol'. - } \ No newline at end of file diff --git a/tests/baselines/reference/symbolProperty58.types b/tests/baselines/reference/symbolProperty58.types index bc751c88e6b1e..2b1d7cca9d562 100644 --- a/tests/baselines/reference/symbolProperty58.types +++ b/tests/baselines/reference/symbolProperty58.types @@ -5,8 +5,8 @@ interface 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 diff --git a/tests/baselines/reference/symbolProperty59.errors.txt b/tests/baselines/reference/symbolProperty59.errors.txt index dfb2ece3d21f1..67deb77166147 100644 --- a/tests/baselines/reference/symbolProperty59.errors.txt +++ b/tests/baselines/reference/symbolProperty59.errors.txt @@ -1,9 +1,12 @@ +tests/cases/conformance/es6/Symbols/symbolProperty59.ts(2,5): error TS1169: A computed property name in an interface must refer to an expression whose type is a literal type or a 'unique symbol' type. tests/cases/conformance/es6/Symbols/symbolProperty59.ts(2,5): error TS2464: A computed property name must be of type 'string', 'number', 'symbol', or 'any'. -==== tests/cases/conformance/es6/Symbols/symbolProperty59.ts (1 errors) ==== +==== tests/cases/conformance/es6/Symbols/symbolProperty59.ts (2 errors) ==== interface I { [Symbol.keyFor]: string; ~~~~~~~~~~~~~~~ +!!! error TS1169: A computed property name in an interface must refer to an expression whose type is a literal type or a 'unique symbol' type. + ~~~~~~~~~~~~~~~ !!! error TS2464: A computed property name must be of type 'string', 'number', 'symbol', or 'any'. } \ No newline at end of file diff --git a/tests/baselines/reference/symbolProperty6.js b/tests/baselines/reference/symbolProperty6.js index ab9564c35e583..2361f4233c63a 100644 --- a/tests/baselines/reference/symbolProperty6.js +++ b/tests/baselines/reference/symbolProperty6.js @@ -9,11 +9,12 @@ class C { } //// [symbolProperty6.js] +var _a; class C { constructor() { - this[Symbol.iterator] = 0; + this[_a] = 0; } - [Symbol.toPrimitive]() { } + [(_a = Symbol.iterator, Symbol.unscopables, Symbol.toPrimitive)]() { } get [Symbol.toStringTag]() { return 0; } diff --git a/tests/baselines/reference/symbolProperty6.types b/tests/baselines/reference/symbolProperty6.types index 8bdd05f01517a..c54543fe40905 100644 --- a/tests/baselines/reference/symbolProperty6.types +++ b/tests/baselines/reference/symbolProperty6.types @@ -4,28 +4,28 @@ class C { [Symbol.iterator] = 0; >[Symbol.iterator] : number ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >0 : 0 [Symbol.unscopables]: number; >[Symbol.unscopables] : number ->Symbol.unscopables : symbol +>Symbol.unscopables : unique symbol >Symbol : SymbolConstructor ->unscopables : symbol +>unscopables : unique symbol [Symbol.toPrimitive]() { } >[Symbol.toPrimitive] : () => void ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol get [Symbol.toStringTag]() { >[Symbol.toStringTag] : number ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol return 0; >0 : 0 diff --git a/tests/baselines/reference/symbolProperty60.types b/tests/baselines/reference/symbolProperty60.types index 9cb024043c210..339b895c02600 100644 --- a/tests/baselines/reference/symbolProperty60.types +++ b/tests/baselines/reference/symbolProperty60.types @@ -3,9 +3,9 @@ interface I1 { [Symbol.toStringTag]: string; >[Symbol.toStringTag] : string ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol [key: string]: number; >key : string @@ -14,9 +14,9 @@ interface I1 { interface I2 { [Symbol.toStringTag]: string; >[Symbol.toStringTag] : string ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol [key: number]: boolean; >key : number diff --git a/tests/baselines/reference/symbolProperty8.types b/tests/baselines/reference/symbolProperty8.types index 74ded3d89807a..24274ae7d5544 100644 --- a/tests/baselines/reference/symbolProperty8.types +++ b/tests/baselines/reference/symbolProperty8.types @@ -2,13 +2,13 @@ interface I { [Symbol.unscopables]: number; >[Symbol.unscopables] : number ->Symbol.unscopables : symbol +>Symbol.unscopables : unique symbol >Symbol : SymbolConstructor ->unscopables : symbol +>unscopables : unique symbol [Symbol.toPrimitive](); >[Symbol.toPrimitive] : () => any ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol } diff --git a/tests/baselines/reference/symbolProperty9.js b/tests/baselines/reference/symbolProperty9.js index e6c8f7299a9e8..85b3df51438dc 100644 --- a/tests/baselines/reference/symbolProperty9.js +++ b/tests/baselines/reference/symbolProperty9.js @@ -13,6 +13,7 @@ var c: C = i; //// [symbolProperty9.js] class C { } +Symbol.iterator; var i; i = new C; var c = i; diff --git a/tests/baselines/reference/symbolProperty9.types b/tests/baselines/reference/symbolProperty9.types index 050d96d9ca201..d61433a248944 100644 --- a/tests/baselines/reference/symbolProperty9.types +++ b/tests/baselines/reference/symbolProperty9.types @@ -4,18 +4,18 @@ class C { [Symbol.iterator]: { x; y }; >[Symbol.iterator] : { x: any; y: any; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : any >y : any } interface I { [Symbol.iterator]: { x }; >[Symbol.iterator] : { x: any; } ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >x : any } diff --git a/tests/baselines/reference/symbolType2.types b/tests/baselines/reference/symbolType2.types index 5da837f738e5e..fcc00973f2322 100644 --- a/tests/baselines/reference/symbolType2.types +++ b/tests/baselines/reference/symbolType2.types @@ -1,15 +1,15 @@ === tests/cases/conformance/es6/Symbols/symbolType2.ts === Symbol.isConcatSpreadable in {}; >Symbol.isConcatSpreadable in {} : boolean ->Symbol.isConcatSpreadable : symbol +>Symbol.isConcatSpreadable : unique symbol >Symbol : SymbolConstructor ->isConcatSpreadable : symbol +>isConcatSpreadable : unique symbol >{} : {} "" in Symbol.toPrimitive; >"" in Symbol.toPrimitive : boolean >"" : "" ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol diff --git a/tests/baselines/reference/symbolType3.types b/tests/baselines/reference/symbolType3.types index 074a65d513033..26ecc9b5d1183 100644 --- a/tests/baselines/reference/symbolType3.types +++ b/tests/baselines/reference/symbolType3.types @@ -6,21 +6,21 @@ var s = Symbol(); delete Symbol.iterator; >delete Symbol.iterator : boolean ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol void Symbol.toPrimitive; >void Symbol.toPrimitive : undefined ->Symbol.toPrimitive : symbol +>Symbol.toPrimitive : unique symbol >Symbol : SymbolConstructor ->toPrimitive : symbol +>toPrimitive : unique symbol typeof Symbol.toStringTag; >typeof Symbol.toStringTag : "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function" ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol ++s; >++s : number diff --git a/tests/baselines/reference/useSharedArrayBuffer4.types b/tests/baselines/reference/useSharedArrayBuffer4.types index c3602b26b63b6..9776dc1ae3d3e 100644 --- a/tests/baselines/reference/useSharedArrayBuffer4.types +++ b/tests/baselines/reference/useSharedArrayBuffer4.types @@ -18,17 +18,17 @@ var species = foge[Symbol.species]; >species : SharedArrayBuffer >foge[Symbol.species] : SharedArrayBuffer >foge : SharedArrayBuffer ->Symbol.species : symbol +>Symbol.species : unique symbol >Symbol : SymbolConstructor ->species : symbol +>species : unique symbol var stringTag = foge[Symbol.toStringTag]; >stringTag : "SharedArrayBuffer" >foge[Symbol.toStringTag] : "SharedArrayBuffer" >foge : SharedArrayBuffer ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol var len = foge.byteLength; >len : number diff --git a/tests/baselines/reference/useSharedArrayBuffer5.types b/tests/baselines/reference/useSharedArrayBuffer5.types index 48db8b739f938..1d3f896012b18 100644 --- a/tests/baselines/reference/useSharedArrayBuffer5.types +++ b/tests/baselines/reference/useSharedArrayBuffer5.types @@ -9,15 +9,15 @@ var species = foge[Symbol.species]; >species : SharedArrayBuffer >foge[Symbol.species] : SharedArrayBuffer >foge : SharedArrayBuffer ->Symbol.species : symbol +>Symbol.species : unique symbol >Symbol : SymbolConstructor ->species : symbol +>species : unique symbol var stringTag = foge[Symbol.toStringTag]; >stringTag : "SharedArrayBuffer" >foge[Symbol.toStringTag] : "SharedArrayBuffer" >foge : SharedArrayBuffer ->Symbol.toStringTag : symbol +>Symbol.toStringTag : unique symbol >Symbol : SymbolConstructor ->toStringTag : symbol +>toStringTag : unique symbol diff --git a/tests/baselines/reference/wellKnownSymbolExpando.types b/tests/baselines/reference/wellKnownSymbolExpando.types index f0a1c32a7f97c..7ba4f2474a4ee 100644 --- a/tests/baselines/reference/wellKnownSymbolExpando.types +++ b/tests/baselines/reference/wellKnownSymbolExpando.types @@ -4,10 +4,10 @@ function f() {} f[Symbol.iterator] = function() {} >f[Symbol.iterator] = function() {} : () => void ->f[Symbol.iterator] : () => void +>f[Symbol.iterator] : any >f : typeof f ->Symbol.iterator : symbol +>Symbol.iterator : unique symbol >Symbol : SymbolConstructor ->iterator : symbol +>iterator : unique symbol >function() {} : () => void diff --git a/tests/cases/fourslash/navigationBarItemsSymbols1.ts b/tests/cases/fourslash/navigationBarItemsSymbols1.ts index 4326d7b4deb46..92bf87ae5df66 100644 --- a/tests/cases/fourslash/navigationBarItemsSymbols1.ts +++ b/tests/cases/fourslash/navigationBarItemsSymbols1.ts @@ -14,10 +14,6 @@ verify.navigationTree({ "text": "C", "kind": "class", "childItems": [ - { - "text": "[Symbol.isConcatSpreadable]", - "kind": "getter" - }, { "text": "[Symbol.isRegExp]", "kind": "property" @@ -25,6 +21,10 @@ verify.navigationTree({ { "text": "[Symbol.iterator]", "kind": "method" + }, + { + "text": "[Symbol.isConcatSpreadable]", + "kind": "getter" } ] } @@ -46,10 +46,6 @@ verify.navigationBar([ "text": "C", "kind": "class", "childItems": [ - { - "text": "[Symbol.isConcatSpreadable]", - "kind": "getter" - }, { "text": "[Symbol.isRegExp]", "kind": "property" @@ -57,6 +53,10 @@ verify.navigationBar([ { "text": "[Symbol.iterator]", "kind": "method" + }, + { + "text": "[Symbol.isConcatSpreadable]", + "kind": "getter" } ], "indent": 1 From a3fc74ec6af83ea346ac1e19639c4a105b86ffe1 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 28 Jan 2021 16:53:18 -0800 Subject: [PATCH 2/6] Actually update the lib text to say unique symbol, too (this is unneeded with compat code in place, but this makes goto-def make more sense) --- src/lib/es2015.iterable.d.ts | 2 +- src/lib/es2015.symbol.wellknown.d.ts | 20 ++++++++++---------- src/lib/es2018.asynciterable.d.ts | 2 +- src/lib/es2020.symbol.wellknown.d.ts | 2 +- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/lib/es2015.iterable.d.ts b/src/lib/es2015.iterable.d.ts index da6bec04adf8e..b5f0132c1d9cc 100644 --- a/src/lib/es2015.iterable.d.ts +++ b/src/lib/es2015.iterable.d.ts @@ -5,7 +5,7 @@ interface SymbolConstructor { * A method that returns the default iterator for an object. Called by the semantics of the * for-of statement. */ - readonly iterator: symbol; + readonly iterator: unique symbol; } interface IteratorYieldResult { diff --git a/src/lib/es2015.symbol.wellknown.d.ts b/src/lib/es2015.symbol.wellknown.d.ts index dce75ddab70c5..284c61f61c348 100644 --- a/src/lib/es2015.symbol.wellknown.d.ts +++ b/src/lib/es2015.symbol.wellknown.d.ts @@ -5,61 +5,61 @@ interface SymbolConstructor { * A method that determines if a constructor object recognizes an object as one of the * constructor’s instances. Called by the semantics of the instanceof operator. */ - readonly hasInstance: symbol; + readonly hasInstance: unique symbol; /** * A Boolean value that if true indicates that an object should flatten to its array elements * by Array.prototype.concat. */ - readonly isConcatSpreadable: symbol; + readonly isConcatSpreadable: unique symbol; /** * A regular expression method that matches the regular expression against a string. Called * by the String.prototype.match method. */ - readonly match: symbol; + readonly match: unique symbol; /** * A regular expression method that replaces matched substrings of a string. Called by the * String.prototype.replace method. */ - readonly replace: symbol; + readonly replace: unique symbol; /** * A regular expression method that returns the index within a string that matches the * regular expression. Called by the String.prototype.search method. */ - readonly search: symbol; + readonly search: unique symbol; /** * A function valued property that is the constructor function that is used to create * derived objects. */ - readonly species: symbol; + readonly species: unique symbol; /** * A regular expression method that splits a string at the indices that match the regular * expression. Called by the String.prototype.split method. */ - readonly split: symbol; + readonly split: unique symbol; /** * A method that converts an object to a corresponding primitive value. * Called by the ToPrimitive abstract operation. */ - readonly toPrimitive: symbol; + readonly toPrimitive: unique symbol; /** * A String value that is used in the creation of the default string description of an object. * Called by the built-in method Object.prototype.toString. */ - readonly toStringTag: symbol; + readonly toStringTag: unique symbol; /** * An Object whose own property names are property names that are excluded from the 'with' * environment bindings of the associated objects. */ - readonly unscopables: symbol; + readonly unscopables: unique symbol; } interface Symbol { diff --git a/src/lib/es2018.asynciterable.d.ts b/src/lib/es2018.asynciterable.d.ts index 19a31c72ca4a9..c19b8d34cd538 100644 --- a/src/lib/es2018.asynciterable.d.ts +++ b/src/lib/es2018.asynciterable.d.ts @@ -6,7 +6,7 @@ interface SymbolConstructor { * A method that returns the default async iterator for an object. Called by the semantics of * the for-await-of statement. */ - readonly asyncIterator: symbol; + readonly asyncIterator: unique symbol; } interface AsyncIterator { diff --git a/src/lib/es2020.symbol.wellknown.d.ts b/src/lib/es2020.symbol.wellknown.d.ts index 08e1fa2c913fe..94a11768256c7 100644 --- a/src/lib/es2020.symbol.wellknown.d.ts +++ b/src/lib/es2020.symbol.wellknown.d.ts @@ -6,7 +6,7 @@ interface SymbolConstructor { * A regular expression method that matches the regular expression against a string. Called * by the String.prototype.matchAll method. */ - readonly matchAll: symbol; + readonly matchAll: unique symbol; } interface RegExp { From bd49b81717ca183b37dc27ca7d0f69a9cac7565f Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 28 Jan 2021 16:56:07 -0800 Subject: [PATCH 3/6] Add test showing mismatched symbol constructor type interop --- ...bserverMismatchingPolyfillsWorkTogether.js | 28 +++++++++++++++++++ ...erMismatchingPolyfillsWorkTogether.symbols | 24 ++++++++++++++++ ...rverMismatchingPolyfillsWorkTogether.types | 22 +++++++++++++++ ...bserverMismatchingPolyfillsWorkTogether.ts | 12 ++++++++ 4 files changed, 86 insertions(+) create mode 100644 tests/baselines/reference/symbolObserverMismatchingPolyfillsWorkTogether.js create mode 100644 tests/baselines/reference/symbolObserverMismatchingPolyfillsWorkTogether.symbols create mode 100644 tests/baselines/reference/symbolObserverMismatchingPolyfillsWorkTogether.types create mode 100644 tests/cases/compiler/symbolObserverMismatchingPolyfillsWorkTogether.ts diff --git a/tests/baselines/reference/symbolObserverMismatchingPolyfillsWorkTogether.js b/tests/baselines/reference/symbolObserverMismatchingPolyfillsWorkTogether.js new file mode 100644 index 0000000000000..5c7578642ffa8 --- /dev/null +++ b/tests/baselines/reference/symbolObserverMismatchingPolyfillsWorkTogether.js @@ -0,0 +1,28 @@ +//// [symbolObserverMismatchingPolyfillsWorkTogether.ts] +interface SymbolConstructor { + readonly observer: symbol; +} +interface SymbolConstructor { + readonly observer: unique symbol; +} + +const obj = { + [Symbol.observer]: 0 +}; + +//// [symbolObserverMismatchingPolyfillsWorkTogether.js] +const obj = { + [Symbol.observer]: 0 +}; + + +//// [symbolObserverMismatchingPolyfillsWorkTogether.d.ts] +interface SymbolConstructor { + readonly observer: symbol; +} +interface SymbolConstructor { + readonly observer: unique symbol; +} +declare const obj: { + [Symbol.observer]: number; +}; diff --git a/tests/baselines/reference/symbolObserverMismatchingPolyfillsWorkTogether.symbols b/tests/baselines/reference/symbolObserverMismatchingPolyfillsWorkTogether.symbols new file mode 100644 index 0000000000000..51ce83bcdba71 --- /dev/null +++ b/tests/baselines/reference/symbolObserverMismatchingPolyfillsWorkTogether.symbols @@ -0,0 +1,24 @@ +=== tests/cases/compiler/symbolObserverMismatchingPolyfillsWorkTogether.ts === +interface SymbolConstructor { +>SymbolConstructor : Symbol(SymbolConstructor, Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(symbolObserverMismatchingPolyfillsWorkTogether.ts, 0, 0), Decl(symbolObserverMismatchingPolyfillsWorkTogether.ts, 2, 1)) + + readonly observer: symbol; +>observer : Symbol(SymbolConstructor.observer, Decl(symbolObserverMismatchingPolyfillsWorkTogether.ts, 0, 29), Decl(symbolObserverMismatchingPolyfillsWorkTogether.ts, 3, 29)) +} +interface SymbolConstructor { +>SymbolConstructor : Symbol(SymbolConstructor, Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --), Decl(symbolObserverMismatchingPolyfillsWorkTogether.ts, 0, 0), Decl(symbolObserverMismatchingPolyfillsWorkTogether.ts, 2, 1)) + + readonly observer: unique symbol; +>observer : Symbol(SymbolConstructor.observer, Decl(symbolObserverMismatchingPolyfillsWorkTogether.ts, 0, 29), Decl(symbolObserverMismatchingPolyfillsWorkTogether.ts, 3, 29)) +} + +const obj = { +>obj : Symbol(obj, Decl(symbolObserverMismatchingPolyfillsWorkTogether.ts, 7, 5)) + + [Symbol.observer]: 0 +>[Symbol.observer] : Symbol([Symbol.observer], Decl(symbolObserverMismatchingPolyfillsWorkTogether.ts, 7, 13)) +>Symbol.observer : Symbol(SymbolConstructor.observer, Decl(symbolObserverMismatchingPolyfillsWorkTogether.ts, 0, 29), Decl(symbolObserverMismatchingPolyfillsWorkTogether.ts, 3, 29)) +>Symbol : Symbol(Symbol, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>observer : Symbol(SymbolConstructor.observer, Decl(symbolObserverMismatchingPolyfillsWorkTogether.ts, 0, 29), Decl(symbolObserverMismatchingPolyfillsWorkTogether.ts, 3, 29)) + +}; diff --git a/tests/baselines/reference/symbolObserverMismatchingPolyfillsWorkTogether.types b/tests/baselines/reference/symbolObserverMismatchingPolyfillsWorkTogether.types new file mode 100644 index 0000000000000..53842529bb33b --- /dev/null +++ b/tests/baselines/reference/symbolObserverMismatchingPolyfillsWorkTogether.types @@ -0,0 +1,22 @@ +=== tests/cases/compiler/symbolObserverMismatchingPolyfillsWorkTogether.ts === +interface SymbolConstructor { + readonly observer: symbol; +>observer : unique symbol +} +interface SymbolConstructor { + readonly observer: unique symbol; +>observer : unique symbol +} + +const obj = { +>obj : { [Symbol.observer]: number; } +>{ [Symbol.observer]: 0} : { [Symbol.observer]: number; } + + [Symbol.observer]: 0 +>[Symbol.observer] : number +>Symbol.observer : unique symbol +>Symbol : SymbolConstructor +>observer : unique symbol +>0 : 0 + +}; diff --git a/tests/cases/compiler/symbolObserverMismatchingPolyfillsWorkTogether.ts b/tests/cases/compiler/symbolObserverMismatchingPolyfillsWorkTogether.ts new file mode 100644 index 0000000000000..12e812b1d3e1e --- /dev/null +++ b/tests/cases/compiler/symbolObserverMismatchingPolyfillsWorkTogether.ts @@ -0,0 +1,12 @@ +// @declaration: true +// @target: es6 +interface SymbolConstructor { + readonly observer: symbol; +} +interface SymbolConstructor { + readonly observer: unique symbol; +} + +const obj = { + [Symbol.observer]: 0 +}; \ No newline at end of file From 4c808c4bb36b5a03cd3eb0c751ce3a51ae5ee26c Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Thu, 28 Jan 2021 17:09:29 -0800 Subject: [PATCH 4/6] Add more test cases for some other related issues this fixes --- .../indirectGlobalSymbolPartOfObjectType.js | 9 ++++ ...directGlobalSymbolPartOfObjectType.symbols | 13 +++++ ...indirectGlobalSymbolPartOfObjectType.types | 15 ++++++ .../keyofObjectWithGlobalSymbolIncluded.js | 13 +++++ ...eyofObjectWithGlobalSymbolIncluded.symbols | 17 +++++++ .../keyofObjectWithGlobalSymbolIncluded.types | 18 +++++++ ...yFloat32ArrayAssignableWithFloat32Array.js | 27 +++++++++++ ...t32ArrayAssignableWithFloat32Array.symbols | 43 +++++++++++++++++ ...oat32ArrayAssignableWithFloat32Array.types | 48 +++++++++++++++++++ .../indirectGlobalSymbolPartOfObjectType.ts | 4 ++ .../keyofObjectWithGlobalSymbolIncluded.ts | 7 +++ ...yFloat32ArrayAssignableWithFloat32Array.ts | 13 +++++ 12 files changed, 227 insertions(+) create mode 100644 tests/baselines/reference/indirectGlobalSymbolPartOfObjectType.js create mode 100644 tests/baselines/reference/indirectGlobalSymbolPartOfObjectType.symbols create mode 100644 tests/baselines/reference/indirectGlobalSymbolPartOfObjectType.types create mode 100644 tests/baselines/reference/keyofObjectWithGlobalSymbolIncluded.js create mode 100644 tests/baselines/reference/keyofObjectWithGlobalSymbolIncluded.symbols create mode 100644 tests/baselines/reference/keyofObjectWithGlobalSymbolIncluded.types create mode 100644 tests/baselines/reference/readonlyFloat32ArrayAssignableWithFloat32Array.js create mode 100644 tests/baselines/reference/readonlyFloat32ArrayAssignableWithFloat32Array.symbols create mode 100644 tests/baselines/reference/readonlyFloat32ArrayAssignableWithFloat32Array.types create mode 100644 tests/cases/compiler/indirectGlobalSymbolPartOfObjectType.ts create mode 100644 tests/cases/compiler/keyofObjectWithGlobalSymbolIncluded.ts create mode 100644 tests/cases/compiler/readonlyFloat32ArrayAssignableWithFloat32Array.ts diff --git a/tests/baselines/reference/indirectGlobalSymbolPartOfObjectType.js b/tests/baselines/reference/indirectGlobalSymbolPartOfObjectType.js new file mode 100644 index 0000000000000..241959786a276 --- /dev/null +++ b/tests/baselines/reference/indirectGlobalSymbolPartOfObjectType.js @@ -0,0 +1,9 @@ +//// [indirectGlobalSymbolPartOfObjectType.ts] +export { } +const Symbol = globalThis.Symbol; +[][Symbol.iterator]; + +//// [indirectGlobalSymbolPartOfObjectType.js] +const Symbol = globalThis.Symbol; +[][Symbol.iterator]; +export {}; diff --git a/tests/baselines/reference/indirectGlobalSymbolPartOfObjectType.symbols b/tests/baselines/reference/indirectGlobalSymbolPartOfObjectType.symbols new file mode 100644 index 0000000000000..2f142e9973722 --- /dev/null +++ b/tests/baselines/reference/indirectGlobalSymbolPartOfObjectType.symbols @@ -0,0 +1,13 @@ +=== tests/cases/compiler/indirectGlobalSymbolPartOfObjectType.ts === +export { } +const Symbol = globalThis.Symbol; +>Symbol : Symbol(Symbol, Decl(indirectGlobalSymbolPartOfObjectType.ts, 1, 5)) +>globalThis.Symbol : Symbol(Symbol, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>globalThis : Symbol(globalThis) +>Symbol : Symbol(Symbol, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) + +[][Symbol.iterator]; +>Symbol.iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.iterable.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(indirectGlobalSymbolPartOfObjectType.ts, 1, 5)) +>iterator : Symbol(SymbolConstructor.iterator, Decl(lib.es2015.iterable.d.ts, --, --)) + diff --git a/tests/baselines/reference/indirectGlobalSymbolPartOfObjectType.types b/tests/baselines/reference/indirectGlobalSymbolPartOfObjectType.types new file mode 100644 index 0000000000000..0f1627d3fa8f9 --- /dev/null +++ b/tests/baselines/reference/indirectGlobalSymbolPartOfObjectType.types @@ -0,0 +1,15 @@ +=== tests/cases/compiler/indirectGlobalSymbolPartOfObjectType.ts === +export { } +const Symbol = globalThis.Symbol; +>Symbol : SymbolConstructor +>globalThis.Symbol : SymbolConstructor +>globalThis : typeof globalThis +>Symbol : SymbolConstructor + +[][Symbol.iterator]; +>[][Symbol.iterator] : () => IterableIterator +>[] : undefined[] +>Symbol.iterator : unique symbol +>Symbol : SymbolConstructor +>iterator : unique symbol + diff --git a/tests/baselines/reference/keyofObjectWithGlobalSymbolIncluded.js b/tests/baselines/reference/keyofObjectWithGlobalSymbolIncluded.js new file mode 100644 index 0000000000000..bc27f5a77d9cf --- /dev/null +++ b/tests/baselines/reference/keyofObjectWithGlobalSymbolIncluded.js @@ -0,0 +1,13 @@ +//// [keyofObjectWithGlobalSymbolIncluded.ts] +const obj = { + [Symbol.species]: Array +}; + +type Q = keyof typeof obj; + + +//// [keyofObjectWithGlobalSymbolIncluded.js] +"use strict"; +const obj = { + [Symbol.species]: Array +}; diff --git a/tests/baselines/reference/keyofObjectWithGlobalSymbolIncluded.symbols b/tests/baselines/reference/keyofObjectWithGlobalSymbolIncluded.symbols new file mode 100644 index 0000000000000..afbd9aac084b1 --- /dev/null +++ b/tests/baselines/reference/keyofObjectWithGlobalSymbolIncluded.symbols @@ -0,0 +1,17 @@ +=== tests/cases/compiler/keyofObjectWithGlobalSymbolIncluded.ts === +const obj = { +>obj : Symbol(obj, Decl(keyofObjectWithGlobalSymbolIncluded.ts, 0, 5)) + + [Symbol.species]: Array +>[Symbol.species] : Symbol([Symbol.species], Decl(keyofObjectWithGlobalSymbolIncluded.ts, 0, 13)) +>Symbol.species : Symbol(SymbolConstructor.species, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Symbol : Symbol(Symbol, Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.symbol.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>species : Symbol(SymbolConstructor.species, Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) +>Array : Symbol(Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --), Decl(lib.es2015.core.d.ts, --, --), Decl(lib.es2015.iterable.d.ts, --, --), Decl(lib.es2015.symbol.wellknown.d.ts, --, --)) + +}; + +type Q = keyof typeof obj; +>Q : Symbol(Q, Decl(keyofObjectWithGlobalSymbolIncluded.ts, 2, 2)) +>obj : Symbol(obj, Decl(keyofObjectWithGlobalSymbolIncluded.ts, 0, 5)) + diff --git a/tests/baselines/reference/keyofObjectWithGlobalSymbolIncluded.types b/tests/baselines/reference/keyofObjectWithGlobalSymbolIncluded.types new file mode 100644 index 0000000000000..74c56c75d0167 --- /dev/null +++ b/tests/baselines/reference/keyofObjectWithGlobalSymbolIncluded.types @@ -0,0 +1,18 @@ +=== tests/cases/compiler/keyofObjectWithGlobalSymbolIncluded.ts === +const obj = { +>obj : { [Symbol.species]: ArrayConstructor; } +>{ [Symbol.species]: Array} : { [Symbol.species]: ArrayConstructor; } + + [Symbol.species]: Array +>[Symbol.species] : ArrayConstructor +>Symbol.species : unique symbol +>Symbol : SymbolConstructor +>species : unique symbol +>Array : ArrayConstructor + +}; + +type Q = keyof typeof obj; +>Q : unique symbol +>obj : { [Symbol.species]: ArrayConstructor; } + diff --git a/tests/baselines/reference/readonlyFloat32ArrayAssignableWithFloat32Array.js b/tests/baselines/reference/readonlyFloat32ArrayAssignableWithFloat32Array.js new file mode 100644 index 0000000000000..10866412c50ee --- /dev/null +++ b/tests/baselines/reference/readonlyFloat32ArrayAssignableWithFloat32Array.js @@ -0,0 +1,27 @@ +//// [readonlyFloat32ArrayAssignableWithFloat32Array.ts] +function update(b: Readonly) { + const c = copy(b); + add(c, c); +} + +function add(a: Float32Array, b: Float32Array, c: Float32Array = a) { + c[0] = a[0] + b[0]; +} + +function copy(a: Float32Array) { + return new Float32Array(a); +} + +//// [readonlyFloat32ArrayAssignableWithFloat32Array.js] +"use strict"; +function update(b) { + var c = copy(b); + add(c, c); +} +function add(a, b, c) { + if (c === void 0) { c = a; } + c[0] = a[0] + b[0]; +} +function copy(a) { + return new Float32Array(a); +} diff --git a/tests/baselines/reference/readonlyFloat32ArrayAssignableWithFloat32Array.symbols b/tests/baselines/reference/readonlyFloat32ArrayAssignableWithFloat32Array.symbols new file mode 100644 index 0000000000000..e9223bb2f3af1 --- /dev/null +++ b/tests/baselines/reference/readonlyFloat32ArrayAssignableWithFloat32Array.symbols @@ -0,0 +1,43 @@ +=== tests/cases/compiler/readonlyFloat32ArrayAssignableWithFloat32Array.ts === +function update(b: Readonly) { +>update : Symbol(update, Decl(readonlyFloat32ArrayAssignableWithFloat32Array.ts, 0, 0)) +>b : Symbol(b, Decl(readonlyFloat32ArrayAssignableWithFloat32Array.ts, 0, 16)) +>Readonly : Symbol(Readonly, Decl(lib.es5.d.ts, --, --)) +>Float32Array : Symbol(Float32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) + + const c = copy(b); +>c : Symbol(c, Decl(readonlyFloat32ArrayAssignableWithFloat32Array.ts, 1, 9)) +>copy : Symbol(copy, Decl(readonlyFloat32ArrayAssignableWithFloat32Array.ts, 7, 1)) +>b : Symbol(b, Decl(readonlyFloat32ArrayAssignableWithFloat32Array.ts, 0, 16)) + + add(c, c); +>add : Symbol(add, Decl(readonlyFloat32ArrayAssignableWithFloat32Array.ts, 3, 1)) +>c : Symbol(c, Decl(readonlyFloat32ArrayAssignableWithFloat32Array.ts, 1, 9)) +>c : Symbol(c, Decl(readonlyFloat32ArrayAssignableWithFloat32Array.ts, 1, 9)) +} + +function add(a: Float32Array, b: Float32Array, c: Float32Array = a) { +>add : Symbol(add, Decl(readonlyFloat32ArrayAssignableWithFloat32Array.ts, 3, 1)) +>a : Symbol(a, Decl(readonlyFloat32ArrayAssignableWithFloat32Array.ts, 5, 13)) +>Float32Array : Symbol(Float32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>b : Symbol(b, Decl(readonlyFloat32ArrayAssignableWithFloat32Array.ts, 5, 29)) +>Float32Array : Symbol(Float32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>c : Symbol(c, Decl(readonlyFloat32ArrayAssignableWithFloat32Array.ts, 5, 46)) +>Float32Array : Symbol(Float32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>a : Symbol(a, Decl(readonlyFloat32ArrayAssignableWithFloat32Array.ts, 5, 13)) + + c[0] = a[0] + b[0]; +>c : Symbol(c, Decl(readonlyFloat32ArrayAssignableWithFloat32Array.ts, 5, 46)) +>a : Symbol(a, Decl(readonlyFloat32ArrayAssignableWithFloat32Array.ts, 5, 13)) +>b : Symbol(b, Decl(readonlyFloat32ArrayAssignableWithFloat32Array.ts, 5, 29)) +} + +function copy(a: Float32Array) { +>copy : Symbol(copy, Decl(readonlyFloat32ArrayAssignableWithFloat32Array.ts, 7, 1)) +>a : Symbol(a, Decl(readonlyFloat32ArrayAssignableWithFloat32Array.ts, 9, 14)) +>Float32Array : Symbol(Float32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) + + return new Float32Array(a); +>Float32Array : Symbol(Float32Array, Decl(lib.es5.d.ts, --, --), Decl(lib.es5.d.ts, --, --)) +>a : Symbol(a, Decl(readonlyFloat32ArrayAssignableWithFloat32Array.ts, 9, 14)) +} diff --git a/tests/baselines/reference/readonlyFloat32ArrayAssignableWithFloat32Array.types b/tests/baselines/reference/readonlyFloat32ArrayAssignableWithFloat32Array.types new file mode 100644 index 0000000000000..8db0d902e9e57 --- /dev/null +++ b/tests/baselines/reference/readonlyFloat32ArrayAssignableWithFloat32Array.types @@ -0,0 +1,48 @@ +=== tests/cases/compiler/readonlyFloat32ArrayAssignableWithFloat32Array.ts === +function update(b: Readonly) { +>update : (b: Readonly) => void +>b : Readonly + + const c = copy(b); +>c : Float32Array +>copy(b) : Float32Array +>copy : (a: Float32Array) => Float32Array +>b : Readonly + + add(c, c); +>add(c, c) : void +>add : (a: Float32Array, b: Float32Array, c?: Float32Array) => void +>c : Float32Array +>c : Float32Array +} + +function add(a: Float32Array, b: Float32Array, c: Float32Array = a) { +>add : (a: Float32Array, b: Float32Array, c?: Float32Array) => void +>a : Float32Array +>b : Float32Array +>c : Float32Array +>a : Float32Array + + c[0] = a[0] + b[0]; +>c[0] = a[0] + b[0] : number +>c[0] : number +>c : Float32Array +>0 : 0 +>a[0] + b[0] : number +>a[0] : number +>a : Float32Array +>0 : 0 +>b[0] : number +>b : Float32Array +>0 : 0 +} + +function copy(a: Float32Array) { +>copy : (a: Float32Array) => Float32Array +>a : Float32Array + + return new Float32Array(a); +>new Float32Array(a) : Float32Array +>Float32Array : Float32ArrayConstructor +>a : Float32Array +} diff --git a/tests/cases/compiler/indirectGlobalSymbolPartOfObjectType.ts b/tests/cases/compiler/indirectGlobalSymbolPartOfObjectType.ts new file mode 100644 index 0000000000000..cf0d13de537ed --- /dev/null +++ b/tests/cases/compiler/indirectGlobalSymbolPartOfObjectType.ts @@ -0,0 +1,4 @@ +// @target: es6 +export { } +const Symbol = globalThis.Symbol; +[][Symbol.iterator]; \ No newline at end of file diff --git a/tests/cases/compiler/keyofObjectWithGlobalSymbolIncluded.ts b/tests/cases/compiler/keyofObjectWithGlobalSymbolIncluded.ts new file mode 100644 index 0000000000000..3718523b119c4 --- /dev/null +++ b/tests/cases/compiler/keyofObjectWithGlobalSymbolIncluded.ts @@ -0,0 +1,7 @@ +// @target: es6 +// @strict: true +const obj = { + [Symbol.species]: Array +}; + +type Q = keyof typeof obj; diff --git a/tests/cases/compiler/readonlyFloat32ArrayAssignableWithFloat32Array.ts b/tests/cases/compiler/readonlyFloat32ArrayAssignableWithFloat32Array.ts new file mode 100644 index 0000000000000..58ac1811ff91e --- /dev/null +++ b/tests/cases/compiler/readonlyFloat32ArrayAssignableWithFloat32Array.ts @@ -0,0 +1,13 @@ +// @strict: true +function update(b: Readonly) { + const c = copy(b); + add(c, c); +} + +function add(a: Float32Array, b: Float32Array, c: Float32Array = a) { + c[0] = a[0] + b[0]; +} + +function copy(a: Float32Array) { + return new Float32Array(a); +} \ No newline at end of file From b954507ec66c9a3ccc9f60674b9732a715b9e77d Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Mon, 22 Feb 2021 13:50:06 -0800 Subject: [PATCH 5/6] Revert computed name change --- src/compiler/checker.ts | 5 +---- .../reference/FunctionDeclaration8_es6.types | 4 ++-- .../reference/FunctionDeclaration9_es6.types | 4 ++-- .../FunctionPropertyAssignments5_es6.types | 4 ++-- .../asyncArrowFunction8_es2017.types | 4 ++-- .../reference/asyncArrowFunction8_es5.types | 4 ++-- .../reference/asyncArrowFunction8_es6.types | 4 ++-- .../asyncFunctionDeclaration8_es2017.types | 4 ++-- .../asyncFunctionDeclaration8_es5.types | 4 ++-- .../asyncFunctionDeclaration8_es6.types | 4 ++-- .../asyncFunctionDeclaration9_es2017.types | 4 ++-- .../asyncFunctionDeclaration9_es5.types | 4 ++-- .../asyncFunctionDeclaration9_es6.types | 4 ++-- .../classUsedBeforeInitializedVariables.types | 6 +++--- .../computedPropertiesInDestructuring1.types | 8 ++++---- ...mputedPropertiesInDestructuring1_ES6.types | 8 ++++---- .../computedPropertyNames18_ES5.types | 4 ++-- .../computedPropertyNames18_ES6.types | 4 ++-- .../computedPropertyNames19_ES5.types | 4 ++-- .../computedPropertyNames19_ES6.types | 4 ++-- .../computedPropertyNames20_ES5.types | 4 ++-- .../computedPropertyNames20_ES6.types | 4 ++-- .../computedPropertyNames23_ES5.types | 2 +- .../computedPropertyNames23_ES6.types | 2 +- .../computedPropertyNames26_ES5.types | 2 +- .../computedPropertyNames26_ES6.types | 2 +- .../computedPropertyNames48_ES5.types | 2 +- .../computedPropertyNames48_ES6.types | 2 +- .../es5-asyncFunctionObjectLiterals.types | 20 +++++++++---------- .../es5-yieldFunctionObjectLiterals.types | 8 ++++---- .../reference/generatorTypeCheck41.types | 4 ++-- .../reference/generatorTypeCheck42.types | 4 ++-- .../reference/generatorTypeCheck43.types | 4 ++-- .../reference/generatorTypeCheck44.types | 4 ++-- .../reference/invalidNewTarget.es5.types | 4 ++-- .../reference/invalidNewTarget.es6.types | 4 ++-- ...orFromUsingES6FeaturesWithOnlyES5Lib.types | 10 +++++----- ....asyncGenerators.classMethods.es2018.types | 4 ++-- ...nerators.functionDeclarations.es2018.types | 4 ++-- ...enerators.functionExpressions.es2018.types | 4 ++-- ...nerators.objectLiteralMethods.es2018.types | 4 ++-- .../parserComputedPropertyName1.types | 4 ++-- .../parserComputedPropertyName17.types | 4 ++-- .../parserComputedPropertyName2.types | 4 ++-- .../parserComputedPropertyName3.types | 4 ++-- .../parserComputedPropertyName37.types | 4 ++-- .../parserComputedPropertyName4.types | 4 ++-- .../parserComputedPropertyName5.types | 4 ++-- .../parserComputedPropertyName6.types | 4 ++-- .../parserES5ComputedPropertyName2.types | 4 ++-- .../parserES5ComputedPropertyName3.types | 4 ++-- .../parserES5ComputedPropertyName4.types | 4 ++-- .../reference/parserSymbolIndexer5.types | 4 ++-- .../baselines/reference/privateIndexer2.types | 2 +- ...reOfJsonFileWithComputedPropertyName.types | 18 ++++++++--------- .../reference/symbolProperty52.types | 8 ++++---- 56 files changed, 131 insertions(+), 134 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 8c7a0e30a3046..3174e9c972a10 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -25470,10 +25470,7 @@ namespace ts { } if (computedNameType && !(computedNameType.flags & TypeFlags.StringOrNumberLiteralOrUnique)) { - if (isTypeAny(computedNameType)) { - hasComputedStringProperty = true; // string is the closest to a catch-all index signature we have - } - else if (isTypeAssignableTo(computedNameType, stringNumberSymbolType)) { + if (isTypeAssignableTo(computedNameType, stringNumberSymbolType)) { if (isTypeAssignableTo(computedNameType, numberType)) { hasComputedNumberProperty = true; } diff --git a/tests/baselines/reference/FunctionDeclaration8_es6.types b/tests/baselines/reference/FunctionDeclaration8_es6.types index ebd9a509ae174..2588f042add9a 100644 --- a/tests/baselines/reference/FunctionDeclaration8_es6.types +++ b/tests/baselines/reference/FunctionDeclaration8_es6.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/functionDeclarations/FunctionDeclaration8_es6.ts === var v = { [yield]: foo } ->v : { [x: string]: any; } ->{ [yield]: foo } : { [x: string]: any; } +>v : { [x: number]: any; } +>{ [yield]: foo } : { [x: number]: any; } >[yield] : any >yield : any >foo : any diff --git a/tests/baselines/reference/FunctionDeclaration9_es6.types b/tests/baselines/reference/FunctionDeclaration9_es6.types index 2328250738e2a..0c854f623f435 100644 --- a/tests/baselines/reference/FunctionDeclaration9_es6.types +++ b/tests/baselines/reference/FunctionDeclaration9_es6.types @@ -3,8 +3,8 @@ function * foo() { >foo : () => Generator var v = { [yield]: foo } ->v : { [x: string]: () => Generator; } ->{ [yield]: foo } : { [x: string]: () => Generator; } +>v : { [x: number]: () => Generator; } +>{ [yield]: foo } : { [x: number]: () => Generator; } >[yield] : () => Generator >yield : any >foo : () => Generator diff --git a/tests/baselines/reference/FunctionPropertyAssignments5_es6.types b/tests/baselines/reference/FunctionPropertyAssignments5_es6.types index 2ade6f3a755ad..18b2a7f33e50f 100644 --- a/tests/baselines/reference/FunctionPropertyAssignments5_es6.types +++ b/tests/baselines/reference/FunctionPropertyAssignments5_es6.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/functionPropertyAssignments/FunctionPropertyAssignments5_es6.ts === var v = { *[foo()]() { } } ->v : { [x: string]: () => Generator; } ->{ *[foo()]() { } } : { [x: string]: () => Generator; } +>v : { [x: number]: () => Generator; } +>{ *[foo()]() { } } : { [x: number]: () => Generator; } >[foo()] : () => Generator >foo() : any >foo : any diff --git a/tests/baselines/reference/asyncArrowFunction8_es2017.types b/tests/baselines/reference/asyncArrowFunction8_es2017.types index f15880b39dfa3..df476cab5c3db 100644 --- a/tests/baselines/reference/asyncArrowFunction8_es2017.types +++ b/tests/baselines/reference/asyncArrowFunction8_es2017.types @@ -4,8 +4,8 @@ var foo = async (): Promise => { >async (): Promise => { var v = { [await]: foo }} : () => Promise var v = { [await]: foo } ->v : { [x: string]: () => Promise; } ->{ [await]: foo } : { [x: string]: () => Promise; } +>v : { [x: number]: () => Promise; } +>{ [await]: foo } : { [x: number]: () => Promise; } >[await] : () => Promise >await : any > : any diff --git a/tests/baselines/reference/asyncArrowFunction8_es5.types b/tests/baselines/reference/asyncArrowFunction8_es5.types index 418cdc06fbc2d..05095f154fc8b 100644 --- a/tests/baselines/reference/asyncArrowFunction8_es5.types +++ b/tests/baselines/reference/asyncArrowFunction8_es5.types @@ -4,8 +4,8 @@ var foo = async (): Promise => { >async (): Promise => { var v = { [await]: foo }} : () => Promise var v = { [await]: foo } ->v : { [x: string]: () => Promise; } ->{ [await]: foo } : { [x: string]: () => Promise; } +>v : { [x: number]: () => Promise; } +>{ [await]: foo } : { [x: number]: () => Promise; } >[await] : () => Promise >await : any > : any diff --git a/tests/baselines/reference/asyncArrowFunction8_es6.types b/tests/baselines/reference/asyncArrowFunction8_es6.types index e1c4e6145407c..89545c2fa84c3 100644 --- a/tests/baselines/reference/asyncArrowFunction8_es6.types +++ b/tests/baselines/reference/asyncArrowFunction8_es6.types @@ -4,8 +4,8 @@ var foo = async (): Promise => { >async (): Promise => { var v = { [await]: foo }} : () => Promise var v = { [await]: foo } ->v : { [x: string]: () => Promise; } ->{ [await]: foo } : { [x: string]: () => Promise; } +>v : { [x: number]: () => Promise; } +>{ [await]: foo } : { [x: number]: () => Promise; } >[await] : () => Promise >await : any > : any diff --git a/tests/baselines/reference/asyncFunctionDeclaration8_es2017.types b/tests/baselines/reference/asyncFunctionDeclaration8_es2017.types index 92d7335fd54e0..3e46e59409b83 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration8_es2017.types +++ b/tests/baselines/reference/asyncFunctionDeclaration8_es2017.types @@ -1,7 +1,7 @@ === tests/cases/conformance/async/es2017/functionDeclarations/asyncFunctionDeclaration8_es2017.ts === var v = { [await]: foo } ->v : { [x: string]: any; } ->{ [await]: foo } : { [x: string]: any; } +>v : { [x: number]: any; } +>{ [await]: foo } : { [x: number]: any; } >[await] : any >await : any >foo : any diff --git a/tests/baselines/reference/asyncFunctionDeclaration8_es5.types b/tests/baselines/reference/asyncFunctionDeclaration8_es5.types index 65fdadc7696bd..f8647156d1101 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration8_es5.types +++ b/tests/baselines/reference/asyncFunctionDeclaration8_es5.types @@ -1,7 +1,7 @@ === tests/cases/conformance/async/es5/functionDeclarations/asyncFunctionDeclaration8_es5.ts === var v = { [await]: foo } ->v : { [x: string]: any; } ->{ [await]: foo } : { [x: string]: any; } +>v : { [x: number]: any; } +>{ [await]: foo } : { [x: number]: any; } >[await] : any >await : any >foo : any diff --git a/tests/baselines/reference/asyncFunctionDeclaration8_es6.types b/tests/baselines/reference/asyncFunctionDeclaration8_es6.types index 79b594b6734ba..43a0245c7e0d0 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration8_es6.types +++ b/tests/baselines/reference/asyncFunctionDeclaration8_es6.types @@ -1,7 +1,7 @@ === tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration8_es6.ts === var v = { [await]: foo } ->v : { [x: string]: any; } ->{ [await]: foo } : { [x: string]: any; } +>v : { [x: number]: any; } +>{ [await]: foo } : { [x: number]: any; } >[await] : any >await : any >foo : any diff --git a/tests/baselines/reference/asyncFunctionDeclaration9_es2017.types b/tests/baselines/reference/asyncFunctionDeclaration9_es2017.types index ab3624fd0db6e..e137ff2f05fc2 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration9_es2017.types +++ b/tests/baselines/reference/asyncFunctionDeclaration9_es2017.types @@ -3,8 +3,8 @@ async function foo(): Promise { >foo : () => Promise var v = { [await]: foo } ->v : { [x: string]: () => Promise; } ->{ [await]: foo } : { [x: string]: () => Promise; } +>v : { [x: number]: () => Promise; } +>{ [await]: foo } : { [x: number]: () => Promise; } >[await] : () => Promise >await : any > : any diff --git a/tests/baselines/reference/asyncFunctionDeclaration9_es5.types b/tests/baselines/reference/asyncFunctionDeclaration9_es5.types index 3ea8f208bda1b..9db2c54c2b644 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration9_es5.types +++ b/tests/baselines/reference/asyncFunctionDeclaration9_es5.types @@ -3,8 +3,8 @@ async function foo(): Promise { >foo : () => Promise var v = { [await]: foo } ->v : { [x: string]: () => Promise; } ->{ [await]: foo } : { [x: string]: () => Promise; } +>v : { [x: number]: () => Promise; } +>{ [await]: foo } : { [x: number]: () => Promise; } >[await] : () => Promise >await : any > : any diff --git a/tests/baselines/reference/asyncFunctionDeclaration9_es6.types b/tests/baselines/reference/asyncFunctionDeclaration9_es6.types index 861a1c5f303fa..c0a9edc7326f2 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration9_es6.types +++ b/tests/baselines/reference/asyncFunctionDeclaration9_es6.types @@ -3,8 +3,8 @@ async function foo(): Promise { >foo : () => Promise var v = { [await]: foo } ->v : { [x: string]: () => Promise; } ->{ [await]: foo } : { [x: string]: () => Promise; } +>v : { [x: number]: () => Promise; } +>{ [await]: foo } : { [x: number]: () => Promise; } >[await] : () => Promise >await : any > : any diff --git a/tests/baselines/reference/classUsedBeforeInitializedVariables.types b/tests/baselines/reference/classUsedBeforeInitializedVariables.types index 9b45e66a13ba3..f10bf48a8efdf 100644 --- a/tests/baselines/reference/classUsedBeforeInitializedVariables.types +++ b/tests/baselines/reference/classUsedBeforeInitializedVariables.types @@ -48,7 +48,7 @@ class Test { withinObjectLiteral: any = { >withinObjectLiteral : any ->{ [this.withinObjectLiteral]: true, } : { [x: string]: boolean; } +>{ [this.withinObjectLiteral]: true, } : { [x: number]: boolean; } [this.withinObjectLiteral]: true, >[this.withinObjectLiteral] : boolean @@ -61,7 +61,7 @@ class Test { withinObjectLiteralGetterName: any = { >withinObjectLiteralGetterName : any ->{ get [this.withinObjectLiteralGetterName]() { return true; } } : { [x: string]: boolean; } +>{ get [this.withinObjectLiteralGetterName]() { return true; } } : { [x: number]: boolean; } get [this.withinObjectLiteralGetterName]() { >[this.withinObjectLiteralGetterName] : boolean @@ -76,7 +76,7 @@ class Test { withinObjectLiteralSetterName: any = { >withinObjectLiteralSetterName : any ->{ set [this.withinObjectLiteralSetterName](_: any) {} } : { [x: string]: any; } +>{ set [this.withinObjectLiteralSetterName](_: any) {} } : { [x: number]: any; } set [this.withinObjectLiteralSetterName](_: any) {} >[this.withinObjectLiteralSetterName] : any diff --git a/tests/baselines/reference/computedPropertiesInDestructuring1.types b/tests/baselines/reference/computedPropertiesInDestructuring1.types index 31164474b9203..008ef71220387 100644 --- a/tests/baselines/reference/computedPropertiesInDestructuring1.types +++ b/tests/baselines/reference/computedPropertiesInDestructuring1.types @@ -163,8 +163,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}] : [{ [x: number]: any; }] +>{[foo()]: bar4} : { [x: number]: any; } >[foo()] : any >foo() : any >foo : string @@ -176,8 +176,8 @@ let [{[foo.toExponential()]: bar7}] = [{bar: "bar"}]; [{[(1 + {})]: bar4}] = [{bar: "bar"}]; >[{[(1 + {})]: bar4}] = [{bar: "bar"}] : [{ bar: string; }] ->[{[(1 + {})]: bar4}] : [{ [x: string]: any; }] ->{[(1 + {})]: bar4} : { [x: string]: any; } +>[{[(1 + {})]: bar4}] : [{ [x: number]: any; }] +>{[(1 + {})]: bar4} : { [x: number]: any; } >[(1 + {})] : any >(1 + {}) : any >1 + {} : any diff --git a/tests/baselines/reference/computedPropertiesInDestructuring1_ES6.types b/tests/baselines/reference/computedPropertiesInDestructuring1_ES6.types index bcd0156d4bff8..e91f37c3df8f5 100644 --- a/tests/baselines/reference/computedPropertiesInDestructuring1_ES6.types +++ b/tests/baselines/reference/computedPropertiesInDestructuring1_ES6.types @@ -170,8 +170,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}] : [{ [x: number]: any; }] +>{[foo()]: bar4} : { [x: number]: any; } >[foo()] : any >foo() : any >foo : string @@ -183,8 +183,8 @@ let [{[foo.toExponential()]: bar7}] = [{bar: "bar"}]; [{[(1 + {})]: bar4}] = [{bar: "bar"}]; >[{[(1 + {})]: bar4}] = [{bar: "bar"}] : [{ bar: string; }] ->[{[(1 + {})]: bar4}] : [{ [x: string]: any; }] ->{[(1 + {})]: bar4} : { [x: string]: any; } +>[{[(1 + {})]: bar4}] : [{ [x: number]: any; }] +>{[(1 + {})]: bar4} : { [x: number]: any; } >[(1 + {})] : any >(1 + {}) : any >1 + {} : any diff --git a/tests/baselines/reference/computedPropertyNames18_ES5.types b/tests/baselines/reference/computedPropertyNames18_ES5.types index 6ab24fd81954d..893de7a3157b1 100644 --- a/tests/baselines/reference/computedPropertyNames18_ES5.types +++ b/tests/baselines/reference/computedPropertyNames18_ES5.types @@ -3,8 +3,8 @@ function foo() { >foo : () => void var obj = { ->obj : { [x: string]: number; } ->{ [this.bar]: 0 } : { [x: string]: number; } +>obj : { [x: number]: number; } +>{ [this.bar]: 0 } : { [x: number]: number; } [this.bar]: 0 >[this.bar] : number diff --git a/tests/baselines/reference/computedPropertyNames18_ES6.types b/tests/baselines/reference/computedPropertyNames18_ES6.types index f50f2f8a3517d..37f531a7907ef 100644 --- a/tests/baselines/reference/computedPropertyNames18_ES6.types +++ b/tests/baselines/reference/computedPropertyNames18_ES6.types @@ -3,8 +3,8 @@ function foo() { >foo : () => void var obj = { ->obj : { [x: string]: number; } ->{ [this.bar]: 0 } : { [x: string]: number; } +>obj : { [x: number]: number; } +>{ [this.bar]: 0 } : { [x: number]: number; } [this.bar]: 0 >[this.bar] : number diff --git a/tests/baselines/reference/computedPropertyNames19_ES5.types b/tests/baselines/reference/computedPropertyNames19_ES5.types index 2abbae2716dfa..81bf76e4ac3c5 100644 --- a/tests/baselines/reference/computedPropertyNames19_ES5.types +++ b/tests/baselines/reference/computedPropertyNames19_ES5.types @@ -3,8 +3,8 @@ module M { >M : typeof M var obj = { ->obj : { [x: string]: number; } ->{ [this.bar]: 0 } : { [x: string]: number; } +>obj : { [x: number]: number; } +>{ [this.bar]: 0 } : { [x: number]: number; } [this.bar]: 0 >[this.bar] : number diff --git a/tests/baselines/reference/computedPropertyNames19_ES6.types b/tests/baselines/reference/computedPropertyNames19_ES6.types index e9b738e651186..5dcc6df206aea 100644 --- a/tests/baselines/reference/computedPropertyNames19_ES6.types +++ b/tests/baselines/reference/computedPropertyNames19_ES6.types @@ -3,8 +3,8 @@ module M { >M : typeof M var obj = { ->obj : { [x: string]: number; } ->{ [this.bar]: 0 } : { [x: string]: number; } +>obj : { [x: number]: number; } +>{ [this.bar]: 0 } : { [x: number]: number; } [this.bar]: 0 >[this.bar] : number diff --git a/tests/baselines/reference/computedPropertyNames20_ES5.types b/tests/baselines/reference/computedPropertyNames20_ES5.types index 4e0816697fcc3..7a95872481129 100644 --- a/tests/baselines/reference/computedPropertyNames20_ES5.types +++ b/tests/baselines/reference/computedPropertyNames20_ES5.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/computedProperties/computedPropertyNames20_ES5.ts === var obj = { ->obj : { [x: string]: number; } ->{ [this.bar]: 0} : { [x: string]: number; } +>obj : { [x: number]: number; } +>{ [this.bar]: 0} : { [x: number]: number; } [this.bar]: 0 >[this.bar] : number diff --git a/tests/baselines/reference/computedPropertyNames20_ES6.types b/tests/baselines/reference/computedPropertyNames20_ES6.types index fd23997e1a8b9..516559e3e3eeb 100644 --- a/tests/baselines/reference/computedPropertyNames20_ES6.types +++ b/tests/baselines/reference/computedPropertyNames20_ES6.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/computedProperties/computedPropertyNames20_ES6.ts === var obj = { ->obj : { [x: string]: number; } ->{ [this.bar]: 0} : { [x: string]: number; } +>obj : { [x: number]: number; } +>{ [this.bar]: 0} : { [x: number]: number; } [this.bar]: 0 >[this.bar] : number diff --git a/tests/baselines/reference/computedPropertyNames23_ES5.types b/tests/baselines/reference/computedPropertyNames23_ES5.types index 88bfa0c8cd479..7090bfa3ba9a0 100644 --- a/tests/baselines/reference/computedPropertyNames23_ES5.types +++ b/tests/baselines/reference/computedPropertyNames23_ES5.types @@ -13,7 +13,7 @@ class C { { [this.bar()]: 1 }[0] >{ [this.bar()]: 1 }[0] : number ->{ [this.bar()]: 1 } : { [x: string]: number; } +>{ [this.bar()]: 1 } : { [x: number]: number; } >[this.bar()] : number >this.bar() : any >this.bar : any diff --git a/tests/baselines/reference/computedPropertyNames23_ES6.types b/tests/baselines/reference/computedPropertyNames23_ES6.types index 7c05c1eac5d45..39133196ed42f 100644 --- a/tests/baselines/reference/computedPropertyNames23_ES6.types +++ b/tests/baselines/reference/computedPropertyNames23_ES6.types @@ -13,7 +13,7 @@ class C { { [this.bar()]: 1 }[0] >{ [this.bar()]: 1 }[0] : number ->{ [this.bar()]: 1 } : { [x: string]: number; } +>{ [this.bar()]: 1 } : { [x: number]: number; } >[this.bar()] : number >this.bar() : any >this.bar : any diff --git a/tests/baselines/reference/computedPropertyNames26_ES5.types b/tests/baselines/reference/computedPropertyNames26_ES5.types index 429c2abadcf98..c9bebbd010a9c 100644 --- a/tests/baselines/reference/computedPropertyNames26_ES5.types +++ b/tests/baselines/reference/computedPropertyNames26_ES5.types @@ -18,7 +18,7 @@ class C extends Base { { [super.bar()]: 1 }[0] >{ [super.bar()]: 1 }[0] : number ->{ [super.bar()]: 1 } : { [x: string]: number; } +>{ [super.bar()]: 1 } : { [x: number]: number; } >[super.bar()] : number >super.bar() : any >super.bar : any diff --git a/tests/baselines/reference/computedPropertyNames26_ES6.types b/tests/baselines/reference/computedPropertyNames26_ES6.types index fa59e87db9ea4..6a4cf5a15e0c9 100644 --- a/tests/baselines/reference/computedPropertyNames26_ES6.types +++ b/tests/baselines/reference/computedPropertyNames26_ES6.types @@ -20,7 +20,7 @@ class C extends Base { { [super.bar()]: 1 }[0] >{ [super.bar()]: 1 }[0] : number ->{ [super.bar()]: 1 } : { [x: string]: number; } +>{ [super.bar()]: 1 } : { [x: number]: number; } >[super.bar()] : number >super.bar() : any >super.bar : any diff --git a/tests/baselines/reference/computedPropertyNames48_ES5.types b/tests/baselines/reference/computedPropertyNames48_ES5.types index 4953c70a4b03b..d56824ecbc72c 100644 --- a/tests/baselines/reference/computedPropertyNames48_ES5.types +++ b/tests/baselines/reference/computedPropertyNames48_ES5.types @@ -14,7 +14,7 @@ var a: any; extractIndexer({ >extractIndexer({ [a]: ""}) : string >extractIndexer : (p: { [n: number]: T; }) => T ->{ [a]: ""} : { [x: string]: string; } +>{ [a]: ""} : { [x: number]: string; } [a]: "" >[a] : string diff --git a/tests/baselines/reference/computedPropertyNames48_ES6.types b/tests/baselines/reference/computedPropertyNames48_ES6.types index 2643122606889..516917c0241ce 100644 --- a/tests/baselines/reference/computedPropertyNames48_ES6.types +++ b/tests/baselines/reference/computedPropertyNames48_ES6.types @@ -14,7 +14,7 @@ var a: any; extractIndexer({ >extractIndexer({ [a]: ""}) : string >extractIndexer : (p: { [n: number]: T; }) => T ->{ [a]: ""} : { [x: string]: string; } +>{ [a]: ""} : { [x: number]: string; } [a]: "" >[a] : string diff --git a/tests/baselines/reference/es5-asyncFunctionObjectLiterals.types b/tests/baselines/reference/es5-asyncFunctionObjectLiterals.types index 24ad1c9f28cc3..b594e1ba35ad1 100644 --- a/tests/baselines/reference/es5-asyncFunctionObjectLiterals.types +++ b/tests/baselines/reference/es5-asyncFunctionObjectLiterals.types @@ -51,9 +51,9 @@ async function objectLiteral2() { >objectLiteral2 : () => Promise x = { ->x = { [await a]: y, b: z } : { [x: string]: any; b: any; } +>x = { [await a]: y, b: z } : { [x: number]: any; b: any; } >x : any ->{ [await a]: y, b: z } : { [x: string]: any; b: any; } +>{ [await a]: y, b: z } : { [x: number]: any; b: any; } [await a]: y, >[await a] : any @@ -72,9 +72,9 @@ async function objectLiteral3() { >objectLiteral3 : () => Promise x = { ->x = { [a]: await y, b: z } : { [x: string]: any; b: any; } +>x = { [a]: await y, b: z } : { [x: number]: any; b: any; } >x : any ->{ [a]: await y, b: z } : { [x: string]: any; b: any; } +>{ [a]: await y, b: z } : { [x: number]: any; b: any; } [a]: await y, >[a] : any @@ -93,9 +93,9 @@ async function objectLiteral4() { >objectLiteral4 : () => Promise x = { ->x = { a: await y, [b]: z } : { [x: string]: any; a: any; } +>x = { a: await y, [b]: z } : { [x: number]: any; a: any; } >x : any ->{ a: await y, [b]: z } : { [x: string]: any; a: any; } +>{ a: await y, [b]: z } : { [x: number]: any; a: any; } a: await y, >a : any @@ -114,9 +114,9 @@ async function objectLiteral5() { >objectLiteral5 : () => Promise x = { ->x = { a: y, [await b]: z } : { [x: string]: any; a: any; } +>x = { a: y, [await b]: z } : { [x: number]: any; a: any; } >x : any ->{ a: y, [await b]: z } : { [x: string]: any; a: any; } +>{ a: y, [await b]: z } : { [x: number]: any; a: any; } a: y, >a : any @@ -135,9 +135,9 @@ async function objectLiteral6() { >objectLiteral6 : () => Promise x = { ->x = { a: y, [b]: await z } : { [x: string]: any; a: any; } +>x = { a: y, [b]: await z } : { [x: number]: any; a: any; } >x : any ->{ a: y, [b]: await z } : { [x: string]: any; a: any; } +>{ a: y, [b]: await z } : { [x: number]: any; a: any; } a: y, >a : any diff --git a/tests/baselines/reference/es5-yieldFunctionObjectLiterals.types b/tests/baselines/reference/es5-yieldFunctionObjectLiterals.types index e8f863c22d40a..c32ec8fd5c363 100644 --- a/tests/baselines/reference/es5-yieldFunctionObjectLiterals.types +++ b/tests/baselines/reference/es5-yieldFunctionObjectLiterals.types @@ -135,8 +135,8 @@ function* objectLiteral6() { >objectLiteral6 : () => Generator const x = { ->x : { [x: string]: number; a: number; c: number; } ->{ a: 1, [yield]: 2, c: 4, } : { [x: string]: number; a: number; c: number; } +>x : { [x: number]: number; a: number; c: number; } +>{ a: 1, [yield]: 2, c: 4, } : { [x: number]: number; a: number; c: number; } a: 1, >a : number @@ -157,8 +157,8 @@ function* objectLiteral7() { >objectLiteral7 : () => Generator const x = { ->x : { [x: string]: any; a: number; c: number; } ->{ a: 1, [yield]: yield 2, c: 4, } : { [x: string]: any; a: number; c: number; } +>x : { [x: number]: any; a: number; c: number; } +>{ a: 1, [yield]: yield 2, c: 4, } : { [x: number]: any; a: number; c: number; } a: 1, >a : number diff --git a/tests/baselines/reference/generatorTypeCheck41.types b/tests/baselines/reference/generatorTypeCheck41.types index e06689538bd48..d22c875416f8b 100644 --- a/tests/baselines/reference/generatorTypeCheck41.types +++ b/tests/baselines/reference/generatorTypeCheck41.types @@ -3,8 +3,8 @@ function* g() { >g : () => Generator let x = { ->x : { [x: string]: number; } ->{ [yield 0]: 0 } : { [x: string]: number; } +>x : { [x: number]: number; } +>{ [yield 0]: 0 } : { [x: number]: number; } [yield 0]: 0 >[yield 0] : number diff --git a/tests/baselines/reference/generatorTypeCheck42.types b/tests/baselines/reference/generatorTypeCheck42.types index dd69a15f6d70b..f3e82ad1a98d0 100644 --- a/tests/baselines/reference/generatorTypeCheck42.types +++ b/tests/baselines/reference/generatorTypeCheck42.types @@ -3,8 +3,8 @@ function* g() { >g : () => Generator let x = { ->x : { [x: string]: () => void; } ->{ [yield 0]() { } } : { [x: string]: () => void; } +>x : { [x: number]: () => void; } +>{ [yield 0]() { } } : { [x: number]: () => void; } [yield 0]() { >[yield 0] : () => void diff --git a/tests/baselines/reference/generatorTypeCheck43.types b/tests/baselines/reference/generatorTypeCheck43.types index e7731cfffc574..cdf5cdc81bbb8 100644 --- a/tests/baselines/reference/generatorTypeCheck43.types +++ b/tests/baselines/reference/generatorTypeCheck43.types @@ -3,8 +3,8 @@ function* g() { >g : () => Generator let x = { ->x : { [x: string]: () => Generator; } ->{ *[yield 0]() { } } : { [x: string]: () => Generator; } +>x : { [x: number]: () => Generator; } +>{ *[yield 0]() { } } : { [x: number]: () => Generator; } *[yield 0]() { >[yield 0] : () => Generator diff --git a/tests/baselines/reference/generatorTypeCheck44.types b/tests/baselines/reference/generatorTypeCheck44.types index 130a614931e2e..53dfd59266ec8 100644 --- a/tests/baselines/reference/generatorTypeCheck44.types +++ b/tests/baselines/reference/generatorTypeCheck44.types @@ -3,8 +3,8 @@ function* g() { >g : () => Generator let x = { ->x : { [x: string]: number; } ->{ get [yield 0]() { return 0; } } : { [x: string]: number; } +>x : { [x: number]: number; } +>{ get [yield 0]() { return 0; } } : { [x: number]: number; } get [yield 0]() { >[yield 0] : number diff --git a/tests/baselines/reference/invalidNewTarget.es5.types b/tests/baselines/reference/invalidNewTarget.es5.types index e3cc854aaeb94..5a7703b684462 100644 --- a/tests/baselines/reference/invalidNewTarget.es5.types +++ b/tests/baselines/reference/invalidNewTarget.es5.types @@ -73,8 +73,8 @@ class C { } const O = { ->O : { [x: string]: any; k(): any; readonly l: any; m: any; n: any; } ->{ [new.target]: undefined, k() { return new.target; }, get l() { return new.target; }, set m(_) { _ = new.target; }, n: new.target,} : { [x: string]: any; k(): any; readonly l: any; m: any; n: any; } +>O : { [x: number]: any; k(): any; readonly l: any; m: any; n: any; } +>{ [new.target]: undefined, k() { return new.target; }, get l() { return new.target; }, set m(_) { _ = new.target; }, n: new.target,} : { [x: number]: undefined; k(): any; readonly l: any; m: any; n: any; } [new.target]: undefined, >[new.target] : undefined diff --git a/tests/baselines/reference/invalidNewTarget.es6.types b/tests/baselines/reference/invalidNewTarget.es6.types index bb9dfef0bf66d..a7690f4cbbca8 100644 --- a/tests/baselines/reference/invalidNewTarget.es6.types +++ b/tests/baselines/reference/invalidNewTarget.es6.types @@ -73,8 +73,8 @@ class C { } const O = { ->O : { [x: string]: any; k(): any; readonly l: any; m: any; n: any; } ->{ [new.target]: undefined, k() { return new.target; }, get l() { return new.target; }, set m(_) { _ = new.target; }, n: new.target,} : { [x: string]: any; k(): any; readonly l: any; m: any; n: any; } +>O : { [x: number]: any; k(): any; readonly l: any; m: any; n: any; } +>{ [new.target]: undefined, k() { return new.target; }, get l() { return new.target; }, set m(_) { _ = new.target; }, n: new.target,} : { [x: number]: undefined; k(): any; readonly l: any; m: any; n: any; } [new.target]: undefined, >[new.target] : undefined diff --git a/tests/baselines/reference/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.types b/tests/baselines/reference/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.types index 64a21a55835bd..7c9abb4062ecf 100644 --- a/tests/baselines/reference/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.types +++ b/tests/baselines/reference/modularizeLibrary_ErrorFromUsingES6FeaturesWithOnlyES5Lib.types @@ -60,8 +60,8 @@ Math.sign(1); // Using ES6 object var o = { ->o : { [x: string]: number | ((value: any) => boolean); a: number; } ->{ a: 2, [Symbol.hasInstance](value: any) { return false; }} : { [x: string]: number | ((value: any) => boolean); a: number; } +>o : { [x: number]: (value: any) => boolean; a: number; } +>{ a: 2, [Symbol.hasInstance](value: any) { return false; }} : { [x: number]: (value: any) => boolean; a: number; } a: 2, >a : number @@ -81,7 +81,7 @@ var o = { o.hasOwnProperty(Symbol.hasInstance); >o.hasOwnProperty(Symbol.hasInstance) : boolean >o.hasOwnProperty : (v: PropertyKey) => boolean ->o : { [x: string]: number | ((value: any) => boolean); a: number; } +>o : { [x: number]: (value: any) => boolean; a: number; } >hasOwnProperty : (v: PropertyKey) => boolean >Symbol.hasInstance : any >Symbol : any @@ -140,8 +140,8 @@ var s = Symbol(); // Using ES6 wellknown-symbol const o1 = { ->o1 : { [x: string]: (value: any) => boolean; } ->{ [Symbol.hasInstance](value: any) { return false; }} : { [x: string]: (value: any) => boolean; } +>o1 : { [x: number]: (value: any) => boolean; } +>{ [Symbol.hasInstance](value: any) { return false; }} : { [x: number]: (value: any) => boolean; } [Symbol.hasInstance](value: any) { >[Symbol.hasInstance] : (value: any) => boolean diff --git a/tests/baselines/reference/parser.asyncGenerators.classMethods.es2018.types b/tests/baselines/reference/parser.asyncGenerators.classMethods.es2018.types index 9ba9d23751eeb..8de20801f686d 100644 --- a/tests/baselines/reference/parser.asyncGenerators.classMethods.es2018.types +++ b/tests/baselines/reference/parser.asyncGenerators.classMethods.es2018.types @@ -239,8 +239,8 @@ class C22 { >f : () => AsyncGenerator const x = { [yield]: 1 }; ->x : { [x: string]: number; } ->{ [yield]: 1 } : { [x: string]: number; } +>x : { [x: number]: number; } +>{ [yield]: 1 } : { [x: number]: number; } >[yield] : number >yield : any >1 : 1 diff --git a/tests/baselines/reference/parser.asyncGenerators.functionDeclarations.es2018.types b/tests/baselines/reference/parser.asyncGenerators.functionDeclarations.es2018.types index 0fdc28d73b710..668567c29ce12 100644 --- a/tests/baselines/reference/parser.asyncGenerators.functionDeclarations.es2018.types +++ b/tests/baselines/reference/parser.asyncGenerators.functionDeclarations.es2018.types @@ -147,8 +147,8 @@ async function * f21() { >f21 : () => AsyncGenerator const x = { [yield]: 1 }; ->x : { [x: string]: number; } ->{ [yield]: 1 } : { [x: string]: number; } +>x : { [x: number]: number; } +>{ [yield]: 1 } : { [x: number]: number; } >[yield] : number >yield : any >1 : 1 diff --git a/tests/baselines/reference/parser.asyncGenerators.functionExpressions.es2018.types b/tests/baselines/reference/parser.asyncGenerators.functionExpressions.es2018.types index 87a4fb10a0553..071b5834b3ed8 100644 --- a/tests/baselines/reference/parser.asyncGenerators.functionExpressions.es2018.types +++ b/tests/baselines/reference/parser.asyncGenerators.functionExpressions.es2018.types @@ -186,8 +186,8 @@ const f21 = async function *() { >async function *() { const x = { [yield]: 1 };} : () => AsyncGenerator const x = { [yield]: 1 }; ->x : { [x: string]: number; } ->{ [yield]: 1 } : { [x: string]: number; } +>x : { [x: number]: number; } +>{ [yield]: 1 } : { [x: number]: number; } >[yield] : number >yield : any >1 : 1 diff --git a/tests/baselines/reference/parser.asyncGenerators.objectLiteralMethods.es2018.types b/tests/baselines/reference/parser.asyncGenerators.objectLiteralMethods.es2018.types index 5eac9ce9b23fe..b9ec519e0e918 100644 --- a/tests/baselines/reference/parser.asyncGenerators.objectLiteralMethods.es2018.types +++ b/tests/baselines/reference/parser.asyncGenerators.objectLiteralMethods.es2018.types @@ -251,8 +251,8 @@ const o21 = { >f : () => AsyncGenerator const x = { [yield]: 1 }; ->x : { [x: string]: number; } ->{ [yield]: 1 } : { [x: string]: number; } +>x : { [x: number]: number; } +>{ [yield]: 1 } : { [x: number]: number; } >[yield] : number >yield : any >1 : 1 diff --git a/tests/baselines/reference/parserComputedPropertyName1.types b/tests/baselines/reference/parserComputedPropertyName1.types index 1b77ff7bb6067..229b345194efc 100644 --- a/tests/baselines/reference/parserComputedPropertyName1.types +++ b/tests/baselines/reference/parserComputedPropertyName1.types @@ -1,7 +1,7 @@ === tests/cases/conformance/parser/ecmascript6/ComputedPropertyNames/parserComputedPropertyName1.ts === var v = { [e] }; ->v : { [x: string]: any; } ->{ [e] } : { [x: string]: any; } +>v : { [x: number]: any; } +>{ [e] } : { [x: number]: any; } >[e] : any >e : any > : any diff --git a/tests/baselines/reference/parserComputedPropertyName17.types b/tests/baselines/reference/parserComputedPropertyName17.types index bfe61e79cab83..141f36f9455ee 100644 --- a/tests/baselines/reference/parserComputedPropertyName17.types +++ b/tests/baselines/reference/parserComputedPropertyName17.types @@ -1,7 +1,7 @@ === tests/cases/conformance/parser/ecmascript6/ComputedPropertyNames/parserComputedPropertyName17.ts === var v = { set [e](v) { } } ->v : { [x: string]: any; } ->{ set [e](v) { } } : { [x: string]: any; } +>v : { [x: number]: any; } +>{ set [e](v) { } } : { [x: number]: any; } >[e] : any >e : any >v : any diff --git a/tests/baselines/reference/parserComputedPropertyName2.types b/tests/baselines/reference/parserComputedPropertyName2.types index bc1600e4b2b08..fedfb2ea33ff8 100644 --- a/tests/baselines/reference/parserComputedPropertyName2.types +++ b/tests/baselines/reference/parserComputedPropertyName2.types @@ -1,7 +1,7 @@ === tests/cases/conformance/parser/ecmascript6/ComputedPropertyNames/parserComputedPropertyName2.ts === var v = { [e]: 1 }; ->v : { [x: string]: number; } ->{ [e]: 1 } : { [x: string]: number; } +>v : { [x: number]: number; } +>{ [e]: 1 } : { [x: number]: number; } >[e] : number >e : any >1 : 1 diff --git a/tests/baselines/reference/parserComputedPropertyName3.types b/tests/baselines/reference/parserComputedPropertyName3.types index 981221459cac4..7a9d4aff23248 100644 --- a/tests/baselines/reference/parserComputedPropertyName3.types +++ b/tests/baselines/reference/parserComputedPropertyName3.types @@ -1,7 +1,7 @@ === tests/cases/conformance/parser/ecmascript6/ComputedPropertyNames/parserComputedPropertyName3.ts === var v = { [e]() { } }; ->v : { [x: string]: () => void; } ->{ [e]() { } } : { [x: string]: () => void; } +>v : { [x: number]: () => void; } +>{ [e]() { } } : { [x: number]: () => void; } >[e] : () => void >e : any diff --git a/tests/baselines/reference/parserComputedPropertyName37.types b/tests/baselines/reference/parserComputedPropertyName37.types index 145108c7d78cc..c0ef9ee0eb3c3 100644 --- a/tests/baselines/reference/parserComputedPropertyName37.types +++ b/tests/baselines/reference/parserComputedPropertyName37.types @@ -1,7 +1,7 @@ === tests/cases/conformance/parser/ecmascript6/ComputedPropertyNames/parserComputedPropertyName37.ts === var v = { ->v : { [x: string]: number; } ->{ [public]: 0} : { [x: string]: number; } +>v : { [x: number]: number; } +>{ [public]: 0} : { [x: number]: number; } [public]: 0 >[public] : number diff --git a/tests/baselines/reference/parserComputedPropertyName4.types b/tests/baselines/reference/parserComputedPropertyName4.types index 05065aee5a4d0..66ac75b156b26 100644 --- a/tests/baselines/reference/parserComputedPropertyName4.types +++ b/tests/baselines/reference/parserComputedPropertyName4.types @@ -1,7 +1,7 @@ === tests/cases/conformance/parser/ecmascript6/ComputedPropertyNames/parserComputedPropertyName4.ts === var v = { get [e]() { } }; ->v : { [x: string]: void; } ->{ get [e]() { } } : { [x: string]: void; } +>v : { [x: number]: void; } +>{ get [e]() { } } : { [x: number]: void; } >[e] : void >e : any diff --git a/tests/baselines/reference/parserComputedPropertyName5.types b/tests/baselines/reference/parserComputedPropertyName5.types index 6d5b6dbd23583..383f590909fc2 100644 --- a/tests/baselines/reference/parserComputedPropertyName5.types +++ b/tests/baselines/reference/parserComputedPropertyName5.types @@ -1,7 +1,7 @@ === tests/cases/conformance/parser/ecmascript6/ComputedPropertyNames/parserComputedPropertyName5.ts === var v = { public get [e]() { } }; ->v : { [x: string]: void; } ->{ public get [e]() { } } : { [x: string]: void; } +>v : { [x: number]: void; } +>{ public get [e]() { } } : { [x: number]: void; } >[e] : void >e : any diff --git a/tests/baselines/reference/parserComputedPropertyName6.types b/tests/baselines/reference/parserComputedPropertyName6.types index c15cefd59c2ee..c292156dce011 100644 --- a/tests/baselines/reference/parserComputedPropertyName6.types +++ b/tests/baselines/reference/parserComputedPropertyName6.types @@ -1,7 +1,7 @@ === tests/cases/conformance/parser/ecmascript6/ComputedPropertyNames/parserComputedPropertyName6.ts === var v = { [e]: 1, [e + e]: 2 }; ->v : { [x: string]: number; } ->{ [e]: 1, [e + e]: 2 } : { [x: string]: number; } +>v : { [x: number]: number; } +>{ [e]: 1, [e + e]: 2 } : { [x: number]: number; } >[e] : number >e : any >1 : 1 diff --git a/tests/baselines/reference/parserES5ComputedPropertyName2.types b/tests/baselines/reference/parserES5ComputedPropertyName2.types index 0aa59a0ccda28..6d40c5687e9a7 100644 --- a/tests/baselines/reference/parserES5ComputedPropertyName2.types +++ b/tests/baselines/reference/parserES5ComputedPropertyName2.types @@ -1,7 +1,7 @@ === tests/cases/conformance/parser/ecmascript5/ComputedPropertyNames/parserES5ComputedPropertyName2.ts === var v = { [e]: 1 }; ->v : { [x: string]: number; } ->{ [e]: 1 } : { [x: string]: number; } +>v : { [x: number]: number; } +>{ [e]: 1 } : { [x: number]: number; } >[e] : number >e : any >1 : 1 diff --git a/tests/baselines/reference/parserES5ComputedPropertyName3.types b/tests/baselines/reference/parserES5ComputedPropertyName3.types index d40de1262582f..012ebae6bbf3f 100644 --- a/tests/baselines/reference/parserES5ComputedPropertyName3.types +++ b/tests/baselines/reference/parserES5ComputedPropertyName3.types @@ -1,7 +1,7 @@ === tests/cases/conformance/parser/ecmascript5/ComputedPropertyNames/parserES5ComputedPropertyName3.ts === var v = { [e]() { } }; ->v : { [x: string]: () => void; } ->{ [e]() { } } : { [x: string]: () => void; } +>v : { [x: number]: () => void; } +>{ [e]() { } } : { [x: number]: () => void; } >[e] : () => void >e : any diff --git a/tests/baselines/reference/parserES5ComputedPropertyName4.types b/tests/baselines/reference/parserES5ComputedPropertyName4.types index 160885480944e..4e021729a7d8c 100644 --- a/tests/baselines/reference/parserES5ComputedPropertyName4.types +++ b/tests/baselines/reference/parserES5ComputedPropertyName4.types @@ -1,7 +1,7 @@ === tests/cases/conformance/parser/ecmascript5/ComputedPropertyNames/parserES5ComputedPropertyName4.ts === var v = { get [e]() { } }; ->v : { [x: string]: void; } ->{ get [e]() { } } : { [x: string]: void; } +>v : { [x: number]: void; } +>{ get [e]() { } } : { [x: number]: void; } >[e] : void >e : any diff --git a/tests/baselines/reference/parserSymbolIndexer5.types b/tests/baselines/reference/parserSymbolIndexer5.types index 864312e54389f..e7a51c52393d3 100644 --- a/tests/baselines/reference/parserSymbolIndexer5.types +++ b/tests/baselines/reference/parserSymbolIndexer5.types @@ -1,7 +1,7 @@ === tests/cases/conformance/parser/ecmascript6/Symbols/parserSymbolIndexer5.ts === var x = { ->x : { [x: string]: any; "": any; } ->{ [s: symbol]: ""} : { [x: string]: any; "": any; } +>x : { [x: number]: any; "": any; } +>{ [s: symbol]: ""} : { [x: number]: any; "": any; } [s: symbol]: "" >[s : any diff --git a/tests/baselines/reference/privateIndexer2.types b/tests/baselines/reference/privateIndexer2.types index e279d40b355a3..98ade7651ae29 100644 --- a/tests/baselines/reference/privateIndexer2.types +++ b/tests/baselines/reference/privateIndexer2.types @@ -3,7 +3,7 @@ var x = { >x : any ->{ private [x: string]: string;} : { [x: string]: any; string: any; } +>{ private [x: string]: string;} : { [x: number]: any; string: any; } private [x: string]: string; >[x : any diff --git a/tests/baselines/reference/requireOfJsonFileWithComputedPropertyName.types b/tests/baselines/reference/requireOfJsonFileWithComputedPropertyName.types index 8b8cb7c64c4de..3fc20bb2cce9d 100644 --- a/tests/baselines/reference/requireOfJsonFileWithComputedPropertyName.types +++ b/tests/baselines/reference/requireOfJsonFileWithComputedPropertyName.types @@ -1,26 +1,26 @@ === tests/cases/compiler/file1.ts === import b1 = require('./b.json'); ->b1 : { [x: string]: number; } +>b1 : { [x: number]: number; } let x = b1; ->x : { [x: string]: number; } ->b1 : { [x: string]: number; } +>x : { [x: number]: number; } +>b1 : { [x: number]: number; } import b2 = require('./b.json'); ->b2 : { [x: string]: number; } +>b2 : { [x: number]: number; } if (x) { ->x : { [x: string]: number; } +>x : { [x: number]: number; } x = b2; ->x = b2 : { [x: string]: number; } ->x : { [x: string]: number; } ->b2 : { [x: string]: number; } +>x = b2 : { [x: number]: number; } +>x : { [x: number]: number; } +>b2 : { [x: number]: number; } } === tests/cases/compiler/b.json === { ->{ [a]: 10} : { [x: string]: number; } +>{ [a]: 10} : { [x: number]: number; } [a]: 10 >[a] : number diff --git a/tests/baselines/reference/symbolProperty52.types b/tests/baselines/reference/symbolProperty52.types index 72ad1693a697e..0e3f56897910d 100644 --- a/tests/baselines/reference/symbolProperty52.types +++ b/tests/baselines/reference/symbolProperty52.types @@ -1,7 +1,7 @@ === tests/cases/conformance/es6/Symbols/symbolProperty52.ts === var obj = { ->obj : { [x: string]: number; } ->{ [Symbol.nonsense]: 0} : { [x: string]: number; } +>obj : { [x: number]: number; } +>{ [Symbol.nonsense]: 0} : { [x: number]: number; } [Symbol.nonsense]: 0 >[Symbol.nonsense] : number @@ -14,12 +14,12 @@ var obj = { obj = {}; >obj = {} : {} ->obj : { [x: string]: number; } +>obj : { [x: number]: number; } >{} : {} obj[Symbol.nonsense]; >obj[Symbol.nonsense] : number ->obj : { [x: string]: number; } +>obj : { [x: number]: number; } >Symbol.nonsense : any >Symbol : SymbolConstructor >nonsense : any From e99c05a632fd07bffdcf048adb90a4b1eb7a01a0 Mon Sep 17 00:00:00 2001 From: Wesley Wigham Date: Mon, 22 Feb 2021 14:11:39 -0800 Subject: [PATCH 6/6] Style comments --- src/compiler/checker.ts | 19 ++++++++++++------- src/services/navigationBar.ts | 8 +++++++- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 3174e9c972a10..bfd16e297c064 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -3678,11 +3678,15 @@ namespace ts { const additionalContainers = mapDefined(container.declarations, fileSymbolIfFileSymbolExportEqualsContainer); const reexportContainers = enclosingDeclaration && getAlternativeContainingModules(symbol, enclosingDeclaration); const objectLiteralContainer = getVariableDeclarationOfObjectLiteral(container, meaning); - if (enclosingDeclaration && container.flags & getQualifiedLeftMeaning(meaning) && getAccessibleSymbolChain(container, enclosingDeclaration, SymbolFlags.Namespace, /*externalOnly*/ false)) { + if ( + enclosingDeclaration && + container.flags & getQualifiedLeftMeaning(meaning) && + getAccessibleSymbolChain(container, enclosingDeclaration, SymbolFlags.Namespace, /*externalOnly*/ false) + ) { return append(concatenate(concatenate([container], additionalContainers), reexportContainers), objectLiteralContainer); // This order expresses a preference for the real container if it is in scope } - // we potentially a symbol which is a member of the instance side of something - look for a variable in scope with the container's type - // which may be acting like a namespace + // we potentially have a symbol which is a member of the instance side of something - look for a variable in scope with the container's type + // which may be acting like a namespace (eg, `Symbol` acts like a namespace when looking up `Symbol.toStringTag`) const firstVariableMatch = !(container.flags & getQualifiedLeftMeaning(meaning)) && container.flags & SymbolFlags.Type && getDeclaredTypeOfSymbol(container).flags & TypeFlags.Object @@ -3694,9 +3698,10 @@ namespace ts { } }); }) : undefined; - const res = append(append(additionalContainers, container), objectLiteralContainer); - const resWithReexports = concatenate(res, reexportContainers); - return firstVariableMatch ? [firstVariableMatch, ...resWithReexports] : resWithReexports; + let res = firstVariableMatch ? [firstVariableMatch, ...additionalContainers, container] : [...additionalContainers, container]; + res = append(res, objectLiteralContainer); + res = addRange(res, reexportContainers); + return res; } const candidates = mapDefined(symbol.declarations, d => { if (!isAmbientModule(d) && d.parent && hasNonGlobalAugmentationExternalModuleSymbol(d.parent)) { @@ -8728,7 +8733,7 @@ namespace ts { function widenTypeForVariableLikeDeclaration(type: Type | undefined, declaration: any, reportErrors?: boolean) { if (type) { - // TODO: Remove the following SymbolConstructor special case when back compat with pre-3.0 libs isn't required + // TODO: If back compat with pre-3.0/4.0 libs isn't required, remove the following SymbolConstructor special case transforming `symbol` into `unique symbol` if (type.flags & TypeFlags.ESSymbol && isGlobalSymbolConstructor(declaration.parent)) { type = getESSymbolLikeTypeForNode(declaration); } diff --git a/src/services/navigationBar.ts b/src/services/navigationBar.ts index c9ee6f1e245ec..16c5b07a45915 100644 --- a/src/services/navigationBar.ts +++ b/src/services/navigationBar.ts @@ -200,7 +200,13 @@ namespace ts.NavigationBar { * symbols from other unique symbols, we do the below to retain those members in the nav tree. */ function hasNavigationBarName(node: Declaration) { - return !hasDynamicName(node) || (node.kind !== SyntaxKind.BinaryExpression && isPropertyAccessExpression(node.name.expression) && isIdentifier(node.name.expression.expression) && idText(node.name.expression.expression) === "Symbol"); + return !hasDynamicName(node) || + ( + node.kind !== SyntaxKind.BinaryExpression && + isPropertyAccessExpression(node.name.expression) && + isIdentifier(node.name.expression.expression) && + idText(node.name.expression.expression) === "Symbol" + ); } /** Look for navigation bar items in node's subtree, adding them to the current `parent`. */