Eliminate well known symbols as a concept in the checker and rely on unique symbols (#42543)

* Eliminate well-known symbols in the checker: 2021 edition

* 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)

* Add test showing mismatched symbol constructor type interop

* Add more test cases for some other related issues this fixes

* Revert computed name change

* Style comments
This commit is contained in:
Wesley Wigham
2021-02-22 14:43:28 -08:00
committed by GitHub
parent 5a1d30815b
commit 87d10eb055
235 changed files with 1230 additions and 1022 deletions
+3 -6
View File
@@ -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((<PropertyAccessExpression>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
+49 -59
View File
@@ -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,30 @@ 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
}
const res = append(append(additionalContainers, container), objectLiteralContainer);
return concatenate(res, reexportContainers);
// 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
&& meaning === SymbolFlags.Value
? forEachSymbolTableInScope(enclosingDeclaration, t => {
return forEachEntry(t, s => {
if (s.flags & getQualifiedLeftMeaning(meaning) && getTypeOfSymbol(s) === getDeclaredTypeOfSymbol(container)) {
return s;
}
});
}) : undefined;
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)) {
@@ -5107,8 +5127,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)) {
@@ -5852,9 +5873,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);
@@ -8707,8 +8725,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: 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);
}
if (reportErrors) {
reportErrorsFromWidening(declaration, type);
}
@@ -12859,6 +12887,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;
}
@@ -13941,13 +13973,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) {
@@ -14174,11 +14206,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((<PropertyAccessExpression>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) :
@@ -25279,9 +25308,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;
@@ -25342,7 +25368,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);
}
}
@@ -25350,7 +25376,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 ||
@@ -27006,48 +27032,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.<someName>, so make sure Symbol actually resolves to the
// global Symbol object
const leftHandSide = <Identifier>(<PropertyAccessExpression>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);
}
@@ -35355,6 +35339,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.
+1 -2
View File
@@ -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 {
+1 -7
View File
@@ -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<TextRange>;
@@ -2326,7 +2320,7 @@ namespace ts {
/** @internal */
export type LiteralLikeElementAccessExpression = ElementAccessExpression & Declaration & {
readonly argumentExpression: StringLiteralLike | NumericLiteral | WellKnownSymbolExpression;
readonly argumentExpression: StringLiteralLike | NumericLiteral;
};
/** @internal */
+3 -28
View File
@@ -2241,9 +2241,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. */
@@ -2328,9 +2326,6 @@ namespace ts {
return escapeLeadingUnderscores(name.text);
}
}
if (isElementAccessExpression(node) && isWellKnownSymbolSyntactically(node.argumentExpression)) {
return getPropertyNameForKnownSymbolName(idText((<PropertyAccessExpression>node.argumentExpression).name));
}
return undefined;
}
@@ -3139,9 +3134,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.<name>`, where `<name>`
* 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);
@@ -3154,17 +3146,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 {
@@ -3177,10 +3159,7 @@ namespace ts {
return escapeLeadingUnderscores(name.text);
case SyntaxKind.ComputedPropertyName:
const nameExpression = name.expression;
if (isWellKnownSymbolSyntactically(nameExpression)) {
return getPropertyNameForKnownSymbolName(idText((<PropertyAccessExpression>nameExpression).name));
}
else if (isStringOrNumericLiteralLike(nameExpression)) {
if (isStringOrNumericLiteralLike(nameExpression)) {
return escapeLeadingUnderscores(nameExpression.text);
}
else if (isSignedNumericLiteral(nameExpression)) {
@@ -3218,10 +3197,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;
}
+1 -1
View File
@@ -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<TYield> {
+10 -10
View File
@@ -5,61 +5,61 @@ interface SymbolConstructor {
* A method that determines if a constructor object recognizes an object as one of the
* constructors 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 {
+1 -1
View File
@@ -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<T, TReturn = any, TNext = undefined> {
+1 -1
View File
@@ -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 {
+20 -5
View File
@@ -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,21 @@ 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 +235,18 @@ namespace ts.NavigationBar {
case SyntaxKind.GetAccessor:
case SyntaxKind.SetAccessor:
case SyntaxKind.MethodSignature:
if (!hasDynamicName((<ClassElement | TypeElement>node))) {
if (hasNavigationBarName((<ClassElement | TypeElement>node))) {
addNodeWithRecursiveChild(node, (<FunctionLikeDeclaration>node).body);
}
break;
case SyntaxKind.PropertyDeclaration:
if (!hasDynamicName(<ClassElement>node)) {
if (hasNavigationBarName(<ClassElement>node)) {
addNodeWithRecursiveInitializer(<PropertyDeclaration>node);
}
break;
case SyntaxKind.PropertySignature:
if (!hasDynamicName(<TypeElement>node)) {
if (hasNavigationBarName(<TypeElement>node)) {
addLeafNode(node);
}
break;
@@ -358,7 +373,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)) {
@@ -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.
!!! error TS2495: Type 'StringIterator' is not an array type or a string type.
@@ -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];
@@ -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
@@ -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];
}
@@ -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]
@@ -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
@@ -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]
@@ -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
@@ -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.
@@ -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
@@ -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]
@@ -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
@@ -9,9 +9,9 @@ function doubleAndReturnAsArray(x: number, y: number, z: number): [number, numbe
>blah : () => IterableIterator<any>
>arguments[Symbol.iterator] : () => IterableIterator<any>
>arguments : IArguments
>Symbol.iterator : symbol
>Symbol.iterator : unique symbol
>Symbol : SymbolConstructor
>iterator : symbol
>iterator : unique symbol
let result = [];
>result : any[]
@@ -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<T>(defaultValues: T, name?: string): Record.Class<T>;
@@ -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<T>(collection: Iterable<T>): Collection.Indexed<T>;
@@ -1734,9 +1734,9 @@ declare module Immutable {
[Symbol.iterator](): IterableIterator<T>;
>[Symbol.iterator] : () => IterableIterator<T>
>Symbol.iterator : symbol
>Symbol.iterator : unique symbol
>Symbol : SymbolConstructor
>iterator : symbol
>iterator : unique symbol
}
export module Set {}
export function Set<T>(collection: Iterable<T>): Collection.Set<T>;
@@ -1798,9 +1798,9 @@ declare module Immutable {
[Symbol.iterator](): IterableIterator<T>;
>[Symbol.iterator] : () => IterableIterator<T>
>Symbol.iterator : symbol
>Symbol.iterator : unique symbol
>Symbol : SymbolConstructor
>iterator : symbol
>iterator : unique symbol
}
}
export function Collection<I extends Collection<any, any>>(collection: I): I;
@@ -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);
@@ -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;
@@ -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>
>[] : undefined[]
@@ -28,9 +28,9 @@ export class IterableWeakMap<K extends object, V> implements WeakMap<K, V> {
declare readonly [Symbol.toStringTag]: "IterableWeakMap";
>[Symbol.toStringTag] : "IterableWeakMap"
>Symbol.toStringTag : symbol
>Symbol.toStringTag : unique symbol
>Symbol : SymbolConstructor
>toStringTag : symbol
>toStringTag : unique symbol
#weakMap = new WeakMap<K, { readonly ref: WeakRef<K>; value: V }>();
>#weakMap : WeakMap<K, { readonly ref: WeakRef<K>; value: V; }>
@@ -236,9 +236,9 @@ export class IterableWeakMap<K extends object, V> implements WeakMap<K, V> {
declare [Symbol.iterator]: this["entries"];
>[Symbol.iterator] : this["entries"]
>Symbol.iterator : symbol
>Symbol.iterator : unique symbol
>Symbol : SymbolConstructor
>iterator : symbol
>iterator : unique symbol
*entries(): Generator<[key: K, value: V], void> {
>entries : () => Generator<[key: K, value: V], void>
@@ -317,9 +317,9 @@ Object.defineProperties(IterableWeakMap.prototype, {
[Symbol.iterator]: {
>[Symbol.iterator] : { configurable: true; enumerable: false; writable: true; value: any; }
>Symbol.iterator : symbol
>Symbol.iterator : unique symbol
>Symbol : SymbolConstructor
>iterator : symbol
>iterator : unique symbol
>{ configurable: true, enumerable: false, writable: true, value: Object.getOwnPropertyDescriptor( IterableWeakMap.prototype, "entries", )!.value, } : { configurable: true; enumerable: false; writable: true; value: any; }
configurable: true,
@@ -357,9 +357,9 @@ Object.defineProperties(IterableWeakMap.prototype, {
},
[Symbol.toStringTag]: {
>[Symbol.toStringTag] : { configurable: true; enumerable: false; writable: false; value: string; }
>Symbol.toStringTag : symbol
>Symbol.toStringTag : unique symbol
>Symbol : SymbolConstructor
>toStringTag : symbol
>toStringTag : unique symbol
>{ configurable: true, enumerable: false, writable: false, value: "IterableWeakMap", } : { configurable: true; enumerable: false; writable: false; value: string; }
configurable: true,
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+1
View File
@@ -8,4 +8,5 @@ for (var v of new StringIterator) { }
//// [for-of27.js]
class StringIterator {
}
Symbol.iterator;
for (var v of new StringIterator) { }
+2 -2
View File
@@ -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) { }
+2 -2
View File
@@ -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
+2 -2
View File
@@ -4,9 +4,9 @@ var iterableWithOptionalIterator: {
[Symbol.iterator]?(): Iterator<string>
>[Symbol.iterator] : () => Iterator<string>
>Symbol.iterator : symbol
>Symbol.iterator : unique symbol
>Symbol : SymbolConstructor
>iterator : symbol
>iterator : unique symbol
};
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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
@@ -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) {
@@ -4,9 +4,9 @@ class C {
*[Symbol.iterator]() {
>[Symbol.iterator] : () => Generator<number, void, unknown>
>Symbol.iterator : symbol
>Symbol.iterator : unique symbol
>Symbol : SymbolConstructor
>iterator : symbol
>iterator : unique symbol
let a = yield 1;
>a : any
@@ -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
@@ -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
@@ -0,0 +1,9 @@
//// [indirectGlobalSymbolPartOfObjectType.ts]
export { }
const Symbol = globalThis.Symbol;
[][Symbol.iterator];
//// [indirectGlobalSymbolPartOfObjectType.js]
const Symbol = globalThis.Symbol;
[][Symbol.iterator];
export {};
@@ -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, --, --))
@@ -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>
>[] : undefined[]
>Symbol.iterator : unique symbol
>Symbol : SymbolConstructor
>iterator : unique symbol
@@ -6,9 +6,9 @@ type Nominal<Kind extends string, Type> = Type & {
[Symbol.species]: Kind;
>[Symbol.species] : Kind
>Symbol.species : symbol
>Symbol.species : unique symbol
>Symbol : SymbolConstructor
>species : symbol
>species : unique symbol
};
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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>[]): Item[]; concat(...items: (Item | ConcatArray<Item>)[]): 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<S extends Item>(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<U>(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter<S extends Item>(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<U>(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<U>(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find<S extends Item>(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<Item>; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator<number>; values(): IterableIterator<Item>; [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>[]): Item[]; concat(...items: (Item | ConcatArray<Item>)[]): 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<S extends Item>(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<U>(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter<S extends Item>(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<U>(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<U>(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find<S extends Item>(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<Item>; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator<number>; values(): IterableIterator<Item>; [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>[]): Item[]; concat(...items: (Item | ConcatArray<Item>)[]): 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<S extends Item>(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<U>(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter<S extends Item>(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<U>(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<U>(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find<S extends Item>(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<Item>; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator<number>; values(): IterableIterator<Item>; [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>[]): Item[]; concat(...items: (Item | ConcatArray<Item>)[]): 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<S extends Item>(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<U>(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter<S extends Item>(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<U>(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<U>(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find<S extends Item>(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<Item>; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator<number>; values(): IterableIterator<Item>; [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>[]): Item[]; concat(...items: (Item | ConcatArray<Item>)[]): 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<S extends Item>(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<U>(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter<S extends Item>(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<U>(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<U>(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find<S extends Item>(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<number>; values(): IterableIterator<Item>; [Symbol.iterator](): IterableIterator<Item>; [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>[]): Item[]; concat(...items: (Item | ConcatArray<Item>)[]): 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<S extends Item>(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<U>(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter<S extends Item>(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<U>(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<U>(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find<S extends Item>(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<number>; values(): IterableIterator<Item>; [Symbol.iterator](): IterableIterator<Item>; [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>[]): Item[]; concat(...items: (Item | ConcatArray<Item>)[]): 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<S extends Item>(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<U>(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter<S extends Item>(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<U>(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<U>(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find<S extends Item>(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<number>; values(): IterableIterator<Item>; [Symbol.iterator](): IterableIterator<Item>; [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>[]): Item[]; concat(...items: (Item | ConcatArray<Item>)[]): 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<S extends Item>(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<U>(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter<S extends Item>(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<U>(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<U>(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find<S extends Item>(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<number>; values(): IterableIterator<Item>; [Symbol.iterator](): IterableIterator<Item>; [Symbol.unscopables](): { copyWithin: boolean; entries: boolean; fill: boolean; find: boolean; findIndex: boolean; keys: boolean; values: boolean; }; }
>items : Item[]
@@ -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>[]): Item[]; concat(...items: (Item | ConcatArray<Item>)[]): 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<S extends Item>(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<U>(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter<S extends Item>(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<U>(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<U>(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find<S extends Item>(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<Item>; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator<number>; values(): IterableIterator<Item>; [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>[]): Item[]; concat(...items: (Item | ConcatArray<Item>)[]): 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<S extends Item>(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<U>(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter<S extends Item>(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<U>(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<U>(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find<S extends Item>(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<Item>; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator<number>; values(): IterableIterator<Item>; [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>[]): Item[]; concat(...items: (Item | ConcatArray<Item>)[]): 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<S extends Item>(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<U>(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter<S extends Item>(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<U>(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<U>(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find<S extends Item>(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<Item>; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator<number>; values(): IterableIterator<Item>; [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>[]): Item[]; concat(...items: (Item | ConcatArray<Item>)[]): 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<S extends Item>(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<U>(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter<S extends Item>(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<U>(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<U>(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find<S extends Item>(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<Item>; entries(): IterableIterator<[number, Item]>; keys(): IterableIterator<number>; values(): IterableIterator<Item>; [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>[]): Item[]; concat(...items: (Item | ConcatArray<Item>)[]): 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<S extends Item>(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<U>(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter<S extends Item>(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<U>(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<U>(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find<S extends Item>(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<number>; values(): IterableIterator<Item>; [Symbol.iterator](): IterableIterator<Item>; [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>[]): Item[]; concat(...items: (Item | ConcatArray<Item>)[]): 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<S extends Item>(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<U>(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter<S extends Item>(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<U>(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<U>(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find<S extends Item>(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<number>; values(): IterableIterator<Item>; [Symbol.iterator](): IterableIterator<Item>; [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>[]): Item[]; concat(...items: (Item | ConcatArray<Item>)[]): 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<S extends Item>(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<U>(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter<S extends Item>(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<U>(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<U>(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find<S extends Item>(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<number>; values(): IterableIterator<Item>; [Symbol.iterator](): IterableIterator<Item>; [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>[]): Item[]; concat(...items: (Item | ConcatArray<Item>)[]): 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<S extends Item>(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<U>(callbackfn: (value: Item, index: number, array: Item[]) => U, thisArg?: any): U[]; filter<S extends Item>(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<U>(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<U>(callbackfn: (previousValue: U, currentValue: Item, currentIndex: number, array: Item[]) => U, initialValue: U): U; find<S extends Item>(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<number>; values(): IterableIterator<Item>; [Symbol.iterator](): IterableIterator<Item>; [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 ===
@@ -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
};

Some files were not shown because too many files have changed in this diff Show More