diff --git a/src/compiler/binder.ts b/src/compiler/binder.ts index 27ec079f614ab..711e7568277c1 100644 --- a/src/compiler/binder.ts +++ b/src/compiler/binder.ts @@ -91,7 +91,6 @@ import { getContainingClass, getEffectiveContainerForJSDocTemplateTag, getElementOrPropertyAccessName, - getEmitScriptTarget, getEnclosingBlockScopeContainer, getEnclosingContainer, getErrorSpanForNode, @@ -280,7 +279,6 @@ import { QualifiedName, removeFileExtension, ReturnStatement, - ScriptTarget, SetAccessorDeclaration, setParent, setParentRecursive, @@ -523,7 +521,6 @@ function createBinder(): (file: SourceFile, options: CompilerOptions) => void { /* eslint-disable no-var */ var file: SourceFile; var options: CompilerOptions; - var languageVersion: ScriptTarget; var parent: Node; var container: IsContainer | EntityNameExpression; var thisParentContainer: IsContainer | EntityNameExpression; // Container one level up @@ -583,7 +580,6 @@ function createBinder(): (file: SourceFile, options: CompilerOptions) => void { function bindSourceFile(f: SourceFile, opts: CompilerOptions) { file = f; options = opts; - languageVersion = getEmitScriptTarget(options); inStrictMode = bindInStrictMode(file, opts); classifiableNames = new Set(); symbolCount = 0; @@ -606,7 +602,6 @@ function createBinder(): (file: SourceFile, options: CompilerOptions) => void { file = undefined!; options = undefined!; - languageVersion = undefined!; parent = undefined!; container = undefined!; thisParentContainer = undefined!; @@ -2673,36 +2668,6 @@ function createBinder(): (file: SourceFile, options: CompilerOptions) => void { } } - function getStrictModeBlockScopeFunctionDeclarationMessage(node: Node) { - // Provide specialized messages to help the user understand why we think they're in - // strict mode. - if (getContainingClass(node)) { - return Diagnostics.Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES5_Class_definitions_are_automatically_in_strict_mode; - } - - if (file.externalModuleIndicator) { - return Diagnostics.Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES5_Modules_are_automatically_in_strict_mode; - } - - return Diagnostics.Function_declarations_are_not_allowed_inside_blocks_in_strict_mode_when_targeting_ES5; - } - - function checkStrictModeFunctionDeclaration(node: FunctionDeclaration) { - if (languageVersion < ScriptTarget.ES2015) { - // Report error if function is not top level function declaration - if ( - blockScopeContainer.kind !== SyntaxKind.SourceFile && - blockScopeContainer.kind !== SyntaxKind.ModuleDeclaration && - !isFunctionLikeOrClassStaticBlockDeclaration(blockScopeContainer) - ) { - // We check first if the name is inside class declaration or class expression; if so give explicit message - // otherwise report generic error message. - const errorSpan = getErrorSpanForNode(file, node); - file.bindDiagnostics.push(createFileDiagnostic(file, errorSpan.start, errorSpan.length, getStrictModeBlockScopeFunctionDeclarationMessage(node))); - } - } - } - function checkStrictModePostfixUnaryExpression(node: PostfixUnaryExpression) { // Grammar checking // The identifier eval or arguments may not appear as the LeftHandSideExpression of an @@ -2731,7 +2696,7 @@ function createBinder(): (file: SourceFile, options: CompilerOptions) => void { function checkStrictModeLabeledStatement(node: LabeledStatement) { // Grammar checking for labeledStatement - if (inStrictMode && getEmitScriptTarget(options) >= ScriptTarget.ES2015) { + if (inStrictMode) { if (isDeclarationStatement(node.statement) || isVariableStatement(node.statement)) { errorOnFirstToken(node.label, Diagnostics.A_label_is_not_allowed_here); } @@ -3725,7 +3690,6 @@ function createBinder(): (file: SourceFile, options: CompilerOptions) => void { checkStrictModeFunctionName(node); if (inStrictMode) { - checkStrictModeFunctionDeclaration(node); bindBlockScopedDeclaration(node, SymbolFlags.Function, SymbolFlags.FunctionExcludes); } else { diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index f659c1aacdf4f..5be72511868db 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -295,7 +295,6 @@ import { getEmitStandardClassFields, getEnclosingBlockScopeContainer, getEnclosingContainer, - getEntityNameFromTypeNode, getErrorSpanForNode, getEscapedTextOfIdentifierOrLiteral, getEscapedTextOfJsxAttributeName, @@ -566,7 +565,6 @@ import { isForInOrOfStatement, isForInStatement, isForOfStatement, - isForStatement, isFunctionDeclaration, isFunctionExpression, isFunctionExpressionOrArrowFunction, @@ -2271,7 +2269,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { var deferredGlobalPromiseType: GenericType | undefined; var deferredGlobalPromiseLikeType: GenericType | undefined; var deferredGlobalPromiseConstructorSymbol: Symbol | undefined; - var deferredGlobalPromiseConstructorLikeType: ObjectType | undefined; var deferredGlobalIterableType: GenericType | undefined; var deferredGlobalIteratorType: GenericType | undefined; var deferredGlobalIterableIteratorType: GenericType | undefined; @@ -12349,6 +12346,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { const lastElement = lastOrUndefined(elements); const restElement = lastElement && lastElement.kind === SyntaxKind.BindingElement && lastElement.dotDotDotToken ? lastElement : undefined; if (elements.length === 0 || elements.length === 1 && restElement) { + // TODO: remove ScriptTarget.ES2015 return languageVersion >= ScriptTarget.ES2015 ? createIterableType(anyType) : anyArrayType; } const elementTypes = map(elements, e => isOmittedExpression(e) ? anyType : getTypeFromBindingElement(e, includePatternInType, reportErrors)); @@ -17493,10 +17491,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { return deferredGlobalPromiseConstructorSymbol ||= getGlobalValueSymbol("Promise" as __String, reportErrors); } - function getGlobalPromiseConstructorLikeType(reportErrors: boolean) { - return (deferredGlobalPromiseConstructorLikeType ||= getGlobalType("PromiseConstructorLike" as __String, /*arity*/ 0, reportErrors)) || emptyObjectType; - } - function getGlobalAsyncIterableType(reportErrors: boolean) { return (deferredGlobalAsyncIterableType ||= getGlobalType("AsyncIterable" as __String, /*arity*/ 3, reportErrors)) || emptyGenericType; } @@ -30451,7 +30445,8 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { case ReferenceHint.Jsx: return markJsxAliasReferenced(location as JsxOpeningLikeElement | JsxOpeningFragment); case ReferenceHint.AsyncFunction: - return markAsyncFunctionAliasReferenced(location as FunctionLikeDeclaration | MethodSignature); + // TODO: remove case + return; case ReferenceHint.ExportImportEquals: return markImportEqualsAliasReferenced(location as ImportEqualsDeclaration); case ReferenceHint.ExportSpecifier: @@ -30493,10 +30488,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { if (isExportSpecifier(location)) { return markExportSpecifierAliasReferenced(location); } - if (isFunctionLikeDeclaration(location) || isMethodSignature(location)) { - markAsyncFunctionAliasReferenced(location); - // Might be decorated, fall through to decorator final case - } if (!compilerOptions.emitDecoratorMetadata) { return; } @@ -30624,15 +30615,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { return; } - function markAsyncFunctionAliasReferenced(location: FunctionLikeDeclaration | MethodSignature) { - if (languageVersion < ScriptTarget.ES2015) { - if (getFunctionFlags(location) & FunctionFlags.Async) { - const returnTypeNode = getEffectiveReturnTypeNode(location); - markTypeNodeAsReferenced(returnTypeNode); - } - } - } - function markImportEqualsAliasReferenced(location: ImportEqualsDeclaration) { if (hasSyntacticModifier(location, ModifierFlags.Export)) { markExportAsReferenced(location); @@ -30798,14 +30780,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } } - /** - * If a TypeNode can be resolved to a value symbol imported from an external module, it is - * marked as referenced to prevent import elision. - */ - function markTypeNodeAsReferenced(node: TypeNode | undefined) { - markEntityNameOrEntityExpressionAsReference(node && getEntityNameFromTypeNode(node), /*forDecoratorMetadata*/ false); - } - /** * This function marks the type used for metadata decorator as referenced if it is import * from external module. @@ -30930,15 +30904,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { let container = getContainingFunction(node); if (container) { - if (languageVersion < ScriptTarget.ES2015) { - if (container.kind === SyntaxKind.ArrowFunction) { - error(node, Diagnostics.The_arguments_object_cannot_be_referenced_in_an_arrow_function_in_ES5_Consider_using_a_standard_function_expression); - } - else if (hasSyntacticModifier(container, ModifierFlags.Async)) { - error(node, Diagnostics.The_arguments_object_cannot_be_referenced_in_an_async_function_or_method_in_ES5_Consider_using_a_standard_function_or_method); - } - } - getNodeLinks(container).flags |= NodeCheckFlags.CaptureArguments; while (container && isArrowFunction(container)) { container = getContainingFunction(container); @@ -30974,8 +30939,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } } } - - checkNestedBlockScopedBinding(node, symbol); } function checkIdentifier(node: Identifier, checkMode: CheckMode | undefined): Type { @@ -31153,116 +31116,15 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { return true; } - function isInsideFunctionOrInstancePropertyInitializer(node: Node, threshold: Node): boolean { - return !!findAncestor(node, n => - n === threshold ? "quit" : isFunctionLike(n) || ( - n.parent && isPropertyDeclaration(n.parent) && !hasStaticModifier(n.parent) && n.parent.initializer === n - )); - } - - function getPartOfForStatementContainingNode(node: Node, container: ForStatement) { - return findAncestor(node, n => n === container ? "quit" : n === container.initializer || n === container.condition || n === container.incrementor || n === container.statement); - } - function getEnclosingIterationStatement(node: Node): Node | undefined { return findAncestor(node, n => (!n || nodeStartsNewLexicalEnvironment(n)) ? "quit" : isIterationStatement(n, /*lookInLabeledStatements*/ false)); } - function checkNestedBlockScopedBinding(node: Identifier, symbol: Symbol): void { - if ( - languageVersion >= ScriptTarget.ES2015 || - (symbol.flags & (SymbolFlags.BlockScopedVariable | SymbolFlags.Class)) === 0 || - !symbol.valueDeclaration || - isSourceFile(symbol.valueDeclaration) || - symbol.valueDeclaration.parent.kind === SyntaxKind.CatchClause - ) { - return; - } - - // 1. walk from the use site up to the declaration and check - // if there is anything function like between declaration and use-site (is binding/class is captured in function). - // 2. walk from the declaration up to the boundary of lexical environment and check - // if there is an iteration statement in between declaration and boundary (is binding/class declared inside iteration statement) - - const container = getEnclosingBlockScopeContainer(symbol.valueDeclaration); - const isCaptured = isInsideFunctionOrInstancePropertyInitializer(node, container); - - const enclosingIterationStatement = getEnclosingIterationStatement(container); - if (enclosingIterationStatement) { - if (isCaptured) { - // mark iteration statement as containing block-scoped binding captured in some function - let capturesBlockScopeBindingInLoopBody = true; - if (isForStatement(container)) { - const varDeclList = getAncestor(symbol.valueDeclaration, SyntaxKind.VariableDeclarationList); - if (varDeclList && varDeclList.parent === container) { - const part = getPartOfForStatementContainingNode(node.parent, container); - if (part) { - const links = getNodeLinks(part); - links.flags |= NodeCheckFlags.ContainsCapturedBlockScopeBinding; - - const capturedBindings = links.capturedBlockScopeBindings || (links.capturedBlockScopeBindings = []); - pushIfUnique(capturedBindings, symbol); - - if (part === container.initializer) { - capturesBlockScopeBindingInLoopBody = false; // Initializer is outside of loop body - } - } - } - } - if (capturesBlockScopeBindingInLoopBody) { - getNodeLinks(enclosingIterationStatement).flags |= NodeCheckFlags.LoopWithCapturedBlockScopedBinding; - } - } - - // mark variables that are declared in loop initializer and reassigned inside the body of ForStatement. - // if body of ForStatement will be converted to function then we'll need a extra machinery to propagate reassigned values back. - if (isForStatement(container)) { - const varDeclList = getAncestor(symbol.valueDeclaration, SyntaxKind.VariableDeclarationList); - if (varDeclList && varDeclList.parent === container && isAssignedInBodyOfForStatement(node, container)) { - getNodeLinks(symbol.valueDeclaration).flags |= NodeCheckFlags.NeedsLoopOutParameter; - } - } - - // set 'declared inside loop' bit on the block-scoped binding - getNodeLinks(symbol.valueDeclaration).flags |= NodeCheckFlags.BlockScopedBindingInLoop; - } - - if (isCaptured) { - getNodeLinks(symbol.valueDeclaration).flags |= NodeCheckFlags.CapturedBlockScopedBinding; - } - } - function isBindingCapturedByNode(node: Node, decl: VariableDeclaration | BindingElement) { const links = getNodeLinks(node); return !!links && contains(links.capturedBlockScopeBindings, getSymbolOfDeclaration(decl)); } - function isAssignedInBodyOfForStatement(node: Identifier, container: ForStatement): boolean { - // skip parenthesized nodes - let current: Node = node; - while (current.parent.kind === SyntaxKind.ParenthesizedExpression) { - current = current.parent; - } - - // check if node is used as LHS in some assignment expression - let isAssigned = false; - if (isAssignmentTarget(current)) { - isAssigned = true; - } - else if ((current.parent.kind === SyntaxKind.PrefixUnaryExpression || current.parent.kind === SyntaxKind.PostfixUnaryExpression)) { - const expr = current.parent as PrefixUnaryExpression | PostfixUnaryExpression; - isAssigned = expr.operator === SyntaxKind.PlusPlusToken || expr.operator === SyntaxKind.MinusMinusToken; - } - - if (!isAssigned) { - return false; - } - - // at this point we know that node is the target of assignment - // now check that modification happens inside the statement part of the ForStatement - return !!findAncestor(current, n => n === container ? "quit" : n === container.statement); - } - function captureLexicalThis(node: Node, container: Node): void { getNodeLinks(node).flags |= NodeCheckFlags.LexicalThis; if (container.kind === SyntaxKind.PropertyDeclaration || container.kind === SyntaxKind.Constructor) { @@ -31316,7 +31178,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } function checkThisExpression(node: Node): Type { - const isNodeInTypeQuery = isInTypeQuery(node); // Stop at the first arrow function so that we can // tell whether 'this' needs to be captured. let container = getThisContainer(node, /*includeArrowFunctions*/ true, /*includeClassComputedPropertyName*/ true); @@ -31360,11 +31221,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } } - // When targeting es6, mark that we'll need to capture `this` in its lexically bound scope. - if (!isNodeInTypeQuery && capturedByArrowFunction && languageVersion < ScriptTarget.ES2015) { - captureLexicalThis(node, container); - } - const type = tryGetThisTypeAt(node, /*includeGlobalThis*/ true, container); if (noImplicitThis) { const globalThisType = getTypeOfSymbol(globalThisSymbol); @@ -31532,7 +31388,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { const immediateContainer = getSuperContainer(node, /*stopOnFunctions*/ true); let container = immediateContainer; - let needToCaptureLexicalThis = false; let inAsyncFunction = false; // adjust the container reference in case if super is used inside arrow functions with arbitrarily deep nesting @@ -31540,7 +31395,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { while (container && container.kind === SyntaxKind.ArrowFunction) { if (hasSyntacticModifier(container, ModifierFlags.Async)) inAsyncFunction = true; container = getSuperContainer(container, /*stopOnFunctions*/ true); - needToCaptureLexicalThis = languageVersion < ScriptTarget.ES2015; } if (container && hasSyntacticModifier(container, ModifierFlags.Async)) inAsyncFunction = true; } @@ -31577,7 +31431,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { nodeCheckFlag = NodeCheckFlags.SuperStatic; if ( !isCallExpression && - languageVersion >= ScriptTarget.ES2015 && languageVersion <= ScriptTarget.ES2021 && + languageVersion <= ScriptTarget.ES2021 && (isPropertyDeclaration(container) || isClassStaticBlockDeclaration(container)) ) { // for `super.x` or `super[x]` in a static initializer, mark all enclosing @@ -31664,22 +31518,9 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } } - if (needToCaptureLexicalThis) { - // call expressions are allowed only in constructors so they should always capture correct 'this' - // super property access expressions can also appear in arrow functions - - // in this case they should also use correct lexical this - captureLexicalThis(node.parent, container); - } - if (container.parent.kind === SyntaxKind.ObjectLiteralExpression) { - if (languageVersion < ScriptTarget.ES2015) { - error(node, Diagnostics.super_is_only_allowed_in_members_of_object_literal_expressions_when_option_target_is_ES2015_or_higher); - return errorType; - } - else { - // for object literal assume that type of 'super' is 'any' - return anyType; - } + // for object literal assume that type of 'super' is 'any' + return anyType; } // at this point the only legal case for parent is ClassLikeDeclaration @@ -33197,10 +33038,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } function checkSpreadExpression(node: SpreadElement, checkMode?: CheckMode): Type { - if (languageVersion < LanguageFeatureMinimumTarget.SpreadElements) { - checkExternalEmitHelpers(node, compilerOptions.downlevelIteration ? ExternalEmitHelpers.SpreadIncludes : ExternalEmitHelpers.SpreadArray); - } - const arrayOrIterableType = checkExpression(node.expression, checkMode); return checkIteratedTypeOrElementType(IterationUse.Spread, arrayOrIterableType, undefinedType, node.expression); } @@ -33236,9 +33073,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { for (let i = 0; i < elementCount; i++) { const e = elements[i]; if (e.kind === SyntaxKind.SpreadElement) { - if (languageVersion < LanguageFeatureMinimumTarget.SpreadElements) { - checkExternalEmitHelpers(e, compilerOptions.downlevelIteration ? ExternalEmitHelpers.SpreadIncludes : ExternalEmitHelpers.SpreadArray); - } const spreadType = checkExpression((e as SpreadElement).expression, checkMode, forceTuple); if (isArrayLikeType(spreadType)) { elementTypes.push(spreadType); @@ -33527,9 +33361,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } } else if (memberDecl.kind === SyntaxKind.SpreadAssignment) { - if (languageVersion < LanguageFeatureMinimumTarget.ObjectAssign) { - checkExternalEmitHelpers(memberDecl, ExternalEmitHelpers.Assign); - } if (propertiesArray.length > 0) { spread = getSpreadType(spread, createObjectLiteralType(), node.symbol, objectFlags, inConstContext); propertiesArray = []; @@ -34394,14 +34225,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { // - In a static member function or static member accessor // where this references the constructor function object of a derived class, // a super property access is permitted and must specify a public static member function of the base class. - if (languageVersion < ScriptTarget.ES2015) { - if (symbolHasNonMethodDeclaration(prop)) { - if (errorNode) { - error(errorNode, Diagnostics.Only_public_and_protected_methods_of_the_base_class_are_accessible_via_the_super_keyword); - } - return false; - } - } if (flags & ModifierFlags.Abstract) { // A method cannot be accessed in a super property access if the method is abstract. // This error could mask a private property access error. But, a member @@ -37957,9 +37780,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { function checkTaggedTemplateExpression(node: TaggedTemplateExpression): Type { if (!checkGrammarTaggedTemplateChain(node)) checkGrammarTypeArguments(node, node.typeArguments); - if (languageVersion < LanguageFeatureMinimumTarget.TaggedTemplates) { - checkExternalEmitHelpers(node, ExternalEmitHelpers.MakeTemplateObject); - } const signature = getResolvedSignature(node); checkDeprecatedSignature(signature, node); return getReturnTypeOfSignature(signature); @@ -40183,9 +40003,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { function checkArrayLiteralAssignment(node: ArrayLiteralExpression, sourceType: Type, checkMode?: CheckMode): Type { const elements = node.elements; - if (languageVersion < LanguageFeatureMinimumTarget.DestructuringAssignment && compilerOptions.downlevelIteration) { - checkExternalEmitHelpers(node, ExternalEmitHelpers.Read); - } // This elementType will be used if the specific property corresponding to this index is not // present (aka the tuple element property). This call also checks that the parentType is in // fact an iterable or array (depending on target language). @@ -41126,11 +40943,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { if (isAsync && languageVersion < LanguageFeatureMinimumTarget.AsyncGenerators) { checkExternalEmitHelpers(node, ExternalEmitHelpers.AsyncDelegatorIncludes); } - - // Generator functions prior to ES2015 require the __values helper - if (!isAsync && languageVersion < LanguageFeatureMinimumTarget.Generators && compilerOptions.downlevelIteration) { - checkExternalEmitHelpers(node, ExternalEmitHelpers.Values); - } } // There is no point in doing an assignability check if the function @@ -42068,12 +41880,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { if ((functionFlags & FunctionFlags.AsyncGenerator) === FunctionFlags.Async && languageVersion < LanguageFeatureMinimumTarget.AsyncFunctions) { checkExternalEmitHelpers(node, ExternalEmitHelpers.Awaiter); } - - // Generator functions, Async functions, and Async Generator functions prior to - // ES2015 require the __generator helper - if ((functionFlags & FunctionFlags.AsyncGenerator) !== FunctionFlags.Normal && languageVersion < LanguageFeatureMinimumTarget.Generators) { - checkExternalEmitHelpers(node, ExternalEmitHelpers.Generator); - } } checkTypeParameters(getEffectiveTypeParameterDeclarations(node)); @@ -42089,8 +41895,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { addLazyDiagnostic(checkSignatureDeclarationDiagnostics); function checkSignatureDeclarationDiagnostics() { - checkCollisionWithArgumentsInGeneratedCode(node); - let returnTypeNode = getEffectiveReturnTypeNode(node); let returnTypeErrorLocation = returnTypeNode; @@ -43688,64 +43492,15 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { // } // const returnType = getTypeFromTypeNode(returnTypeNode); - if (languageVersion >= ScriptTarget.ES2015) { - if (isErrorType(returnType)) { - return; - } - const globalPromiseType = getGlobalPromiseType(/*reportErrors*/ true); - if (globalPromiseType !== emptyGenericType && !isReferenceToType(returnType, globalPromiseType)) { - // The promise type was not a valid type reference to the global promise type, so we - // report an error and return the unknown type. - reportErrorForInvalidReturnType(Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_write_Promise_0, returnTypeNode, returnTypeErrorLocation, typeToString(getAwaitedTypeNoAlias(returnType) || voidType)); - return; - } + if (isErrorType(returnType)) { + return; } - else { - // Always mark the type node as referenced if it points to a value - markLinkedReferences(node, ReferenceHint.AsyncFunction); - if (isErrorType(returnType)) { - return; - } - - const promiseConstructorName = getEntityNameFromTypeNode(returnTypeNode); - if (promiseConstructorName === undefined) { - reportErrorForInvalidReturnType(Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, returnTypeNode, returnTypeErrorLocation, typeToString(returnType)); - return; - } - - const promiseConstructorSymbol = resolveEntityName(promiseConstructorName, SymbolFlags.Value, /*ignoreErrors*/ true); - const promiseConstructorType = promiseConstructorSymbol ? getTypeOfSymbol(promiseConstructorSymbol) : errorType; - if (isErrorType(promiseConstructorType)) { - if (promiseConstructorName.kind === SyntaxKind.Identifier && promiseConstructorName.escapedText === "Promise" && getTargetType(returnType) === getGlobalPromiseType(/*reportErrors*/ false)) { - error(returnTypeErrorLocation, Diagnostics.An_async_function_or_method_in_ES5_requires_the_Promise_constructor_Make_sure_you_have_a_declaration_for_the_Promise_constructor_or_include_ES2015_in_your_lib_option); - } - else { - reportErrorForInvalidReturnType(Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, returnTypeNode, returnTypeErrorLocation, entityNameToString(promiseConstructorName)); - } - return; - } - - const globalPromiseConstructorLikeType = getGlobalPromiseConstructorLikeType(/*reportErrors*/ true); - if (globalPromiseConstructorLikeType === emptyObjectType) { - // If we couldn't resolve the global PromiseConstructorLike type we cannot verify - // compatibility with __awaiter. - reportErrorForInvalidReturnType(Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_because_it_does_not_refer_to_a_Promise_compatible_constructor_value, returnTypeNode, returnTypeErrorLocation, entityNameToString(promiseConstructorName)); - return; - } - - const headMessage = Diagnostics.Type_0_is_not_a_valid_async_function_return_type_in_ES5_because_it_does_not_refer_to_a_Promise_compatible_constructor_value; - const errorInfo = () => returnTypeNode === returnTypeErrorLocation ? undefined : chainDiagnosticMessages(/*details*/ undefined, Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type); - if (!checkTypeAssignableTo(promiseConstructorType, globalPromiseConstructorLikeType, returnTypeErrorLocation, headMessage, errorInfo)) { - return; - } - - // Verify there is no local declaration that could collide with the promise constructor. - const rootName = promiseConstructorName && getFirstIdentifier(promiseConstructorName); - const collidingSymbol = getSymbol(node.locals!, rootName.escapedText, SymbolFlags.Value); - if (collidingSymbol) { - error(collidingSymbol.valueDeclaration, Diagnostics.Duplicate_identifier_0_Compiler_uses_declaration_1_to_support_async_functions, idText(rootName), entityNameToString(promiseConstructorName)); - return; - } + const globalPromiseType = getGlobalPromiseType(/*reportErrors*/ true); + if (globalPromiseType !== emptyGenericType && !isReferenceToType(returnType, globalPromiseType)) { + // The promise type was not a valid type reference to the global promise type, so we + // report an error and return the unknown type. + reportErrorForInvalidReturnType(Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type_Did_you_mean_to_write_Promise_0, returnTypeNode, returnTypeErrorLocation, typeToString(getAwaitedTypeNoAlias(returnType) || voidType)); + return; } checkAwaitedType(returnType, /*withAlias*/ false, node, Diagnostics.The_return_type_of_an_async_function_must_either_be_a_valid_promise_or_must_not_contain_a_callable_then_member); @@ -44605,19 +44360,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } } - function checkCollisionWithArgumentsInGeneratedCode(node: SignatureDeclaration) { - // no rest parameters \ declaration context \ overload - no codegen impact - if (languageVersion >= ScriptTarget.ES2015 || !hasRestParameter(node) || node.flags & NodeFlags.Ambient || nodeIsMissing((node as FunctionLikeDeclaration).body)) { - return; - } - - forEach(node.parameters, p => { - if (p.name && !isBindingPattern(p.name) && p.name.escapedText === argumentsSymbol.escapedName) { - errorSkippedOn("noEmit", p, Diagnostics.Duplicate_identifier_arguments_Compiler_uses_arguments_to_initialize_rest_parameters); - } - }); - } - /** * Checks whether an {@link Identifier}, in the context of another {@link Node}, would collide with a runtime value * of {@link name} in an outer scope. This is used to check for collisions for downlevel transformations that @@ -44755,7 +44497,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { function recordPotentialCollisionWithReflectInGeneratedCode(node: Node, name: Identifier | undefined): void { if ( - name && languageVersion >= ScriptTarget.ES2015 && languageVersion <= ScriptTarget.ES2021 + name && languageVersion <= ScriptTarget.ES2021 && needCollisionCheckForIdentifier(node, name, "Reflect") ) { potentialReflectCollisions.push(node); @@ -44946,10 +44688,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { // For a binding pattern, check contained binding elements if (isBindingPattern(node.name)) { - if (node.name.kind === SyntaxKind.ArrayBindingPattern && languageVersion < LanguageFeatureMinimumTarget.BindingPatterns && compilerOptions.downlevelIteration) { - checkExternalEmitHelpers(node, ExternalEmitHelpers.Read); - } - forEach(node.name.elements, checkSourceElement); } // For a parameter declaration with an initializer, error and exit if the containing function doesn't have a body @@ -45399,10 +45137,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } } } - else if (compilerOptions.downlevelIteration && languageVersion < LanguageFeatureMinimumTarget.ForOf) { - // for..of prior to ES2015 requires the __values helper when downlevelIteration is enabled - checkExternalEmitHelpers(node, ExternalEmitHelpers.ForOfIncludes); - } // Check the LHS and RHS // If the LHS is a declaration, just check it as a variable declaration, which will in turn check the RHS @@ -45525,6 +45259,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { return undefined; } + // TODO: remove ScriptTarget.ES2015 const uplevelIteration = languageVersion >= ScriptTarget.ES2015; const downlevelIteration = !uplevelIteration && compilerOptions.downlevelIteration; const possibleOutOfBounds = compilerOptions.noUncheckedIndexedAccess && !!(use & IterationUse.PossiblyOutOfBounds); @@ -46680,7 +46415,7 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { */ function checkClassNameCollisionWithObject(name: Identifier): void { if ( - languageVersion >= ScriptTarget.ES5 && name.escapedText === "Object" + name.escapedText === "Object" && host.getEmitModuleFormatOfFile(getSourceFileOfNode(name)) < ModuleKind.ES2015 ) { error(name, Diagnostics.Class_name_cannot_be_Object_when_targeting_ES5_and_above_with_module_0, ModuleKind[moduleKind]); // https://github.com/Microsoft/TypeScript/issues/17494 @@ -46954,9 +46689,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { const baseTypeNode = getEffectiveBaseTypeNode(node); if (baseTypeNode) { forEach(baseTypeNode.typeArguments, checkSourceElement); - if (languageVersion < LanguageFeatureMinimumTarget.Classes) { - checkExternalEmitHelpers(baseTypeNode.parent, ExternalEmitHelpers.Extends); - } // check both @extends and extends if both are specified. const extendsNode = getClassExtendsHeritageElement(node); if (extendsNode && extendsNode !== baseTypeNode) { @@ -52603,9 +52335,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { function checkGrammarAccessor(accessor: AccessorDeclaration): boolean { if (!(accessor.flags & NodeFlags.Ambient) && (accessor.parent.kind !== SyntaxKind.TypeLiteral) && (accessor.parent.kind !== SyntaxKind.InterfaceDeclaration)) { - if (languageVersion < ScriptTarget.ES2015 && isPrivateIdentifier(accessor.name)) { - return grammarErrorOnNode(accessor.name, Diagnostics.Private_identifiers_are_only_available_when_targeting_ECMAScript_2015_and_higher); - } if (accessor.body === undefined && !hasSyntacticModifier(accessor, ModifierFlags.Abstract)) { return grammarErrorAtPos(accessor, accessor.end - 1, ";".length, Diagnostics._0_expected, "{"); } @@ -52747,9 +52476,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { } if (isClassLike(node.parent)) { - if (languageVersion < ScriptTarget.ES2015 && isPrivateIdentifier(node.name)) { - return grammarErrorOnNode(node.name, Diagnostics.Private_identifiers_are_only_available_when_targeting_ECMAScript_2015_and_higher); - } // Technically, computed properties in ambient contexts is disallowed // for property declarations and accessors too, not just methods. // However, property declarations disallow computed names in general, @@ -53140,12 +52866,6 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { if (checkGrammarForInvalidDynamicName(node.name, Diagnostics.A_computed_property_name_in_a_class_property_declaration_must_have_a_simple_literal_type_or_a_unique_symbol_type)) { return true; } - if (languageVersion < ScriptTarget.ES2015 && isPrivateIdentifier(node.name)) { - return grammarErrorOnNode(node.name, Diagnostics.Private_identifiers_are_only_available_when_targeting_ECMAScript_2015_and_higher); - } - if (languageVersion < ScriptTarget.ES2015 && isAutoAccessorPropertyDeclaration(node) && !(node.flags & NodeFlags.Ambient)) { - return grammarErrorOnNode(node.name, Diagnostics.Properties_with_the_accessor_modifier_are_only_available_when_targeting_ECMAScript_2015_and_higher); - } if (isAutoAccessorPropertyDeclaration(node) && checkGrammarForInvalidQuestionMark(node.questionToken, Diagnostics.An_accessor_property_cannot_be_declared_optional)) { return true; } diff --git a/src/compiler/emitter.ts b/src/compiler/emitter.ts index c60fd92787275..4cc000f6e7dda 100644 --- a/src/compiler/emitter.ts +++ b/src/compiler/emitter.ts @@ -2608,7 +2608,7 @@ export function createPrinter(printerOptions: PrinterOptions = {}, handlers: Pri } const preferNewLine = node.multiLine ? ListFormat.PreferNewLine : ListFormat.None; - const allowTrailingComma = currentSourceFile && currentSourceFile.languageVersion >= ScriptTarget.ES5 && !isJsonSourceFile(currentSourceFile) ? ListFormat.AllowTrailingComma : ListFormat.None; + const allowTrailingComma = currentSourceFile && !isJsonSourceFile(currentSourceFile) ? ListFormat.AllowTrailingComma : ListFormat.None; emitList(node, node.properties, ListFormat.ObjectLiteralExpressionProperties | allowTrailingComma | preferNewLine); if (indentedFlag) { diff --git a/src/compiler/factory/emitHelpers.ts b/src/compiler/factory/emitHelpers.ts index 255518a2842cf..d54a8fee68b25 100644 --- a/src/compiler/factory/emitHelpers.ts +++ b/src/compiler/factory/emitHelpers.ts @@ -16,7 +16,6 @@ import { FunctionExpression, GeneratedIdentifierFlags, getEmitFlags, - getEmitScriptTarget, getPropertyNameOfBindingOrAssignmentElement, Identifier, InternalEmitFlags, @@ -28,7 +27,6 @@ import { ObjectLiteralElementLike, ParameterDeclaration, PrivateIdentifier, - ScriptTarget, setEmitFlags, setInternalEmitFlags, setTextRange, @@ -400,15 +398,7 @@ export function createEmitHelperFactory(context: TransformationContext): EmitHel // ES2018 Helpers function createAssignHelper(attributesSegments: Expression[]) { - if (getEmitScriptTarget(context.getCompilerOptions()) >= ScriptTarget.ES2015) { - return factory.createCallExpression(factory.createPropertyAccessExpression(factory.createIdentifier("Object"), "assign"), /*typeArguments*/ undefined, attributesSegments); - } - context.requestEmitHelper(assignHelper); - return factory.createCallExpression( - getUnscopedHelperName("__assign"), - /*typeArguments*/ undefined, - attributesSegments, - ); + return factory.createCallExpression(factory.createPropertyAccessExpression(factory.createIdentifier("Object"), "assign"), /*typeArguments*/ undefined, attributesSegments); } function createAwaitHelper(expression: Expression) { @@ -816,25 +806,6 @@ const runInitializersHelper: UnscopedEmitHelper = { // ES2018 Helpers -const assignHelper: UnscopedEmitHelper = { - name: "typescript:assign", - importName: "__assign", - scoped: false, - priority: 1, - text: ` - var __assign = (this && this.__assign) || function () { - __assign = Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); - };`, -}; - const awaitHelper: UnscopedEmitHelper = { name: "typescript:await", importName: "__await", diff --git a/src/compiler/factory/nodeFactory.ts b/src/compiler/factory/nodeFactory.ts index c7286dc33c677..45cd664ccd06b 100644 --- a/src/compiler/factory/nodeFactory.ts +++ b/src/compiler/factory/nodeFactory.ts @@ -6665,9 +6665,7 @@ export function createNodeFactory(flags: NodeFactoryFlags, baseFactory: BaseNode } else if (isSuperKeyword(callee)) { thisArg = createThis(); - target = languageVersion !== undefined && languageVersion < ScriptTarget.ES2015 - ? setTextRange(createIdentifier("_super"), callee) - : callee as PrimaryExpression; + target = callee as PrimaryExpression; } else if (getEmitFlags(callee) & EmitFlags.HelperName) { thisArg = createVoidZero(); diff --git a/src/compiler/program.ts b/src/compiler/program.ts index c78ce26ab32da..cc39c233147f6 100644 --- a/src/compiler/program.ts +++ b/src/compiler/program.ts @@ -4240,19 +4240,10 @@ export function createProgram(_rootNamesOrOptions: readonly string[] | CreatePro const firstNonAmbientExternalModuleSourceFile = find(files, f => isExternalModule(f) && !f.isDeclarationFile); if (options.isolatedModules || options.verbatimModuleSyntax) { - if (options.module === ModuleKind.None && languageVersion < ScriptTarget.ES2015 && options.isolatedModules) { - createDiagnosticForOptionName(Diagnostics.Option_isolatedModules_can_only_be_used_when_either_option_module_is_provided_or_option_target_is_ES2015_or_higher, "isolatedModules", "target"); - } - if (options.preserveConstEnums === false) { createDiagnosticForOptionName(Diagnostics.Option_preserveConstEnums_cannot_be_disabled_when_0_is_enabled, options.verbatimModuleSyntax ? "verbatimModuleSyntax" : "isolatedModules", "preserveConstEnums"); } } - else if (firstNonAmbientExternalModuleSourceFile && languageVersion < ScriptTarget.ES2015 && options.module === ModuleKind.None) { - // We cannot use createDiagnosticFromNode because nodes do not have parents yet - const span = getErrorSpanForNode(firstNonAmbientExternalModuleSourceFile, typeof firstNonAmbientExternalModuleSourceFile.externalModuleIndicator === "boolean" ? firstNonAmbientExternalModuleSourceFile : firstNonAmbientExternalModuleSourceFile.externalModuleIndicator!); - programDiagnostics.addConfigDiagnostic(createFileDiagnostic(firstNonAmbientExternalModuleSourceFile, span.start, span.length, Diagnostics.Cannot_use_imports_exports_or_module_augmentations_when_module_is_none)); - } // Cannot specify module gen that isn't amd or system with --out if (outputFile && !options.emitDeclarationOnly) { diff --git a/src/compiler/scanner.ts b/src/compiler/scanner.ts index 46ec3630455f7..fc618adbc1dfd 100644 --- a/src/compiler/scanner.ts +++ b/src/compiler/scanner.ts @@ -300,9 +300,7 @@ const charCodeToRegExpFlag = new Map([ const regExpFlagToFirstAvailableLanguageVersion = new Map([ [RegularExpressionFlags.HasIndices, LanguageFeatureMinimumTarget.RegularExpressionFlagsHasIndices], [RegularExpressionFlags.DotAll, LanguageFeatureMinimumTarget.RegularExpressionFlagsDotAll], - [RegularExpressionFlags.Unicode, LanguageFeatureMinimumTarget.RegularExpressionFlagsUnicode], [RegularExpressionFlags.UnicodeSets, LanguageFeatureMinimumTarget.RegularExpressionFlagsUnicodeSets], - [RegularExpressionFlags.Sticky, LanguageFeatureMinimumTarget.RegularExpressionFlagsSticky], ]); /** diff --git a/src/compiler/transformers/classFields.ts b/src/compiler/transformers/classFields.ts index 91b033e16acee..ec0850234941e 100644 --- a/src/compiler/transformers/classFields.ts +++ b/src/compiler/transformers/classFields.ts @@ -389,7 +389,7 @@ export function transformClassFields(context: TransformationContext): (x: Source // We don't need to transform `super` property access when target <= ES5 because // the es2015 transformation handles those. - const shouldTransformSuperInStaticInitializers = shouldTransformThisInStaticInitializers && languageVersion >= ScriptTarget.ES2015; + const shouldTransformSuperInStaticInitializers = shouldTransformThisInStaticInitializers; const shouldTransformAnything = shouldTransformInitializers || shouldTransformPrivateElementsOrClassStaticBlocks || diff --git a/src/compiler/transformers/es2017.ts b/src/compiler/transformers/es2017.ts index 3a80a84334eef..23a1b46f14314 100644 --- a/src/compiler/transformers/es2017.ts +++ b/src/compiler/transformers/es2017.ts @@ -35,8 +35,6 @@ import { FunctionLikeDeclaration, GeneratedIdentifierFlags, GetAccessorDeclaration, - getEmitScriptTarget, - getEntityNameFromTypeNode, getFunctionFlags, getInitializedVariables, getNodeId, @@ -47,10 +45,8 @@ import { isBlock, isConciseBody, isEffectiveStrictModeSourceFile, - isEntityName, isExpression, isForInitializer, - isFunctionLike, isFunctionLikeDeclaration, isIdentifier, isModifier, @@ -73,7 +69,6 @@ import { ParameterDeclaration, PropertyAccessExpression, PropertyAssignment, - ScriptTarget, SetAccessorDeclaration, setEmitFlags, setOriginalNode, @@ -86,8 +81,6 @@ import { TextRange, TransformationContext, TransformFlags, - TypeNode, - TypeReferenceSerializationKind, unescapeLeadingUnderscores, VariableDeclaration, VariableDeclarationList, @@ -127,7 +120,6 @@ export function transformES2017(context: TransformationContext): (x: SourceFile const resolver = context.getEmitResolver(); const compilerOptions = context.getCompilerOptions(); - const languageVersion = getEmitScriptTarget(compilerOptions); /** * Keeps track of whether expression substitution has been enabled for specific edge cases. @@ -659,8 +651,7 @@ export function transformES2017(context: TransformationContext): (x: SourceFile // Minor optimization, emit `_super` helper to capture `super` access in an arrow. // This step isn't needed if we eventually transform this to ES5. const originalMethod = getOriginalNode(node, isFunctionLikeDeclaration); - const emitSuperHelpers = languageVersion >= ScriptTarget.ES2015 && - (resolver.hasNodeCheckFlag(node, NodeCheckFlags.MethodWithSuperPropertyAssignmentInAsync) || resolver.hasNodeCheckFlag(node, NodeCheckFlags.MethodWithSuperPropertyAccessInAsync)) && + const emitSuperHelpers = (resolver.hasNodeCheckFlag(node, NodeCheckFlags.MethodWithSuperPropertyAssignmentInAsync) || resolver.hasNodeCheckFlag(node, NodeCheckFlags.MethodWithSuperPropertyAccessInAsync)) && (getFunctionFlags(originalMethod) & FunctionFlags.AsyncGenerator) !== FunctionFlags.AsyncGenerator; if (emitSuperHelpers) { @@ -739,9 +730,6 @@ export function transformES2017(context: TransformationContext): (x: SourceFile const innerParameters = !isSimpleParameterList(node.parameters) ? visitParameterList(node.parameters, visitor, context) : undefined; resumeLexicalEnvironment(); - const original = getOriginalNode(node, isFunctionLike); - const nodeType = original.type; - const promiseConstructor = languageVersion < ScriptTarget.ES2015 ? getPromiseConstructor(nodeType) : undefined; const isArrowFunction = node.kind === SyntaxKind.ArrowFunction; const savedLexicalArgumentsBinding = lexicalArgumentsBinding; const hasLexicalArguments = resolver.hasNodeCheckFlag(node, NodeCheckFlags.CaptureArguments); @@ -808,7 +796,7 @@ export function transformES2017(context: TransformationContext): (x: SourceFile emitHelpers().createAwaiterHelper( hasLexicalThis, argumentsExpression, - promiseConstructor, + /*promiseConstructor*/ undefined, innerParameters, asyncBody, ), @@ -817,7 +805,7 @@ export function transformES2017(context: TransformationContext): (x: SourceFile // Minor optimization, emit `_super` helper to capture `super` access in an arrow. // This step isn't needed if we eventually transform this to ES5. - const emitSuperHelpers = languageVersion >= ScriptTarget.ES2015 && (resolver.hasNodeCheckFlag(node, NodeCheckFlags.MethodWithSuperPropertyAssignmentInAsync) || resolver.hasNodeCheckFlag(node, NodeCheckFlags.MethodWithSuperPropertyAccessInAsync)); + const emitSuperHelpers = resolver.hasNodeCheckFlag(node, NodeCheckFlags.MethodWithSuperPropertyAssignmentInAsync) || resolver.hasNodeCheckFlag(node, NodeCheckFlags.MethodWithSuperPropertyAccessInAsync); if (emitSuperHelpers) { enableSubstitutionForAsyncMethodsWithSuper(); @@ -851,7 +839,7 @@ export function transformES2017(context: TransformationContext): (x: SourceFile result = emitHelpers().createAwaiterHelper( hasLexicalThis, argumentsExpression, - promiseConstructor, + /*promiseConstructor*/ undefined, innerParameters, asyncBody, ); @@ -880,21 +868,6 @@ export function transformES2017(context: TransformationContext): (x: SourceFile } } - function getPromiseConstructor(type: TypeNode | undefined) { - const typeName = type && getEntityNameFromTypeNode(type); - if (typeName && isEntityName(typeName)) { - const serializationKind = resolver.getTypeReferenceSerializationKind(typeName); - if ( - serializationKind === TypeReferenceSerializationKind.TypeWithConstructSignatureAndValue - || serializationKind === TypeReferenceSerializationKind.Unknown - ) { - return typeName; - } - } - - return undefined; - } - function enableSubstitutionForAsyncMethodsWithSuper() { if ((enabledSubstitutions & ES2017SubstitutionFlags.AsyncMethodsWithSuper) === 0) { enabledSubstitutions |= ES2017SubstitutionFlags.AsyncMethodsWithSuper; diff --git a/src/compiler/transformers/es2018.ts b/src/compiler/transformers/es2018.ts index c8894d336af1c..0156ce7020637 100644 --- a/src/compiler/transformers/es2018.ts +++ b/src/compiler/transformers/es2018.ts @@ -41,7 +41,6 @@ import { FunctionLikeDeclaration, GeneratedIdentifierFlags, GetAccessorDeclaration, - getEmitScriptTarget, getFunctionFlags, getNodeId, hasSyntacticModifier, @@ -82,7 +81,6 @@ import { processTaggedTemplateExpression, PropertyAccessExpression, ReturnStatement, - ScriptTarget, SetAccessorDeclaration, setEmitFlags, setOriginalNode, @@ -162,7 +160,6 @@ export function transformES2018(context: TransformationContext): (x: SourceFile const resolver = context.getEmitResolver(); const compilerOptions = context.getCompilerOptions(); - const languageVersion = getEmitScriptTarget(compilerOptions); const previousOnEmitNode = context.onEmitNode; context.onEmitNode = onEmitNode; @@ -1191,7 +1188,7 @@ export function transformES2018(context: TransformationContext): (x: SourceFile // Minor optimization, emit `_super` helper to capture `super` access in an arrow. // This step isn't needed if we eventually transform this to ES5. - const emitSuperHelpers = languageVersion >= ScriptTarget.ES2015 && (resolver.hasNodeCheckFlag(node, NodeCheckFlags.MethodWithSuperPropertyAssignmentInAsync) || resolver.hasNodeCheckFlag(node, NodeCheckFlags.MethodWithSuperPropertyAccessInAsync)); + const emitSuperHelpers = resolver.hasNodeCheckFlag(node, NodeCheckFlags.MethodWithSuperPropertyAssignmentInAsync) || resolver.hasNodeCheckFlag(node, NodeCheckFlags.MethodWithSuperPropertyAccessInAsync); if (emitSuperHelpers) { enableSubstitutionForAsyncMethodsWithSuper(); const variableStatement = createSuperAccessVariableStatement(factory, resolver, node, capturedSuperProperties); diff --git a/src/compiler/transformers/legacyDecorators.ts b/src/compiler/transformers/legacyDecorators.ts index 8edba2affaab3..366913e768421 100644 --- a/src/compiler/transformers/legacyDecorators.ts +++ b/src/compiler/transformers/legacyDecorators.ts @@ -327,11 +327,7 @@ export function transformLegacyDecorators(context: TransformationContext): (x: S const location = moveRangePastModifiers(node); const classAlias = getClassAliasIfNeeded(node); - // When we transform to ES5/3 this will be moved inside an IIFE and should reference the name - // without any block-scoped variable collision handling - const declName = languageVersion < ScriptTarget.ES2015 ? - factory.getInternalName(node, /*allowComments*/ false, /*allowSourceMaps*/ true) : - factory.getLocalName(node, /*allowComments*/ false, /*allowSourceMaps*/ true); + const declName = factory.getLocalName(node, /*allowComments*/ false, /*allowSourceMaps*/ true); // ... = class ${name} ${heritageClauses} { // ${members} @@ -687,11 +683,7 @@ export function transformLegacyDecorators(context: TransformationContext): (x: S const classAlias = classAliases && classAliases[getOriginalNodeId(node)]; - // When we transform to ES5/3 this will be moved inside an IIFE and should reference the name - // without any block-scoped variable collision handling - const localName = languageVersion < ScriptTarget.ES2015 ? - factory.getInternalName(node, /*allowComments*/ false, /*allowSourceMaps*/ true) : - factory.getDeclarationName(node, /*allowComments*/ false, /*allowSourceMaps*/ true); + const localName = factory.getDeclarationName(node, /*allowComments*/ false, /*allowSourceMaps*/ true); const decorate = emitHelpers().createDecorateHelper(decoratorExpressions, localName); const expression = factory.createAssignment(localName, classAlias ? factory.createAssignment(classAlias, decorate) : decorate); setEmitFlags(expression, EmitFlags.NoComments); diff --git a/src/compiler/transformers/module/esnextAnd2015.ts b/src/compiler/transformers/module/esnextAnd2015.ts index 7776e2c4bb2f0..b3d8a6cc0ba26 100644 --- a/src/compiler/transformers/module/esnextAnd2015.ts +++ b/src/compiler/transformers/module/esnextAnd2015.ts @@ -18,7 +18,6 @@ import { GeneratedIdentifierFlags, getEmitFlags, getEmitModuleKind, - getEmitScriptTarget, getExternalHelpersModuleName, getExternalModuleNameLiteral, getIsolatedModules, @@ -46,7 +45,6 @@ import { NodeId, rangeContainsRange, rewriteModuleSpecifier, - ScriptTarget, setOriginalNode, setTextRange, shouldRewriteModuleSpecifier, @@ -72,7 +70,6 @@ export function transformECMAScriptModule(context: TransformationContext): (x: S const host = context.getEmitHost(); const resolver = context.getEmitResolver(); const compilerOptions = context.getCompilerOptions(); - const languageVersion = getEmitScriptTarget(compilerOptions); const previousOnEmitNode = context.onEmitNode; const previousOnSubstituteNode = context.onSubstituteNode; context.onEmitNode = onEmitNode; @@ -242,7 +239,7 @@ export function transformECMAScriptModule(context: TransformationContext): (x: S ]), ), ], - /*flags*/ languageVersion >= ScriptTarget.ES2015 ? NodeFlags.Const : NodeFlags.None, + NodeFlags.Const, ), ); importRequireStatements = [importStatement, requireStatement]; @@ -277,7 +274,7 @@ export function transformECMAScriptModule(context: TransformationContext): (x: S createRequireCall(node), ), ], - /*flags*/ languageVersion >= ScriptTarget.ES2015 ? NodeFlags.Const : NodeFlags.None, + NodeFlags.Const, ), ), node, diff --git a/src/compiler/transformers/module/module.ts b/src/compiler/transformers/module/module.ts index ae0d2a0aaa87c..fe90d66260be1 100644 --- a/src/compiler/transformers/module/module.ts +++ b/src/compiler/transformers/module/module.ts @@ -5,7 +5,6 @@ import { addRange, append, arrayFrom, - ArrowFunction, BinaryExpression, BindingElement, Block, @@ -39,7 +38,6 @@ import { ForOfStatement, ForStatement, FunctionDeclaration, - FunctionExpression, GeneratedIdentifierFlags, getEmitFlags, getEmitModuleKind, @@ -1217,19 +1215,18 @@ export function transformModule(context: TransformationContext): (x: SourceFile : firstArgument && rewriteOrShim ? isStringLiteral(firstArgument) ? rewriteModuleSpecifier(firstArgument, compilerOptions) : emitHelpers().createRewriteRelativeImportExtensionsHelper(firstArgument) : firstArgument; - const containsLexicalThis = !!(node.transformFlags & TransformFlags.ContainsLexicalThis); switch (compilerOptions.module) { case ModuleKind.AMD: - return createImportCallExpressionAMD(argument, containsLexicalThis); + return createImportCallExpressionAMD(argument); case ModuleKind.UMD: - return createImportCallExpressionUMD(argument ?? factory.createVoidZero(), containsLexicalThis); + return createImportCallExpressionUMD(argument ?? factory.createVoidZero()); case ModuleKind.CommonJS: default: return createImportCallExpressionCommonJS(argument); } } - function createImportCallExpressionUMD(arg: Expression, containsLexicalThis: boolean): Expression { + function createImportCallExpressionUMD(arg: Expression): Expression { // (function (factory) { // ... (regular UMD) // } @@ -1251,7 +1248,7 @@ export function transformModule(context: TransformationContext): (x: SourceFile /*questionToken*/ undefined, /*whenTrue*/ createImportCallExpressionCommonJS(arg), /*colonToken*/ undefined, - /*whenFalse*/ createImportCallExpressionAMD(argClone, containsLexicalThis), + /*whenFalse*/ createImportCallExpressionAMD(argClone), ); } else { @@ -1263,13 +1260,13 @@ export function transformModule(context: TransformationContext): (x: SourceFile /*questionToken*/ undefined, /*whenTrue*/ createImportCallExpressionCommonJS(temp, /*isInlineable*/ true), /*colonToken*/ undefined, - /*whenFalse*/ createImportCallExpressionAMD(temp, containsLexicalThis), + /*whenFalse*/ createImportCallExpressionAMD(temp), ), ); } } - function createImportCallExpressionAMD(arg: Expression | undefined, containsLexicalThis: boolean): Expression { + function createImportCallExpressionAMD(arg: Expression | undefined): Expression { // improt("./blah") // emit as // define(["require", "exports", "blah"], function (require, exports) { @@ -1292,35 +1289,14 @@ export function transformModule(context: TransformationContext): (x: SourceFile ), ]); - let func: FunctionExpression | ArrowFunction; - if (languageVersion >= ScriptTarget.ES2015) { - func = factory.createArrowFunction( - /*modifiers*/ undefined, - /*typeParameters*/ undefined, - parameters, - /*type*/ undefined, - /*equalsGreaterThanToken*/ undefined, - body, - ); - } - else { - func = factory.createFunctionExpression( - /*modifiers*/ undefined, - /*asteriskToken*/ undefined, - /*name*/ undefined, - /*typeParameters*/ undefined, - parameters, - /*type*/ undefined, - body, - ); - - // if there is a lexical 'this' in the import call arguments, ensure we indicate - // that this new function expression indicates it captures 'this' so that the - // es2015 transformer will properly substitute 'this' with '_this'. - if (containsLexicalThis) { - setEmitFlags(func, EmitFlags.CapturesThis); - } - } + const func = factory.createArrowFunction( + /*modifiers*/ undefined, + /*typeParameters*/ undefined, + parameters, + /*type*/ undefined, + /*equalsGreaterThanToken*/ undefined, + body, + ); const promise = factory.createNewExpression(factory.createIdentifier("Promise"), /*typeArguments*/ undefined, [func]); if (getESModuleInterop(compilerOptions)) { @@ -1343,19 +1319,11 @@ export function transformModule(context: TransformationContext): (x: SourceFile factory.createPropertyAccessExpression(factory.createIdentifier("Promise"), "resolve"), /*typeArguments*/ undefined, /*argumentsArray*/ needSyncEval - ? languageVersion >= ScriptTarget.ES2015 - ? [ - factory.createTemplateExpression(factory.createTemplateHead(""), [ - factory.createTemplateSpan(arg, factory.createTemplateTail("")), - ]), - ] - : [ - factory.createCallExpression( - factory.createPropertyAccessExpression(factory.createStringLiteral(""), "concat"), - /*typeArguments*/ undefined, - [arg], - ), - ] + ? [ + factory.createTemplateExpression(factory.createTemplateHead(""), [ + factory.createTemplateSpan(arg, factory.createTemplateTail("")), + ]), + ] : [], ); @@ -1378,28 +1346,14 @@ export function transformModule(context: TransformationContext): (x: SourceFile ] : []; - let func: FunctionExpression | ArrowFunction; - if (languageVersion >= ScriptTarget.ES2015) { - func = factory.createArrowFunction( - /*modifiers*/ undefined, - /*typeParameters*/ undefined, - /*parameters*/ parameters, - /*type*/ undefined, - /*equalsGreaterThanToken*/ undefined, - requireCall, - ); - } - else { - func = factory.createFunctionExpression( - /*modifiers*/ undefined, - /*asteriskToken*/ undefined, - /*name*/ undefined, - /*typeParameters*/ undefined, - /*parameters*/ parameters, - /*type*/ undefined, - factory.createBlock([factory.createReturnStatement(requireCall)]), - ); - } + const func = factory.createArrowFunction( + /*modifiers*/ undefined, + /*typeParameters*/ undefined, + /*parameters*/ parameters, + /*type*/ undefined, + /*equalsGreaterThanToken*/ undefined, + requireCall, + ); const downleveledImport = factory.createCallExpression(factory.createPropertyAccessExpression(promiseResolveCall, "then"), /*typeArguments*/ undefined, [func]); @@ -1489,7 +1443,7 @@ export function transformModule(context: TransformationContext): (x: SourceFile /*modifiers*/ undefined, factory.createVariableDeclarationList( variables, - languageVersion >= ScriptTarget.ES2015 ? NodeFlags.Const : NodeFlags.None, + NodeFlags.Const, ), ), /*location*/ node, @@ -1520,7 +1474,7 @@ export function transformModule(context: TransformationContext): (x: SourceFile /*original*/ node, ), ], - languageVersion >= ScriptTarget.ES2015 ? NodeFlags.Const : NodeFlags.None, + NodeFlags.Const, ), ), ); @@ -1588,7 +1542,7 @@ export function transformModule(context: TransformationContext): (x: SourceFile createRequireCall(node), ), ], - /*flags*/ languageVersion >= ScriptTarget.ES2015 ? NodeFlags.Const : NodeFlags.None, + NodeFlags.Const, ), ), node, diff --git a/src/compiler/transformers/ts.ts b/src/compiler/transformers/ts.ts index cc3da23d2067b..aab4a197330ae 100644 --- a/src/compiler/transformers/ts.ts +++ b/src/compiler/transformers/ts.ts @@ -24,7 +24,6 @@ import { createExpressionFromEntityName, createRange, createRuntimeTypeSerializer, - createTokenRange, Debug, Declaration, Decorator, @@ -50,7 +49,6 @@ import { getEffectiveBaseTypeNode, getEmitFlags, getEmitModuleKind, - getEmitScriptTarget, getFirstConstructorWithBody, getInitializedVariables, getIsolatedModules, @@ -70,7 +68,6 @@ import { ImportSpecifier, InitializedVariableDeclaration, insertStatementsAfterStandardPrologue, - InternalEmitFlags, isAccessExpression, isArray, isAssertionExpression, @@ -135,7 +132,6 @@ import { ModuleBlock, ModuleDeclaration, ModuleKind, - moveRangePastDecorators, moveRangePastModifiers, moveRangePos, NamedExportBindings, @@ -160,26 +156,21 @@ import { PropertyName, removeAllComments, SatisfiesExpression, - ScriptTarget, SetAccessorDeclaration, setCommentRange, setConstantValue, setEmitFlags, - setInternalEmitFlags, setOriginalNode, setParent, setSourceMapRange, setSyntheticLeadingComments, setSyntheticTrailingComments, setTextRange, - setTextRangeEnd, - setTextRangePos, setTypeNode, ShorthandPropertyAssignment, shouldPreserveConstEnums, skipOuterExpressions, skipPartiallyEmittedExpressions, - skipTrivia, skipWhile, some, SourceFile, @@ -244,7 +235,6 @@ export function transformTypeScript(context: TransformationContext): Transformer const resolver = context.getEmitResolver(); const compilerOptions = context.getCompilerOptions(); - const languageVersion = getEmitScriptTarget(compilerOptions); const moduleKind = getEmitModuleKind(compilerOptions); const legacyDecorators = !!compilerOptions.experimentalDecorators; const typeSerializer = compilerOptions.emitDecoratorMetadata ? createRuntimeTypeSerializer(context) : undefined; @@ -879,8 +869,6 @@ export function transformTypeScript(context: TransformationContext): Transformer function visitClassDeclaration(node: ClassDeclaration): VisitResult { const facts = getClassFacts(node); - const promoteToIIFE = languageVersion <= ScriptTarget.ES5 && - !!(facts & ClassFacts.MayNeedImmediatelyInvokedFunctionExpression); if ( !isClassLikeDeclarationWithTypeScriptSyntax(node) && @@ -897,12 +885,7 @@ export function transformTypeScript(context: TransformationContext): Transformer ); } - if (promoteToIIFE) { - context.startLexicalEnvironment(); - } - - const moveModifiers = promoteToIIFE || - facts & ClassFacts.IsExportOfNamespace; + const moveModifiers = facts & ClassFacts.IsExportOfNamespace; // elide modifiers on the declaration if we are emitting an IIFE or the class is // a namespace export @@ -944,61 +927,7 @@ export function transformTypeScript(context: TransformationContext): Transformer setEmitFlags(classDeclaration, emitFlags); - let statement: VariableStatement | ClassDeclaration; - if (promoteToIIFE) { - // When we emit a TypeScript class down to ES5, we must wrap it in an IIFE so that the - // 'es2015' transformer can properly nest static initializers and decorators. The result - // looks something like: - // - // var C = function () { - // class C { - // } - // C.static_prop = 1; - // return C; - // }(); - // - const statements: Statement[] = [classDeclaration]; - const closingBraceLocation = createTokenRange(skipTrivia(currentSourceFile.text, node.members.end), SyntaxKind.CloseBraceToken); - const localName = factory.getInternalName(node); - - // The following partially-emitted expression exists purely to align our sourcemap - // emit with the original emitter. - const outer = factory.createPartiallyEmittedExpression(localName); - setTextRangeEnd(outer, closingBraceLocation.end); - setEmitFlags(outer, EmitFlags.NoComments); - - const returnStatement = factory.createReturnStatement(outer); - setTextRangePos(returnStatement, closingBraceLocation.pos); - setEmitFlags(returnStatement, EmitFlags.NoComments | EmitFlags.NoTokenSourceMaps); - statements.push(returnStatement); - - insertStatementsAfterStandardPrologue(statements, context.endLexicalEnvironment()); - - const iife = factory.createImmediatelyInvokedArrowFunction(statements); - setInternalEmitFlags(iife, InternalEmitFlags.TypeScriptClassWrapper); - - // let C = (() => { ... })(); - const varDecl = factory.createVariableDeclaration( - factory.getLocalName(node, /*allowComments*/ false, /*allowSourceMaps*/ false), - /*exclamationToken*/ undefined, - /*type*/ undefined, - iife, - ); - setOriginalNode(varDecl, node); - - const varStatement = factory.createVariableStatement( - /*modifiers*/ undefined, - factory.createVariableDeclarationList([varDecl], NodeFlags.Let), - ); - setOriginalNode(varStatement, node); - setCommentRange(varStatement, node); - setSourceMapRange(varStatement, moveRangePastDecorators(node)); - startOnNewLine(varStatement); - statement = varStatement; - } - else { - statement = classDeclaration; - } + const statement = classDeclaration; if (moveModifiers) { if (facts & ClassFacts.IsExportOfNamespace) { diff --git a/src/compiler/transformers/typeSerializer.ts b/src/compiler/transformers/typeSerializer.ts index 4c9d397b74385..40c64d1a6d68a 100644 --- a/src/compiler/transformers/typeSerializer.ts +++ b/src/compiler/transformers/typeSerializer.ts @@ -314,7 +314,7 @@ export function createRuntimeTypeSerializer(context: TransformationContext): Run return getGlobalConstructor("BigInt", ScriptTarget.ES2020); case SyntaxKind.SymbolKeyword: - return getGlobalConstructor("Symbol", ScriptTarget.ES2015); + return factory.createIdentifier("Symbol"); case SyntaxKind.TypeReference: return serializeTypeReferenceNode(node as TypeReferenceNode); @@ -528,7 +528,7 @@ export function createRuntimeTypeSerializer(context: TransformationContext): Run return factory.createIdentifier("Array"); case TypeReferenceSerializationKind.ESSymbolType: - return getGlobalConstructor("Symbol", ScriptTarget.ES2015); + return factory.createIdentifier("Symbol"); case TypeReferenceSerializationKind.TypeWithCallSignature: return factory.createIdentifier("Function"); diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 21c50bd9a4536..08cf2a4a27e86 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -8429,21 +8429,6 @@ export type EmitHelperUniqueNameCallback = (name: string) => string; /** @internal */ export type LanugageFeatures = - // ES2015 Features - | "Classes" - | "ForOf" - | "Generators" - | "Iteration" - | "SpreadElements" - | "RestElements" - | "TaggedTemplates" - | "DestructuringAssignment" - | "BindingPatterns" - | "ArrowFunctions" - | "BlockScopedVariables" - | "ObjectAssign" - | "RegularExpressionFlagsUnicode" - | "RegularExpressionFlagsSticky" // ES2016 Features | "Exponentiation" // `x ** y` // ES2017 Features @@ -8486,20 +8471,6 @@ export type LanugageFeatures = * @internal */ export const LanguageFeatureMinimumTarget: Record = { - Classes: ScriptTarget.ES2015, - ForOf: ScriptTarget.ES2015, - Generators: ScriptTarget.ES2015, - Iteration: ScriptTarget.ES2015, - SpreadElements: ScriptTarget.ES2015, - RestElements: ScriptTarget.ES2015, - TaggedTemplates: ScriptTarget.ES2015, - DestructuringAssignment: ScriptTarget.ES2015, - BindingPatterns: ScriptTarget.ES2015, - ArrowFunctions: ScriptTarget.ES2015, - BlockScopedVariables: ScriptTarget.ES2015, - ObjectAssign: ScriptTarget.ES2015, - RegularExpressionFlagsUnicode: ScriptTarget.ES2015, - RegularExpressionFlagsSticky: ScriptTarget.ES2015, Exponentiation: ScriptTarget.ES2016, AsyncFunctions: ScriptTarget.ES2017, ForAwaitOf: ScriptTarget.ES2018, diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 51ea0e883feb8..e0cb3fa1758d3 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -7830,7 +7830,7 @@ export function moveRangePastModifiers(node: Node): TextRange { * @param pos The start position. * @param token The token. * - * @internal + * @internal @knipignore */ export function createTokenRange(pos: number, token: SyntaxKind): TextRange { return createRange(pos, pos + tokenToString(token)!.length); @@ -8979,6 +8979,7 @@ const _computedOptions = createComputedCompilerOptions({ computeValue: (compilerOptions): ModuleKind => { return typeof compilerOptions.module === "number" ? compilerOptions.module : + // TODO: remove ScriptTarget.ES2015 _computedOptions.target.computeValue(compilerOptions) >= ScriptTarget.ES2015 ? ModuleKind.ES2015 : ModuleKind.CommonJS; }, }, @@ -10565,7 +10566,7 @@ export function setTextRangePos(range: T, pos: numb /** * Bypasses immutability and directly sets the `end` property of a `TextRange` or `Node`. * - * @internal + * @internal @knipignore */ export function setTextRangeEnd(range: T, end: number): T { (range as TextRange).end = end; @@ -11641,13 +11642,6 @@ export function createNameResolver({ } } break; - case SyntaxKind.ArrowFunction: - // when targeting ES6 or higher there is no 'arguments' in an arrow function - // for lower compile targets the resolved symbol is used to emit an error - if (getEmitScriptTarget(compilerOptions) >= ScriptTarget.ES2015) { - break; - } - // falls through case SyntaxKind.MethodDeclaration: case SyntaxKind.Constructor: case SyntaxKind.GetAccessor: @@ -11821,14 +11815,12 @@ export function createNameResolver({ // - optional chaining pre-es2020 // - nullish coalesce pre-es2020 // - spread assignment in binding pattern pre-es2017 - if (target >= ScriptTarget.ES2015) { - let declarationRequiresScopeChange = getRequiresScopeChangeCache(functionLocation); - if (declarationRequiresScopeChange === undefined) { - declarationRequiresScopeChange = forEach(functionLocation.parameters, requiresScopeChange) || false; - setRequiresScopeChangeCache(functionLocation, declarationRequiresScopeChange); - } - return !declarationRequiresScopeChange; + let declarationRequiresScopeChange = getRequiresScopeChangeCache(functionLocation); + if (declarationRequiresScopeChange === undefined) { + declarationRequiresScopeChange = forEach(functionLocation.parameters, requiresScopeChange) || false; + setRequiresScopeChangeCache(functionLocation, declarationRequiresScopeChange); } + return !declarationRequiresScopeChange; } return false; diff --git a/src/compiler/visitorPublic.ts b/src/compiler/visitorPublic.ts index d1aee94bc6e1b..53f5075037f77 100644 --- a/src/compiler/visitorPublic.ts +++ b/src/compiler/visitorPublic.ts @@ -6,7 +6,6 @@ import { factory, FunctionBody, getEmitFlags, - getEmitScriptTarget, HasChildren, Identifier, isArray, @@ -93,7 +92,6 @@ import { NodeVisitor, nullTransformationContext, ParameterDeclaration, - ScriptTarget, setEmitFlags, setTextRange, setTextRangePosEnd, @@ -405,10 +403,7 @@ export function visitParameterList(nodes: NodeArray | unde // exists in a different lexical scope. To address this, we move any binding patterns and initializers // in a parameter list to the body if we detect a variable being hoisted while visiting a parameter list // when the emit target is greater than ES2015. - if ( - context.getLexicalEnvironmentFlags() & LexicalEnvironmentFlags.VariablesHoistedInParameters && - getEmitScriptTarget(context.getCompilerOptions()) >= ScriptTarget.ES2015 - ) { + if (context.getLexicalEnvironmentFlags() & LexicalEnvironmentFlags.VariablesHoistedInParameters) { updated = addDefaultValueAssignmentsIfNeeded(updated, context); } context.setLexicalEnvironmentFlags(LexicalEnvironmentFlags.InParameters, false); diff --git a/tests/baselines/reference/APISample_Watch.js b/tests/baselines/reference/APISample_Watch.js index 45e22b054ff07..ce29e2fa65119 100644 --- a/tests/baselines/reference/APISample_Watch.js +++ b/tests/baselines/reference/APISample_Watch.js @@ -91,7 +91,7 @@ watchMain(); * Please log a "breaking change" issue for any API breaking change affecting this issue */ Object.defineProperty(exports, "__esModule", { value: true }); -var ts = require("typescript"); +const ts = require("typescript"); const formatHost = { getCanonicalFileName: path => path, getCurrentDirectory: ts.sys.getCurrentDirectory, diff --git a/tests/baselines/reference/APISample_WatchWithDefaults.js b/tests/baselines/reference/APISample_WatchWithDefaults.js index 81c84eab83de8..eda1e3f02b960 100644 --- a/tests/baselines/reference/APISample_WatchWithDefaults.js +++ b/tests/baselines/reference/APISample_WatchWithDefaults.js @@ -63,7 +63,7 @@ watchMain(); * Please log a "breaking change" issue for any API breaking change affecting this issue */ Object.defineProperty(exports, "__esModule", { value: true }); -var ts = require("typescript"); +const ts = require("typescript"); function watchMain() { const configPath = ts.findConfigFile(/*searchPath*/ "./", ts.sys.fileExists, "tsconfig.json"); if (!configPath) { diff --git a/tests/baselines/reference/APISample_WatchWithOwnWatchHost.js b/tests/baselines/reference/APISample_WatchWithOwnWatchHost.js index 947dcbc41dc52..915dc80a8306e 100644 --- a/tests/baselines/reference/APISample_WatchWithOwnWatchHost.js +++ b/tests/baselines/reference/APISample_WatchWithOwnWatchHost.js @@ -70,7 +70,7 @@ watchMain(); * Please log a "breaking change" issue for any API breaking change affecting this issue */ Object.defineProperty(exports, "__esModule", { value: true }); -var ts = require("typescript"); +const ts = require("typescript"); function watchMain() { // get list of files and compiler options somehow const files = []; diff --git a/tests/baselines/reference/APISample_compile.js b/tests/baselines/reference/APISample_compile.js index a23ec08fdcf29..fdf4166c68525 100644 --- a/tests/baselines/reference/APISample_compile.js +++ b/tests/baselines/reference/APISample_compile.js @@ -55,7 +55,7 @@ compile(process.argv.slice(2), { */ Object.defineProperty(exports, "__esModule", { value: true }); exports.compile = compile; -var ts = require("typescript"); +const ts = require("typescript"); function compile(fileNames, options) { var program = ts.createProgram(fileNames, options); var emitResult = program.emit(); diff --git a/tests/baselines/reference/APISample_jsdoc.js b/tests/baselines/reference/APISample_jsdoc.js index 94f63918fd74e..a641c8825744e 100644 --- a/tests/baselines/reference/APISample_jsdoc.js +++ b/tests/baselines/reference/APISample_jsdoc.js @@ -163,7 +163,7 @@ var __importStar = (this && this.__importStar) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var ts = __importStar(require("typescript")); +const ts = __importStar(require("typescript")); // excerpted from https://github.com/YousefED/typescript-json-schema // (converted from a method and modified; for example, `this: any` to compensate, among other changes) function parseCommentsIntoDefinition(symbol, definition, otherAnnotations) { diff --git a/tests/baselines/reference/APISample_linter.js b/tests/baselines/reference/APISample_linter.js index 608e688236906..b0ed0df036d72 100644 --- a/tests/baselines/reference/APISample_linter.js +++ b/tests/baselines/reference/APISample_linter.js @@ -114,7 +114,7 @@ var __importStar = (this && this.__importStar) || (function () { })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.delint = delint; -var ts = __importStar(require("typescript")); +const ts = __importStar(require("typescript")); function delint(sourceFile) { delintNode(sourceFile); function delintNode(node) { diff --git a/tests/baselines/reference/APISample_parseConfig.js b/tests/baselines/reference/APISample_parseConfig.js index e96d27a9f0731..4359a0c275792 100644 --- a/tests/baselines/reference/APISample_parseConfig.js +++ b/tests/baselines/reference/APISample_parseConfig.js @@ -53,7 +53,7 @@ export function createProgram(rootFiles: string[], compilerOptionsJson: string): */ Object.defineProperty(exports, "__esModule", { value: true }); exports.createProgram = createProgram; -var ts = require("typescript"); +const ts = require("typescript"); function printError(error) { if (!error) { return; diff --git a/tests/baselines/reference/APISample_transform.js b/tests/baselines/reference/APISample_transform.js index 7006c54558c52..38b2ccd05a3d3 100644 --- a/tests/baselines/reference/APISample_transform.js +++ b/tests/baselines/reference/APISample_transform.js @@ -65,7 +65,7 @@ var __importStar = (this && this.__importStar) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var ts = __importStar(require("typescript")); +const ts = __importStar(require("typescript")); const source = "let x: string = 'string'"; let result = ts.transpile(source, { module: ts.ModuleKind.CommonJS }); console.log(JSON.stringify(result)); diff --git a/tests/baselines/reference/APISample_watcher.js b/tests/baselines/reference/APISample_watcher.js index e8ba6c55444a4..cf3cef8653a0d 100644 --- a/tests/baselines/reference/APISample_watcher.js +++ b/tests/baselines/reference/APISample_watcher.js @@ -160,7 +160,7 @@ var __importStar = (this && this.__importStar) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var ts = __importStar(require("typescript")); +const ts = __importStar(require("typescript")); function watch(rootFileNames, options) { const files = {}; // initialize the list of files diff --git a/tests/baselines/reference/ClassAndModuleThatMergeWithStaticVariableAndExportedVarThatShareAName.js b/tests/baselines/reference/ClassAndModuleThatMergeWithStaticVariableAndExportedVarThatShareAName.js index 982aa6c72cf28..9faf9a5162544 100644 --- a/tests/baselines/reference/ClassAndModuleThatMergeWithStaticVariableAndExportedVarThatShareAName.js +++ b/tests/baselines/reference/ClassAndModuleThatMergeWithStaticVariableAndExportedVarThatShareAName.js @@ -25,31 +25,25 @@ module A { } //// [ClassAndModuleThatMergeWithStaticVariableAndExportedVarThatShareAName.js] -let Point = (() => { - class Point { - constructor(x, y) { - this.x = x; - this.y = y; - } +class Point { + constructor(x, y) { + this.x = x; + this.y = y; } - Point.Origin = { x: 0, y: 0 }; - return Point; -})(); +} +Point.Origin = { x: 0, y: 0 }; (function (Point) { Point.Origin = ""; //expected duplicate identifier error })(Point || (Point = {})); var A; (function (A) { - let Point = (() => { - class Point { - constructor(x, y) { - this.x = x; - this.y = y; - } + class Point { + constructor(x, y) { + this.x = x; + this.y = y; } - Point.Origin = { x: 0, y: 0 }; - return Point; - })(); + } + Point.Origin = { x: 0, y: 0 }; A.Point = Point; (function (Point) { Point.Origin = ""; //expected duplicate identifier error diff --git a/tests/baselines/reference/ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.js b/tests/baselines/reference/ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.js index 2ee4d79afc32c..a399978511400 100644 --- a/tests/baselines/reference/ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.js +++ b/tests/baselines/reference/ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.js @@ -25,31 +25,25 @@ module A { } //// [ClassAndModuleThatMergeWithStaticVariableAndNonExportedVarThatShareAName.js] -let Point = (() => { - class Point { - constructor(x, y) { - this.x = x; - this.y = y; - } +class Point { + constructor(x, y) { + this.x = x; + this.y = y; } - Point.Origin = { x: 0, y: 0 }; - return Point; -})(); +} +Point.Origin = { x: 0, y: 0 }; (function (Point) { var Origin = ""; // not an error, since not exported })(Point || (Point = {})); var A; (function (A) { - let Point = (() => { - class Point { - constructor(x, y) { - this.x = x; - this.y = y; - } + class Point { + constructor(x, y) { + this.x = x; + this.y = y; } - Point.Origin = { x: 0, y: 0 }; - return Point; - })(); + } + Point.Origin = { x: 0, y: 0 }; A.Point = Point; (function (Point) { var Origin = ""; // not an error since not exported diff --git a/tests/baselines/reference/ClassDeclarationWithInvalidConstOnPropertyDeclaration.js b/tests/baselines/reference/ClassDeclarationWithInvalidConstOnPropertyDeclaration.js index 9816063c9cc4d..77788ce8d6f92 100644 --- a/tests/baselines/reference/ClassDeclarationWithInvalidConstOnPropertyDeclaration.js +++ b/tests/baselines/reference/ClassDeclarationWithInvalidConstOnPropertyDeclaration.js @@ -6,9 +6,6 @@ class AtomicNumbers { } //// [ClassDeclarationWithInvalidConstOnPropertyDeclaration.js] -let AtomicNumbers = (() => { - class AtomicNumbers { - } - AtomicNumbers.H = 1; - return AtomicNumbers; -})(); +class AtomicNumbers { +} +AtomicNumbers.H = 1; diff --git a/tests/baselines/reference/accessorInAmbientContextES5.errors.txt b/tests/baselines/reference/accessorInAmbientContextES5.errors.txt deleted file mode 100644 index c9351f69f7213..0000000000000 --- a/tests/baselines/reference/accessorInAmbientContextES5.errors.txt +++ /dev/null @@ -1,32 +0,0 @@ -accessorInAmbientContextES5.ts(25,14): error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. - - -==== accessorInAmbientContextES5.ts (1 errors) ==== - // Should allow accessor in ambient contexts even when targeting ES5 - - declare class AmbientClass { - accessor prop1: string; - static accessor prop2: number; - private accessor prop3: boolean; - private static accessor prop4: symbol; - } - - declare namespace AmbientNamespace { - class C { - accessor prop: string; - } - } - - // Should also work in .d.ts files (simulated with declare) - declare module "some-module" { - export class ExportedClass { - accessor value: any; - } - } - - // Regular class should still error when targeting ES5 - class RegularClass { - accessor shouldError: string; // Should still error - ~~~~~~~~~~~ -!!! error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. - } \ No newline at end of file diff --git a/tests/baselines/reference/accessorInAmbientContextES5.types b/tests/baselines/reference/accessorInAmbientContextES5.types index eefedf0cf1306..a1519de527550 100644 --- a/tests/baselines/reference/accessorInAmbientContextES5.types +++ b/tests/baselines/reference/accessorInAmbientContextES5.types @@ -49,7 +49,6 @@ declare module "some-module" { accessor value: any; >value : any -> : ^^^ } } diff --git a/tests/baselines/reference/aliasAssignments.js b/tests/baselines/reference/aliasAssignments.js index c0f39f11d4fac..c142e3ab3cfd2 100644 --- a/tests/baselines/reference/aliasAssignments.js +++ b/tests/baselines/reference/aliasAssignments.js @@ -23,7 +23,7 @@ exports.someClass = someClass; //// [aliasAssignments_1.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var moduleA = require("./aliasAssignments_moduleA"); +const moduleA = require("./aliasAssignments_moduleA"); var x = moduleA; x = 1; // Should be error var y = 1; diff --git a/tests/baselines/reference/aliasDoesNotDuplicateSignatures.js b/tests/baselines/reference/aliasDoesNotDuplicateSignatures.js index d07467a88603a..83897aa62f9b6 100644 --- a/tests/baselines/reference/aliasDoesNotDuplicateSignatures.js +++ b/tests/baselines/reference/aliasDoesNotDuplicateSignatures.js @@ -17,7 +17,7 @@ let x2: string = f; //// [user.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var demoModule_1 = require("demoModule"); +const demoModule_1 = require("demoModule"); // Assign an incorrect type here to see the type of 'f'. let x1 = demoNS.f; let x2 = demoModule_1.f; diff --git a/tests/baselines/reference/aliasUsageInAccessorsOfClass.js b/tests/baselines/reference/aliasUsageInAccessorsOfClass.js index ffbe58302fbed..94399a1e62209 100644 --- a/tests/baselines/reference/aliasUsageInAccessorsOfClass.js +++ b/tests/baselines/reference/aliasUsageInAccessorsOfClass.js @@ -38,14 +38,14 @@ exports.Model = Model; "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.VisualizationModel = void 0; -var Backbone = require("./aliasUsage1_backbone"); +const Backbone = require("./aliasUsage1_backbone"); class VisualizationModel extends Backbone.Model { } exports.VisualizationModel = VisualizationModel; //// [aliasUsage1_main.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var moduleA = require("./aliasUsage1_moduleA"); +const moduleA = require("./aliasUsage1_moduleA"); class C2 { get A() { return this.x; diff --git a/tests/baselines/reference/aliasUsageInArray.js b/tests/baselines/reference/aliasUsageInArray.js index 85ed2020f47fd..e6fc432309790 100644 --- a/tests/baselines/reference/aliasUsageInArray.js +++ b/tests/baselines/reference/aliasUsageInArray.js @@ -32,13 +32,13 @@ exports.Model = Model; "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.VisualizationModel = void 0; -var Backbone = require("./aliasUsageInArray_backbone"); +const Backbone = require("./aliasUsageInArray_backbone"); class VisualizationModel extends Backbone.Model { } exports.VisualizationModel = VisualizationModel; //// [aliasUsageInArray_main.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var moduleA = require("./aliasUsageInArray_moduleA"); +const moduleA = require("./aliasUsageInArray_moduleA"); var xs = [moduleA]; var xs2 = [moduleA]; diff --git a/tests/baselines/reference/aliasUsageInFunctionExpression.js b/tests/baselines/reference/aliasUsageInFunctionExpression.js index 09b31135b2ed7..edaee4debcb30 100644 --- a/tests/baselines/reference/aliasUsageInFunctionExpression.js +++ b/tests/baselines/reference/aliasUsageInFunctionExpression.js @@ -31,13 +31,13 @@ exports.Model = Model; "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.VisualizationModel = void 0; -var Backbone = require("./aliasUsageInFunctionExpression_backbone"); +const Backbone = require("./aliasUsageInFunctionExpression_backbone"); class VisualizationModel extends Backbone.Model { } exports.VisualizationModel = VisualizationModel; //// [aliasUsageInFunctionExpression_main.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var moduleA = require("./aliasUsageInFunctionExpression_moduleA"); +const moduleA = require("./aliasUsageInFunctionExpression_moduleA"); var f = (x) => x; f = (x) => moduleA; diff --git a/tests/baselines/reference/aliasUsageInGenericFunction.js b/tests/baselines/reference/aliasUsageInGenericFunction.js index 3a97ef1a33a46..05781b2049764 100644 --- a/tests/baselines/reference/aliasUsageInGenericFunction.js +++ b/tests/baselines/reference/aliasUsageInGenericFunction.js @@ -35,14 +35,14 @@ exports.Model = Model; "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.VisualizationModel = void 0; -var Backbone = require("./aliasUsageInGenericFunction_backbone"); +const Backbone = require("./aliasUsageInGenericFunction_backbone"); class VisualizationModel extends Backbone.Model { } exports.VisualizationModel = VisualizationModel; //// [aliasUsageInGenericFunction_main.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var moduleA = require("./aliasUsageInGenericFunction_moduleA"); +const moduleA = require("./aliasUsageInGenericFunction_moduleA"); function foo(x) { return x; } diff --git a/tests/baselines/reference/aliasUsageInIndexerOfClass.js b/tests/baselines/reference/aliasUsageInIndexerOfClass.js index 9610429be379e..f136ee4d72423 100644 --- a/tests/baselines/reference/aliasUsageInIndexerOfClass.js +++ b/tests/baselines/reference/aliasUsageInIndexerOfClass.js @@ -37,14 +37,14 @@ exports.Model = Model; "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.VisualizationModel = void 0; -var Backbone = require("./aliasUsageInIndexerOfClass_backbone"); +const Backbone = require("./aliasUsageInIndexerOfClass_backbone"); class VisualizationModel extends Backbone.Model { } exports.VisualizationModel = VisualizationModel; //// [aliasUsageInIndexerOfClass_main.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var moduleA = require("./aliasUsageInIndexerOfClass_moduleA"); +const moduleA = require("./aliasUsageInIndexerOfClass_moduleA"); class N { constructor() { this.x = moduleA; diff --git a/tests/baselines/reference/aliasUsageInObjectLiteral.js b/tests/baselines/reference/aliasUsageInObjectLiteral.js index 4bd120c21c8ea..ebee1274603e9 100644 --- a/tests/baselines/reference/aliasUsageInObjectLiteral.js +++ b/tests/baselines/reference/aliasUsageInObjectLiteral.js @@ -32,14 +32,14 @@ exports.Model = Model; "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.VisualizationModel = void 0; -var Backbone = require("./aliasUsageInObjectLiteral_backbone"); +const Backbone = require("./aliasUsageInObjectLiteral_backbone"); class VisualizationModel extends Backbone.Model { } exports.VisualizationModel = VisualizationModel; //// [aliasUsageInObjectLiteral_main.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var moduleA = require("./aliasUsageInObjectLiteral_moduleA"); +const moduleA = require("./aliasUsageInObjectLiteral_moduleA"); var a = { x: moduleA }; var b = { x: moduleA }; var c = { y: { z: moduleA } }; diff --git a/tests/baselines/reference/aliasUsageInOrExpression.js b/tests/baselines/reference/aliasUsageInOrExpression.js index ce008222292d9..2e156c943c33e 100644 --- a/tests/baselines/reference/aliasUsageInOrExpression.js +++ b/tests/baselines/reference/aliasUsageInOrExpression.js @@ -35,14 +35,14 @@ exports.Model = Model; "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.VisualizationModel = void 0; -var Backbone = require("./aliasUsageInOrExpression_backbone"); +const Backbone = require("./aliasUsageInOrExpression_backbone"); class VisualizationModel extends Backbone.Model { } exports.VisualizationModel = VisualizationModel; //// [aliasUsageInOrExpression_main.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var moduleA = require("./aliasUsageInOrExpression_moduleA"); +const moduleA = require("./aliasUsageInOrExpression_moduleA"); var i; var d1 = i || moduleA; var d2 = i || moduleA; diff --git a/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.js b/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.js index f7d0bb87857a8..2cf2f0137bbb9 100644 --- a/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.js +++ b/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.js @@ -35,14 +35,14 @@ exports.Model = Model; "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.VisualizationModel = void 0; -var Backbone = require("./aliasUsageInTypeArgumentOfExtendsClause_backbone"); +const Backbone = require("./aliasUsageInTypeArgumentOfExtendsClause_backbone"); class VisualizationModel extends Backbone.Model { } exports.VisualizationModel = VisualizationModel; //// [aliasUsageInTypeArgumentOfExtendsClause_main.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var moduleA = require("./aliasUsageInTypeArgumentOfExtendsClause_moduleA"); +const moduleA = require("./aliasUsageInTypeArgumentOfExtendsClause_moduleA"); class C { } class D extends C { diff --git a/tests/baselines/reference/aliasUsageInVarAssignment.js b/tests/baselines/reference/aliasUsageInVarAssignment.js index 403550ae00d7f..a6ca39be48e68 100644 --- a/tests/baselines/reference/aliasUsageInVarAssignment.js +++ b/tests/baselines/reference/aliasUsageInVarAssignment.js @@ -31,7 +31,7 @@ exports.Model = Model; "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.VisualizationModel = void 0; -var Backbone = require("./aliasUsageInVarAssignment_backbone"); +const Backbone = require("./aliasUsageInVarAssignment_backbone"); class VisualizationModel extends Backbone.Model { } exports.VisualizationModel = VisualizationModel; diff --git a/tests/baselines/reference/aliasUsedAsNameValue.js b/tests/baselines/reference/aliasUsedAsNameValue.js index 4f40c1a91a058..f8f3fdffa05f7 100644 --- a/tests/baselines/reference/aliasUsedAsNameValue.js +++ b/tests/baselines/reference/aliasUsedAsNameValue.js @@ -33,8 +33,8 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.a = void 0; /// /// -var mod = require("./aliasUsedAsNameValue_0"); -var b = require("./aliasUsedAsNameValue_1"); +const mod = require("./aliasUsedAsNameValue_0"); +const b = require("./aliasUsedAsNameValue_1"); var a = function () { //var x = mod.id; // TODO needed hack that mod is loaded b.b(mod); diff --git a/tests/baselines/reference/allowImportClausesToMergeWithTypes.js b/tests/baselines/reference/allowImportClausesToMergeWithTypes.js index a51f4c1d100f7..e86a028cd1feb 100644 --- a/tests/baselines/reference/allowImportClausesToMergeWithTypes.js +++ b/tests/baselines/reference/allowImportClausesToMergeWithTypes.js @@ -40,7 +40,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; -var b_1 = __importDefault(require("./b")); +const b_1 = __importDefault(require("./b")); exports.default = b_1.default; const x = { x: "" }; b_1.default; @@ -50,9 +50,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -var a_1 = __importDefault(require("./a")); +const a_1 = __importDefault(require("./a")); const x = { x: "" }; a_1.default; -var b_1 = __importDefault(require("./b")); +const b_1 = __importDefault(require("./b")); b_1.default; const y = x; diff --git a/tests/baselines/reference/allowJscheckJsTypeParameterNoCrash.js b/tests/baselines/reference/allowJscheckJsTypeParameterNoCrash.js index 885e3144a060e..88e7f5f65f150 100644 --- a/tests/baselines/reference/allowJscheckJsTypeParameterNoCrash.js +++ b/tests/baselines/reference/allowJscheckJsTypeParameterNoCrash.js @@ -28,7 +28,7 @@ exports.vextend = extend; "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.a = void 0; -var func_1 = require("./func"); +const func_1 = require("./func"); // hover on vextend exports.a = (0, func_1.vextend)({ watch: { diff --git a/tests/baselines/reference/allowSyntheticDefaultImports1.js b/tests/baselines/reference/allowSyntheticDefaultImports1.js index 0b266c9009022..eecb8bb251495 100644 --- a/tests/baselines/reference/allowSyntheticDefaultImports1.js +++ b/tests/baselines/reference/allowSyntheticDefaultImports1.js @@ -17,5 +17,5 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.x = void 0; -var b_1 = __importDefault(require("./b")); +const b_1 = __importDefault(require("./b")); exports.x = new b_1.default.Foo(); diff --git a/tests/baselines/reference/allowSyntheticDefaultImports10.js b/tests/baselines/reference/allowSyntheticDefaultImports10.js index 13ee18518c4ec..63bfe93ce78f9 100644 --- a/tests/baselines/reference/allowSyntheticDefaultImports10.js +++ b/tests/baselines/reference/allowSyntheticDefaultImports10.js @@ -13,6 +13,6 @@ Foo.default.default.foo(); //// [a.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var Foo = require("./b"); +const Foo = require("./b"); Foo.default.bar(); Foo.default.default.foo(); diff --git a/tests/baselines/reference/allowSyntheticDefaultImports4.js b/tests/baselines/reference/allowSyntheticDefaultImports4.js index ecd5acabd4757..a6ec766c41600 100644 --- a/tests/baselines/reference/allowSyntheticDefaultImports4.js +++ b/tests/baselines/reference/allowSyntheticDefaultImports4.js @@ -18,5 +18,5 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); exports.x = void 0; -var b_1 = __importDefault(require("./b")); +const b_1 = __importDefault(require("./b")); exports.x = new b_1.default(); diff --git a/tests/baselines/reference/allowSyntheticDefaultImports9.js b/tests/baselines/reference/allowSyntheticDefaultImports9.js index 5206974ee1db0..cc99033f91689 100644 --- a/tests/baselines/reference/allowSyntheticDefaultImports9.js +++ b/tests/baselines/reference/allowSyntheticDefaultImports9.js @@ -16,6 +16,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -var b_1 = __importDefault(require("./b")); +const b_1 = __importDefault(require("./b")); b_1.default.bar(); b_1.default.foo(); diff --git a/tests/baselines/reference/allowSyntheticDefaultImportsCanPaintCrossModuleDeclaration.js b/tests/baselines/reference/allowSyntheticDefaultImportsCanPaintCrossModuleDeclaration.js index 783e2c08e08a6..2a232b42e1cba 100644 --- a/tests/baselines/reference/allowSyntheticDefaultImportsCanPaintCrossModuleDeclaration.js +++ b/tests/baselines/reference/allowSyntheticDefaultImportsCanPaintCrossModuleDeclaration.js @@ -22,7 +22,7 @@ Object.defineProperty(exports, "__esModule", { value: true }); "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.A = void 0; -var file1_1 = require("./file1"); +const file1_1 = require("./file1"); exports.A = (0, file1_1.styled)(); diff --git a/tests/baselines/reference/ambientDeclarationsExternal.js b/tests/baselines/reference/ambientDeclarationsExternal.js index 6a4569d3dfcef..872ca9f1f8041 100644 --- a/tests/baselines/reference/ambientDeclarationsExternal.js +++ b/tests/baselines/reference/ambientDeclarationsExternal.js @@ -29,6 +29,6 @@ var n: number; "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); // Ambient external module members are always exported with or without export keyword when module lacks export assignment -var imp3 = require("equ2"); +const imp3 = require("equ2"); var n = imp3.x; var n; diff --git a/tests/baselines/reference/ambientDeclarationsPatterns.js b/tests/baselines/reference/ambientDeclarationsPatterns.js index 60a00583a8ba9..3344d96b11c20 100644 --- a/tests/baselines/reference/ambientDeclarationsPatterns.js +++ b/tests/baselines/reference/ambientDeclarationsPatterns.js @@ -39,10 +39,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); /// -var foobarbaz_1 = require("foobarbaz"); +const foobarbaz_1 = require("foobarbaz"); (0, foobarbaz_1.foo)(foobarbaz_1.baz); -var foosball_1 = require("foosball"); +const foosball_1 = require("foosball"); (0, foobarbaz_1.foo)(foosball_1.foos); // Works with relative file name -var file_text_1 = __importDefault(require("./file!text")); +const file_text_1 = __importDefault(require("./file!text")); (0, foobarbaz_1.foo)(file_text_1.default); diff --git a/tests/baselines/reference/ambientExternalModuleInAnotherExternalModule.js b/tests/baselines/reference/ambientExternalModuleInAnotherExternalModule.js index e88bb7bec8ed1..44a551ba0f300 100644 --- a/tests/baselines/reference/ambientExternalModuleInAnotherExternalModule.js +++ b/tests/baselines/reference/ambientExternalModuleInAnotherExternalModule.js @@ -17,6 +17,6 @@ var x = ext; class D { } // Cannot resolve this ext module reference -var ext = require("ext"); +const ext = require("ext"); var x = ext; module.exports = D; diff --git a/tests/baselines/reference/ambientShorthand.js b/tests/baselines/reference/ambientShorthand.js index f2ceb3f85ab1a..e0fdb6a7dcbfb 100644 --- a/tests/baselines/reference/ambientShorthand.js +++ b/tests/baselines/reference/ambientShorthand.js @@ -50,7 +50,7 @@ var __importStar = (this && this.__importStar) || (function () { })(); Object.defineProperty(exports, "__esModule", { value: true }); /// -var jquery_1 = __importStar(require("jquery")); -var baz = __importStar(require("fs")); -var boom = require("jquery"); +const jquery_1 = __importStar(require("jquery")); +const baz = __importStar(require("fs")); +const boom = require("jquery"); (0, jquery_1.default)(jquery_1.bar, baz, boom); diff --git a/tests/baselines/reference/ambientShorthand_reExport.js b/tests/baselines/reference/ambientShorthand_reExport.js index fad16379ad344..34cb38935efce 100644 --- a/tests/baselines/reference/ambientShorthand_reExport.js +++ b/tests/baselines/reference/ambientShorthand_reExport.js @@ -76,7 +76,7 @@ var __importStar = (this && this.__importStar) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var reExportX_1 = require("./reExportX"); -var $ = __importStar(require("./reExportAll")); +const reExportX_1 = require("./reExportX"); +const $ = __importStar(require("./reExportAll")); // '$' is not callable, it is an object. (0, reExportX_1.x)($); diff --git a/tests/baselines/reference/amdDependencyComment1.js b/tests/baselines/reference/amdDependencyComment1.js index 86a25964b7a93..e12e84748597b 100644 --- a/tests/baselines/reference/amdDependencyComment1.js +++ b/tests/baselines/reference/amdDependencyComment1.js @@ -10,5 +10,5 @@ m1.f(); "use strict"; /// Object.defineProperty(exports, "__esModule", { value: true }); -var m1 = require("m2"); +const m1 = require("m2"); m1.f(); diff --git a/tests/baselines/reference/amdDependencyCommentName1.js b/tests/baselines/reference/amdDependencyCommentName1.js index 8acd9de790c6c..7538bd86ee39e 100644 --- a/tests/baselines/reference/amdDependencyCommentName1.js +++ b/tests/baselines/reference/amdDependencyCommentName1.js @@ -10,5 +10,5 @@ m1.f(); "use strict"; /// Object.defineProperty(exports, "__esModule", { value: true }); -var m1 = require("m2"); +const m1 = require("m2"); m1.f(); diff --git a/tests/baselines/reference/amdImportNotAsPrimaryExpression.js b/tests/baselines/reference/amdImportNotAsPrimaryExpression.js index 5ee7e3650e44d..a52f61deba612 100644 --- a/tests/baselines/reference/amdImportNotAsPrimaryExpression.js +++ b/tests/baselines/reference/amdImportNotAsPrimaryExpression.js @@ -36,16 +36,13 @@ define(["require", "exports"], function (require, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.E1 = exports.C1 = void 0; - let C1 = (() => { - class C1 { - constructor() { - this.m1 = 42; - } + class C1 { + constructor() { + this.m1 = 42; } - C1.s1 = true; - return C1; - })(); + } exports.C1 = C1; + C1.s1 = true; var E1; (function (E1) { E1[E1["A"] = 0] = "A"; diff --git a/tests/baselines/reference/anonClassDeclarationEmitIsAnon.js b/tests/baselines/reference/anonClassDeclarationEmitIsAnon.js index 7d1f528a7e4a8..422051bc7ebe0 100644 --- a/tests/baselines/reference/anonClassDeclarationEmitIsAnon.js +++ b/tests/baselines/reference/anonClassDeclarationEmitIsAnon.js @@ -58,7 +58,7 @@ function Timestamped(Base) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.TimestampedUser = exports.User = void 0; -var wrapClass_1 = require("./wrapClass"); +const wrapClass_1 = require("./wrapClass"); exports.default = (0, wrapClass_1.wrapClass)(0); // Simple class class User { diff --git a/tests/baselines/reference/anyAndUnknownHaveFalsyComponents.js b/tests/baselines/reference/anyAndUnknownHaveFalsyComponents.js index e793b344ad0bc..57b210842881a 100644 --- a/tests/baselines/reference/anyAndUnknownHaveFalsyComponents.js +++ b/tests/baselines/reference/anyAndUnknownHaveFalsyComponents.js @@ -31,26 +31,15 @@ function foo2() { //// [anyAndUnknownHaveFalsyComponents.js] -var __assign = (this && this.__assign) || function () { - __assign = Object.assign || function(t) { - for (var s, i = 1, n = arguments.length; i < n; i++) { - s = arguments[i]; - for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) - t[p] = s[p]; - } - return t; - }; - return __assign.apply(this, arguments); -}; const y1 = x1 && 3; function foo1() { - return __assign({ display: "block" }, (isTreeHeader1 && { + return Object.assign({ display: "block" }, (isTreeHeader1 && { display: "flex", })); } const y2 = x2 && 3; function foo2() { - return __assign({ display: "block" }, (isTreeHeader1 && { + return Object.assign({ display: "block" }, (isTreeHeader1 && { display: "flex", })); } diff --git a/tests/baselines/reference/arraySpreadImportHelpers.errors.txt b/tests/baselines/reference/arraySpreadImportHelpers.errors.txt deleted file mode 100644 index 98b0b1cae757f..0000000000000 --- a/tests/baselines/reference/arraySpreadImportHelpers.errors.txt +++ /dev/null @@ -1,16 +0,0 @@ -main.ts(3,15): error TS2807: This syntax requires an imported helper named '__spreadArray' with 3 parameters, which is not compatible with the one in 'tslib'. Consider upgrading your version of 'tslib'. - - -==== main.ts (1 errors) ==== - export {}; - const k = [1, , 2]; - const o = [3, ...k, 4]; - ~~~~ -!!! error TS2807: This syntax requires an imported helper named '__spreadArray' with 3 parameters, which is not compatible with the one in 'tslib'. Consider upgrading your version of 'tslib'. - -==== tslib.d.ts (0 errors) ==== - // this is a pre-TS4.4 versions of emit helper, which always forced array packing - declare module "tslib" { - function __spreadArray(to: any[], from: any[]): any[]; - } - \ No newline at end of file diff --git a/tests/baselines/reference/asOperator4.js b/tests/baselines/reference/asOperator4.js index 6d8b39830440b..9a1b08235cb5b 100644 --- a/tests/baselines/reference/asOperator4.js +++ b/tests/baselines/reference/asOperator4.js @@ -19,7 +19,7 @@ function foo() { } //// [bar.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var foo_1 = require("./foo"); +const foo_1 = require("./foo"); // These should emit identically foo_1.foo; foo_1.foo; diff --git a/tests/baselines/reference/assertionFunctionWildcardImport1.js b/tests/baselines/reference/assertionFunctionWildcardImport1.js index 7061098dba010..11f0c6c93f61f 100644 --- a/tests/baselines/reference/assertionFunctionWildcardImport1.js +++ b/tests/baselines/reference/assertionFunctionWildcardImport1.js @@ -68,7 +68,7 @@ var __importStar = (this && this.__importStar) || (function () { })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.Debug = void 0; -var Debug = __importStar(require("../debug")); +const Debug = __importStar(require("../debug")); exports.Debug = Debug; //// [foo.js] "use strict"; @@ -106,8 +106,8 @@ var __importStar = (this && this.__importStar) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var ts = __importStar(require("./_namespaces/ts")); -var ts_1 = require("./_namespaces/ts"); +const ts = __importStar(require("./_namespaces/ts")); +const ts_1 = require("./_namespaces/ts"); ts.Debug.assert(true); ts_1.Debug.assert(true); //// [ts.js] @@ -164,7 +164,7 @@ var __importStar = (this && this.__importStar) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var ts = __importStar(require("./_namespaces/ts")); -var ts_1 = require("./_namespaces/ts"); +const ts = __importStar(require("./_namespaces/ts")); +const ts_1 = require("./_namespaces/ts"); ts.Debug.assert(true); ts_1.Debug.assert(true); diff --git a/tests/baselines/reference/assertionFunctionWildcardImport2.js b/tests/baselines/reference/assertionFunctionWildcardImport2.js index 21014a3b2ce1f..25edf1e2fe676 100644 --- a/tests/baselines/reference/assertionFunctionWildcardImport2.js +++ b/tests/baselines/reference/assertionFunctionWildcardImport2.js @@ -65,7 +65,7 @@ var __importStar = (this && this.__importStar) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var asserts = __importStar(require("./asserts")); +const asserts = __importStar(require("./asserts")); function test(obj) { asserts.isNonNullable(obj); obj.trim(); diff --git a/tests/baselines/reference/assignmentToVoidZero2.js b/tests/baselines/reference/assignmentToVoidZero2.js index 530097504ea48..3d12268850d27 100644 --- a/tests/baselines/reference/assignmentToVoidZero2.js +++ b/tests/baselines/reference/assignmentToVoidZero2.js @@ -36,7 +36,7 @@ c.p + c.q; //// [importer.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var assignmentToVoidZero2_1 = require("./assignmentToVoidZero2"); +const assignmentToVoidZero2_1 = require("./assignmentToVoidZero2"); assignmentToVoidZero2_1.j + assignmentToVoidZero2_1.k; diff --git a/tests/baselines/reference/asyncAliasReturnType_es5.errors.txt b/tests/baselines/reference/asyncAliasReturnType_es5.errors.txt deleted file mode 100644 index b0ad4b8920dbc..0000000000000 --- a/tests/baselines/reference/asyncAliasReturnType_es5.errors.txt +++ /dev/null @@ -1,10 +0,0 @@ -asyncAliasReturnType_es5.ts(3,21): error TS1055: Type 'PromiseAlias' is not a valid async function return type in ES5 because it does not refer to a Promise-compatible constructor value. - - -==== asyncAliasReturnType_es5.ts (1 errors) ==== - type PromiseAlias = Promise; - - async function f(): PromiseAlias { - ~~~~~~~~~~~~~~~~~~ -!!! error TS1055: Type 'PromiseAlias' is not a valid async function return type in ES5 because it does not refer to a Promise-compatible constructor value. - } \ No newline at end of file diff --git a/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es5.errors.txt b/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es5.errors.txt deleted file mode 100644 index db54dddc46804..0000000000000 --- a/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es5.errors.txt +++ /dev/null @@ -1,13 +0,0 @@ -asyncArrowFunctionCapturesArguments_es5.ts(4,52): error TS2496: The 'arguments' object cannot be referenced in an arrow function in ES5. Consider using a standard function expression. - - -==== asyncArrowFunctionCapturesArguments_es5.ts (1 errors) ==== - class C { - method() { - function other() {} - var fn = async () => await other.apply(this, arguments); - ~~~~~~~~~ -!!! error TS2496: The 'arguments' object cannot be referenced in an arrow function in ES5. Consider using a standard function expression. - } - } - \ No newline at end of file diff --git a/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es5.types b/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es5.types index be3cc5d3315cb..28155cec6f6c8 100644 --- a/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es5.types +++ b/tests/baselines/reference/asyncArrowFunctionCapturesArguments_es5.types @@ -19,9 +19,7 @@ class C { >async () => await other.apply(this, arguments) : () => Promise > : ^^^^^^^^^^^^^^^^^^ >await other.apply(this, arguments) : any -> : ^^^ >other.apply(this, arguments) : any -> : ^^^ >other.apply : (this: Function, thisArg: any, argArray?: any) => any > : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^ >other : () => void diff --git a/tests/baselines/reference/asyncArrowInClassES5.js b/tests/baselines/reference/asyncArrowInClassES5.js index d1592879c8919..620d202e6ab00 100644 --- a/tests/baselines/reference/asyncArrowInClassES5.js +++ b/tests/baselines/reference/asyncArrowInClassES5.js @@ -12,11 +12,8 @@ class Test { //// [asyncArrowInClassES5.js] // https://github.com/Microsoft/TypeScript/issues/16924 // Should capture `this` -let Test = (() => { - var _a; - class Test { - } - _a = Test; - Test.member = (x) => __awaiter(_a, void 0, void 0, function* () { }); - return Test; -})(); +var _a; +class Test { +} +_a = Test; +Test.member = (x) => __awaiter(_a, void 0, void 0, function* () { }); diff --git a/tests/baselines/reference/asyncAwaitIsolatedModules_es5.js b/tests/baselines/reference/asyncAwaitIsolatedModules_es5.js index de4f8e28822e0..6b76980684a60 100644 --- a/tests/baselines/reference/asyncAwaitIsolatedModules_es5.js +++ b/tests/baselines/reference/asyncAwaitIsolatedModules_es5.js @@ -53,7 +53,6 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }); }; Object.defineProperty(exports, "__esModule", { value: true }); -var missing_1 = require("missing"); function f0() { return __awaiter(this, void 0, void 0, function* () { }); } @@ -61,7 +60,7 @@ function f1() { return __awaiter(this, void 0, void 0, function* () { }); } function f3() { - return __awaiter(this, void 0, missing_1.MyPromise, function* () { }); + return __awaiter(this, void 0, void 0, function* () { }); } let f4 = function () { return __awaiter(this, void 0, void 0, function* () { }); @@ -70,15 +69,15 @@ let f5 = function () { return __awaiter(this, void 0, void 0, function* () { }); }; let f6 = function () { - return __awaiter(this, void 0, missing_1.MyPromise, function* () { }); + return __awaiter(this, void 0, void 0, function* () { }); }; let f7 = () => __awaiter(void 0, void 0, void 0, function* () { }); let f8 = () => __awaiter(void 0, void 0, void 0, function* () { }); -let f9 = () => __awaiter(void 0, void 0, missing_1.MyPromise, function* () { }); +let f9 = () => __awaiter(void 0, void 0, void 0, function* () { }); let f10 = () => __awaiter(void 0, void 0, void 0, function* () { return p; }); let f11 = () => __awaiter(void 0, void 0, void 0, function* () { return mp; }); let f12 = () => __awaiter(void 0, void 0, void 0, function* () { return mp; }); -let f13 = () => __awaiter(void 0, void 0, missing_1.MyPromise, function* () { return p; }); +let f13 = () => __awaiter(void 0, void 0, void 0, function* () { return p; }); let o = { m1() { return __awaiter(this, void 0, void 0, function* () { }); @@ -87,7 +86,7 @@ let o = { return __awaiter(this, void 0, void 0, function* () { }); }, m3() { - return __awaiter(this, void 0, missing_1.MyPromise, function* () { }); + return __awaiter(this, void 0, void 0, function* () { }); } }; class C { @@ -98,7 +97,7 @@ class C { return __awaiter(this, void 0, void 0, function* () { }); } m3() { - return __awaiter(this, void 0, missing_1.MyPromise, function* () { }); + return __awaiter(this, void 0, void 0, function* () { }); } static m4() { return __awaiter(this, void 0, void 0, function* () { }); @@ -107,7 +106,7 @@ class C { return __awaiter(this, void 0, void 0, function* () { }); } static m6() { - return __awaiter(this, void 0, missing_1.MyPromise, function* () { }); + return __awaiter(this, void 0, void 0, function* () { }); } } var M; diff --git a/tests/baselines/reference/asyncAwaitNestedClasses_es5.js b/tests/baselines/reference/asyncAwaitNestedClasses_es5.js index c3d534b10cb6f..52e101f25d4f4 100644 --- a/tests/baselines/reference/asyncAwaitNestedClasses_es5.js +++ b/tests/baselines/reference/asyncAwaitNestedClasses_es5.js @@ -18,24 +18,21 @@ class A { A.B.C.func(); //// [asyncAwaitNestedClasses_es5.js] +var _a; // https://github.com/Microsoft/TypeScript/issues/20744 -let A = (() => { - var _a; - class A { - } - A.B = (_a = class B { - static func2() { - return new Promise((resolve) => { resolve(null); }); - } - }, - _a.C = class C { - static func() { - return __awaiter(this, void 0, void 0, function* () { - yield _a.func2(); - }); - } - }, - _a); - return A; -})(); +class A { +} +A.B = (_a = class B { + static func2() { + return new Promise((resolve) => { resolve(null); }); + } + }, + _a.C = class C { + static func() { + return __awaiter(this, void 0, void 0, function* () { + yield _a.func2(); + }); + } + }, + _a); A.B.C.func(); diff --git a/tests/baselines/reference/asyncAwait_es5.js b/tests/baselines/reference/asyncAwait_es5.js index 2249e7bb31522..0ba7f4f57ec01 100644 --- a/tests/baselines/reference/asyncAwait_es5.js +++ b/tests/baselines/reference/asyncAwait_es5.js @@ -65,7 +65,7 @@ function f1() { return __awaiter(this, void 0, void 0, function* () { }); } function f3() { - return __awaiter(this, void 0, MyPromise, function* () { }); + return __awaiter(this, void 0, void 0, function* () { }); } let f4 = function () { return __awaiter(this, void 0, void 0, function* () { }); @@ -74,15 +74,15 @@ let f5 = function () { return __awaiter(this, void 0, void 0, function* () { }); }; let f6 = function () { - return __awaiter(this, void 0, MyPromise, function* () { }); + return __awaiter(this, void 0, void 0, function* () { }); }; let f7 = () => __awaiter(this, void 0, void 0, function* () { }); let f8 = () => __awaiter(this, void 0, void 0, function* () { }); -let f9 = () => __awaiter(this, void 0, MyPromise, function* () { }); +let f9 = () => __awaiter(this, void 0, void 0, function* () { }); let f10 = () => __awaiter(this, void 0, void 0, function* () { return p; }); let f11 = () => __awaiter(this, void 0, void 0, function* () { return mp; }); let f12 = () => __awaiter(this, void 0, void 0, function* () { return mp; }); -let f13 = () => __awaiter(this, void 0, MyPromise, function* () { return p; }); +let f13 = () => __awaiter(this, void 0, void 0, function* () { return p; }); let o = { m1() { return __awaiter(this, void 0, void 0, function* () { }); @@ -91,7 +91,7 @@ let o = { return __awaiter(this, void 0, void 0, function* () { }); }, m3() { - return __awaiter(this, void 0, MyPromise, function* () { }); + return __awaiter(this, void 0, void 0, function* () { }); } }; class C { @@ -102,7 +102,7 @@ class C { return __awaiter(this, void 0, void 0, function* () { }); } m3() { - return __awaiter(this, void 0, MyPromise, function* () { }); + return __awaiter(this, void 0, void 0, function* () { }); } static m4() { return __awaiter(this, void 0, void 0, function* () { }); @@ -111,7 +111,7 @@ class C { return __awaiter(this, void 0, void 0, function* () { }); } static m6() { - return __awaiter(this, void 0, MyPromise, function* () { }); + return __awaiter(this, void 0, void 0, function* () { }); } } var M; diff --git a/tests/baselines/reference/asyncFunctionDeclaration15_es5.errors.txt b/tests/baselines/reference/asyncFunctionDeclaration15_es5.errors.txt index fb4cdc909c6bc..f8f2d10feec68 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration15_es5.errors.txt +++ b/tests/baselines/reference/asyncFunctionDeclaration15_es5.errors.txt @@ -1,13 +1,10 @@ -asyncFunctionDeclaration15_es5.ts(6,23): error TS1055: Type '{}' is not a valid async function return type in ES5 because it does not refer to a Promise-compatible constructor value. +asyncFunctionDeclaration15_es5.ts(6,23): error TS1064: The return type of an async function or method must be the global Promise type. Did you mean to write 'Promise<{}>'? asyncFunctionDeclaration15_es5.ts(6,23): error TS2355: A function whose declared type is neither 'undefined', 'void', nor 'any' must return a value. -asyncFunctionDeclaration15_es5.ts(7,23): error TS1055: Type 'any' is not a valid async function return type in ES5 because it does not refer to a Promise-compatible constructor value. -asyncFunctionDeclaration15_es5.ts(8,23): error TS1055: Type 'number' is not a valid async function return type in ES5 because it does not refer to a Promise-compatible constructor value. +asyncFunctionDeclaration15_es5.ts(7,23): error TS1064: The return type of an async function or method must be the global Promise type. Did you mean to write 'Promise'? +asyncFunctionDeclaration15_es5.ts(8,23): error TS1064: The return type of an async function or method must be the global Promise type. Did you mean to write 'Promise'? asyncFunctionDeclaration15_es5.ts(8,23): error TS2355: A function whose declared type is neither 'undefined', 'void', nor 'any' must return a value. -asyncFunctionDeclaration15_es5.ts(9,23): error TS1055: Type 'PromiseLike' is not a valid async function return type in ES5 because it does not refer to a Promise-compatible constructor value. -asyncFunctionDeclaration15_es5.ts(10,23): error TS1055: Type 'typeof Thenable' is not a valid async function return type in ES5 because it does not refer to a Promise-compatible constructor value. - Construct signature return types 'Thenable' and 'PromiseLike' are incompatible. - The types returned by 'then(...)' are incompatible between these types. - Type 'void' is not assignable to type 'PromiseLike'. +asyncFunctionDeclaration15_es5.ts(9,23): error TS1064: The return type of an async function or method must be the global Promise type. Did you mean to write 'Promise'? +asyncFunctionDeclaration15_es5.ts(10,23): error TS1064: The return type of an async function or method must be the global Promise type. Did you mean to write 'Promise'? asyncFunctionDeclaration15_es5.ts(17,16): error TS1058: The return type of an async function must either be a valid promise or must not contain a callable 'then' member. asyncFunctionDeclaration15_es5.ts(23,25): error TS1320: Type of 'await' operand must either be a valid promise or must not contain a callable 'then' member. @@ -20,26 +17,23 @@ asyncFunctionDeclaration15_es5.ts(23,25): error TS1320: Type of 'await' operand async function fn1() { } // valid: Promise async function fn2(): { } { } // error ~~~ -!!! error TS1055: Type '{}' is not a valid async function return type in ES5 because it does not refer to a Promise-compatible constructor value. +!!! error TS1064: The return type of an async function or method must be the global Promise type. Did you mean to write 'Promise<{}>'? ~~~ !!! error TS2355: A function whose declared type is neither 'undefined', 'void', nor 'any' must return a value. async function fn3(): any { } // error ~~~ -!!! error TS1055: Type 'any' is not a valid async function return type in ES5 because it does not refer to a Promise-compatible constructor value. +!!! error TS1064: The return type of an async function or method must be the global Promise type. Did you mean to write 'Promise'? async function fn4(): number { } // error ~~~~~~ -!!! error TS1055: Type 'number' is not a valid async function return type in ES5 because it does not refer to a Promise-compatible constructor value. +!!! error TS1064: The return type of an async function or method must be the global Promise type. Did you mean to write 'Promise'? ~~~~~~ !!! error TS2355: A function whose declared type is neither 'undefined', 'void', nor 'any' must return a value. async function fn5(): PromiseLike { } // error ~~~~~~~~~~~~~~~~~ -!!! error TS1055: Type 'PromiseLike' is not a valid async function return type in ES5 because it does not refer to a Promise-compatible constructor value. +!!! error TS1064: The return type of an async function or method must be the global Promise type. Did you mean to write 'Promise'? async function fn6(): Thenable { } // error ~~~~~~~~ -!!! error TS1055: Type 'typeof Thenable' is not a valid async function return type in ES5 because it does not refer to a Promise-compatible constructor value. -!!! error TS1055: Construct signature return types 'Thenable' and 'PromiseLike' are incompatible. -!!! error TS1055: The types returned by 'then(...)' are incompatible between these types. -!!! error TS1055: Type 'void' is not assignable to type 'PromiseLike'. +!!! error TS1064: The return type of an async function or method must be the global Promise type. Did you mean to write 'Promise'? async function fn7() { return; } // valid: Promise async function fn8() { return 1; } // valid: Promise async function fn9() { return null; } // valid: Promise diff --git a/tests/baselines/reference/asyncFunctionDeclaration15_es5.js b/tests/baselines/reference/asyncFunctionDeclaration15_es5.js index 189aa917dd19d..9a5737d1524b0 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration15_es5.js +++ b/tests/baselines/reference/asyncFunctionDeclaration15_es5.js @@ -43,7 +43,7 @@ function fn5() { return __awaiter(this, void 0, void 0, function* () { }); } // error function fn6() { - return __awaiter(this, void 0, Thenable, function* () { }); + return __awaiter(this, void 0, void 0, function* () { }); } // error function fn7() { return __awaiter(this, void 0, void 0, function* () { return; }); diff --git a/tests/baselines/reference/asyncFunctionDeclaration16_es5.errors.txt b/tests/baselines/reference/asyncFunctionDeclaration16_es5.errors.txt index f6f88f047eb49..1ab6e50c0837c 100644 --- a/tests/baselines/reference/asyncFunctionDeclaration16_es5.errors.txt +++ b/tests/baselines/reference/asyncFunctionDeclaration16_es5.errors.txt @@ -1,10 +1,6 @@ -/a.js(21,14): error TS1055: Type 'string' is not a valid async function return type in ES5 because it does not refer to a Promise-compatible constructor value. +/a.js(21,14): error TS1064: The return type of an async function or method must be the global Promise type. Did you mean to write 'Promise'? /a.js(27,12): error TS1065: The return type of an async function or method must be the global Promise type. /a.js(45,12): error TS1065: The return type of an async function or method must be the global Promise type. - Type 'typeof Thenable' is not a valid async function return type in ES5 because it does not refer to a Promise-compatible constructor value. - Construct signature return types 'Thenable' and 'PromiseLike' are incompatible. - The types returned by 'then(...)' are incompatible between these types. - Type 'void' is not assignable to type 'PromiseLike'. ==== /types.d.ts (0 errors) ==== @@ -33,7 +29,7 @@ * @param {string} str * @returns {string} ~~~~~~ -!!! error TS1055: Type 'string' is not a valid async function return type in ES5 because it does not refer to a Promise-compatible constructor value. +!!! error TS1064: The return type of an async function or method must be the global Promise type. Did you mean to write 'Promise'? */ const f1 = async str => { return str; @@ -42,7 +38,7 @@ /** @type {T1} */ ~~ !!! error TS1065: The return type of an async function or method must be the global Promise type. -!!! related TS1055 /a.js:4:14: Type 'string' is not a valid async function return type in ES5 because it does not refer to a Promise-compatible constructor value. +!!! related TS1064 /a.js:4:14: The return type of an async function or method must be the global Promise type. Did you mean to write 'Promise'? const f2 = async str => { return str; } @@ -63,10 +59,7 @@ /** @type {T3} */ ~~ !!! error TS1065: The return type of an async function or method must be the global Promise type. -!!! error TS1065: Type 'typeof Thenable' is not a valid async function return type in ES5 because it does not refer to a Promise-compatible constructor value. -!!! error TS1065: Construct signature return types 'Thenable' and 'PromiseLike' are incompatible. -!!! error TS1065: The types returned by 'then(...)' are incompatible between these types. -!!! error TS1065: Type 'void' is not assignable to type 'PromiseLike'. +!!! related TS1064 /a.js:16:14: The return type of an async function or method must be the global Promise type. Did you mean to write 'Promise'? const f5 = async str => { return str; } diff --git a/tests/baselines/reference/asyncFunctionDeclarationCapturesArguments_es5.errors.txt b/tests/baselines/reference/asyncFunctionDeclarationCapturesArguments_es5.errors.txt deleted file mode 100644 index e6c805127cbcd..0000000000000 --- a/tests/baselines/reference/asyncFunctionDeclarationCapturesArguments_es5.errors.txt +++ /dev/null @@ -1,15 +0,0 @@ -asyncFunctionDeclarationCapturesArguments_es5.ts(5,36): error TS2522: The 'arguments' object cannot be referenced in an async function or method in ES5. Consider using a standard function or method. - - -==== asyncFunctionDeclarationCapturesArguments_es5.ts (1 errors) ==== - class C { - method() { - function other() {} - async function fn () { - await other.apply(this, arguments); - ~~~~~~~~~ -!!! error TS2522: The 'arguments' object cannot be referenced in an async function or method in ES5. Consider using a standard function or method. - } - } - } - \ No newline at end of file diff --git a/tests/baselines/reference/asyncFunctionDeclarationCapturesArguments_es5.types b/tests/baselines/reference/asyncFunctionDeclarationCapturesArguments_es5.types index 5f5a1a148d35f..c6269bd45edd9 100644 --- a/tests/baselines/reference/asyncFunctionDeclarationCapturesArguments_es5.types +++ b/tests/baselines/reference/asyncFunctionDeclarationCapturesArguments_es5.types @@ -19,9 +19,7 @@ class C { await other.apply(this, arguments); >await other.apply(this, arguments) : any -> : ^^^ >other.apply(this, arguments) : any -> : ^^^ >other.apply : (this: Function, thisArg: any, argArray?: any) => any > : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^ >other : () => void @@ -29,7 +27,6 @@ class C { >apply : (this: Function, thisArg: any, argArray?: any) => any > : ^ ^^ ^^ ^^ ^^ ^^^ ^^^^^ >this : any -> : ^^^ >arguments : IArguments > : ^^^^^^^^^^ } diff --git a/tests/baselines/reference/asyncFunctionReturnExpressionErrorSpans.errors.txt b/tests/baselines/reference/asyncFunctionReturnExpressionErrorSpans.errors.txt index 22f1cb846f308..b7b73ce546c57 100644 --- a/tests/baselines/reference/asyncFunctionReturnExpressionErrorSpans.errors.txt +++ b/tests/baselines/reference/asyncFunctionReturnExpressionErrorSpans.errors.txt @@ -1,8 +1,7 @@ -asyncFunctionReturnExpressionErrorSpans.ts(11,28): error TS2705: An async function or method in ES5 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your '--lib' option. asyncFunctionReturnExpressionErrorSpans.ts(16,21): error TS2322: Type 'number' is not assignable to type 'string'. -==== asyncFunctionReturnExpressionErrorSpans.ts (2 errors) ==== +==== asyncFunctionReturnExpressionErrorSpans.ts (1 errors) ==== interface Foo { bar: { baz: { @@ -14,8 +13,6 @@ asyncFunctionReturnExpressionErrorSpans.ts(16,21): error TS2322: Type 'number' i } async function asyncFoo(): Promise { - ~~~~~~~~~~~~ -!!! error TS2705: An async function or method in ES5 requires the 'Promise' constructor. Make sure you have a declaration for the 'Promise' constructor or include 'ES2015' in your '--lib' option. return { bar: { baz: { diff --git a/tests/baselines/reference/asyncImportNestedYield.js b/tests/baselines/reference/asyncImportNestedYield.js index 53c7500508651..73a55fe1ec2b8 100644 --- a/tests/baselines/reference/asyncImportNestedYield.js +++ b/tests/baselines/reference/asyncImportNestedYield.js @@ -54,6 +54,6 @@ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _ar }; function foo() { return __asyncGenerator(this, arguments, function* foo_1() { - Promise.resolve("".concat((yield __await(Promise.resolve("".concat(yield yield __await("foo"))).then(function (s) { return __importStar(require(s)); }))).default)).then(function (s) { return __importStar(require(s)); }); + Promise.resolve(`${(yield __await(Promise.resolve(`${yield yield __await("foo")}`).then(s => __importStar(require(s))))).default}`).then(s => __importStar(require(s))); }); } diff --git a/tests/baselines/reference/asyncImportedPromise_es5.errors.txt b/tests/baselines/reference/asyncImportedPromise_es5.errors.txt new file mode 100644 index 0000000000000..e26e60423e201 --- /dev/null +++ b/tests/baselines/reference/asyncImportedPromise_es5.errors.txt @@ -0,0 +1,13 @@ +test.ts(3,25): error TS1064: The return type of an async function or method must be the global Promise type. Did you mean to write 'Promise'? + + +==== task.ts (0 errors) ==== + export class Task extends Promise { } + +==== test.ts (1 errors) ==== + import { Task } from "./task"; + class Test { + async example(): Task { return; } + ~~~~~~~ +!!! error TS1064: The return type of an async function or method must be the global Promise type. Did you mean to write 'Promise'? + } \ No newline at end of file diff --git a/tests/baselines/reference/asyncImportedPromise_es5.js b/tests/baselines/reference/asyncImportedPromise_es5.js index 3a0eb2688b43b..d452e0e36761e 100644 --- a/tests/baselines/reference/asyncImportedPromise_es5.js +++ b/tests/baselines/reference/asyncImportedPromise_es5.js @@ -28,9 +28,8 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge }); }; Object.defineProperty(exports, "__esModule", { value: true }); -var task_1 = require("./task"); class Test { example() { - return __awaiter(this, void 0, task_1.Task, function* () { return; }); + return __awaiter(this, void 0, void 0, function* () { return; }); } } diff --git a/tests/baselines/reference/asyncMethodWithSuper_es5.js b/tests/baselines/reference/asyncMethodWithSuper_es5.js index 7cf48bea1e72b..973a66e85459e 100644 --- a/tests/baselines/reference/asyncMethodWithSuper_es5.js +++ b/tests/baselines/reference/asyncMethodWithSuper_es5.js @@ -67,39 +67,51 @@ class A { class B extends A { // async method with only call/get on 'super' does not require a binding simple() { + const _superIndex = name => super[name]; + const _super = Object.create(null, { + x: { get: () => super.x }, + y: { get: () => super.y } + }); return __awaiter(this, void 0, void 0, function* () { // call with property access - super.x(); + _super.x.call(this); // call additional property. - super.y(); + _super.y.call(this); // call with element access - super["x"](); + _superIndex("x").call(this); // property access (read) - const a = super.x; + const a = _super.x; // element access (read) - const b = super["x"]; + const b = _superIndex("x"); }); } // async method with assignment/destructuring on 'super' requires a binding advanced() { + const _superIndex = (function (geti, seti) { + const cache = Object.create(null); + return name => cache[name] || (cache[name] = { get value() { return geti(name); }, set value(v) { seti(name, v); } }); + })(name => super[name], (name, value) => super[name] = value); + const _super = Object.create(null, { + x: { get: () => super.x, set: v => super.x = v } + }); return __awaiter(this, void 0, void 0, function* () { const f = () => { }; // call with property access - super.x(); + _super.x.call(this); // call with element access - super["x"](); + _superIndex("x").value.call(this); // property access (read) - const a = super.x; + const a = _super.x; // element access (read) - const b = super["x"]; + const b = _superIndex("x").value; // property access (assign) - super.x = f; + _super.x = f; // element access (assign) - super["x"] = f; + _superIndex("x").value = f; // destructuring assign with property access - ({ f: super.x } = { f }); + ({ f: _super.x } = { f }); // destructuring assign with element access - ({ f: super["x"] } = { f }); + ({ f: _superIndex("x").value } = { f }); }); } } diff --git a/tests/baselines/reference/asyncQualifiedReturnType_es5.errors.txt b/tests/baselines/reference/asyncQualifiedReturnType_es5.errors.txt new file mode 100644 index 0000000000000..5e2ce01846052 --- /dev/null +++ b/tests/baselines/reference/asyncQualifiedReturnType_es5.errors.txt @@ -0,0 +1,13 @@ +asyncQualifiedReturnType_es5.ts(6,21): error TS1064: The return type of an async function or method must be the global Promise type. Did you mean to write 'Promise'? + + +==== asyncQualifiedReturnType_es5.ts (1 errors) ==== + namespace X { + export class MyPromise extends Promise { + } + } + + async function f(): X.MyPromise { + ~~~~~~~~~~~~~~~~~ +!!! error TS1064: The return type of an async function or method must be the global Promise type. Did you mean to write 'Promise'? + } \ No newline at end of file diff --git a/tests/baselines/reference/asyncQualifiedReturnType_es5.js b/tests/baselines/reference/asyncQualifiedReturnType_es5.js index 04f84300a2085..381b121316173 100644 --- a/tests/baselines/reference/asyncQualifiedReturnType_es5.js +++ b/tests/baselines/reference/asyncQualifiedReturnType_es5.js @@ -17,6 +17,6 @@ var X; X.MyPromise = MyPromise; })(X || (X = {})); function f() { - return __awaiter(this, void 0, X.MyPromise, function* () { + return __awaiter(this, void 0, void 0, function* () { }); } diff --git a/tests/baselines/reference/augmentExportEquals3.js b/tests/baselines/reference/augmentExportEquals3.js index 64e00a4312e52..8fb564804f8af 100644 --- a/tests/baselines/reference/augmentExportEquals3.js +++ b/tests/baselines/reference/augmentExportEquals3.js @@ -33,7 +33,7 @@ module.exports = foo; //// [file2.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var x = require("./file1"); +const x = require("./file1"); x.b = 1; //// [file3.js] "use strict"; @@ -71,7 +71,7 @@ var __importStar = (this && this.__importStar) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var x = __importStar(require("./file1")); +const x = __importStar(require("./file1")); require("./file2"); let a; let b = x.b; diff --git a/tests/baselines/reference/augmentExportEquals4.js b/tests/baselines/reference/augmentExportEquals4.js index 915c036f843c5..411afefd7aa74 100644 --- a/tests/baselines/reference/augmentExportEquals4.js +++ b/tests/baselines/reference/augmentExportEquals4.js @@ -34,7 +34,7 @@ module.exports = foo; //// [file2.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var x = require("./file1"); +const x = require("./file1"); x.b = 1; //// [file3.js] "use strict"; @@ -72,7 +72,7 @@ var __importStar = (this && this.__importStar) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var x = __importStar(require("./file1")); +const x = __importStar(require("./file1")); require("./file2"); let a; let b = x.b; diff --git a/tests/baselines/reference/augmentExportEquals6.js b/tests/baselines/reference/augmentExportEquals6.js index 62021faebf2bb..b55de356a7773 100644 --- a/tests/baselines/reference/augmentExportEquals6.js +++ b/tests/baselines/reference/augmentExportEquals6.js @@ -43,7 +43,7 @@ module.exports = foo; //// [file2.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var x = require("./file1"); +const x = require("./file1"); x.B.b = 1; //// [file3.js] "use strict"; @@ -81,7 +81,7 @@ var __importStar = (this && this.__importStar) || (function () { }; })(); Object.defineProperty(exports, "__esModule", { value: true }); -var x = __importStar(require("./file1")); +const x = __importStar(require("./file1")); require("./file2"); let a; let b = a.a; diff --git a/tests/baselines/reference/autoAccessor1(target=es5).errors.txt b/tests/baselines/reference/autoAccessor1(target=es5).errors.txt deleted file mode 100644 index d20d2bfecf11e..0000000000000 --- a/tests/baselines/reference/autoAccessor1(target=es5).errors.txt +++ /dev/null @@ -1,22 +0,0 @@ -autoAccessor1.ts(2,14): error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. -autoAccessor1.ts(3,14): error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. -autoAccessor1.ts(4,21): error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. -autoAccessor1.ts(5,21): error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. - - -==== autoAccessor1.ts (4 errors) ==== - class C1 { - accessor a: any; - ~ -!!! error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. - accessor b = 1; - ~ -!!! error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. - static accessor c: any; - ~ -!!! error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. - static accessor d = 2; - ~ -!!! error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. - } - \ No newline at end of file diff --git a/tests/baselines/reference/autoAccessor1(target=es5).js b/tests/baselines/reference/autoAccessor1(target=es5).js index 9ba0042012275..e05e19fa51df5 100644 --- a/tests/baselines/reference/autoAccessor1(target=es5).js +++ b/tests/baselines/reference/autoAccessor1(target=es5).js @@ -9,9 +9,6 @@ class C1 { } - - -!!!! File autoAccessor1.js missing from original emit, but present in noCheck emit //// [autoAccessor1.js] var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); @@ -24,24 +21,21 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function ( if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; }; -let C1 = (() => { - var _a, _C1_a_accessor_storage, _C1_b_accessor_storage, _C1_c_accessor_storage, _C1_d_accessor_storage; - class C1 { - constructor() { - _C1_a_accessor_storage.set(this, void 0); - _C1_b_accessor_storage.set(this, 1); - } - get a() { return __classPrivateFieldGet(this, _C1_a_accessor_storage, "f"); } - set a(value) { __classPrivateFieldSet(this, _C1_a_accessor_storage, value, "f"); } - get b() { return __classPrivateFieldGet(this, _C1_b_accessor_storage, "f"); } - set b(value) { __classPrivateFieldSet(this, _C1_b_accessor_storage, value, "f"); } - static get c() { return __classPrivateFieldGet(_a, _a, "f", _C1_c_accessor_storage); } - static set c(value) { __classPrivateFieldSet(_a, _a, value, "f", _C1_c_accessor_storage); } - static get d() { return __classPrivateFieldGet(_a, _a, "f", _C1_d_accessor_storage); } - static set d(value) { __classPrivateFieldSet(_a, _a, value, "f", _C1_d_accessor_storage); } +var _a, _C1_a_accessor_storage, _C1_b_accessor_storage, _C1_c_accessor_storage, _C1_d_accessor_storage; +class C1 { + constructor() { + _C1_a_accessor_storage.set(this, void 0); + _C1_b_accessor_storage.set(this, 1); } - _a = C1, _C1_a_accessor_storage = new WeakMap(), _C1_b_accessor_storage = new WeakMap(); - _C1_c_accessor_storage = { value: void 0 }; - _C1_d_accessor_storage = { value: 2 }; - return C1; -})(); + get a() { return __classPrivateFieldGet(this, _C1_a_accessor_storage, "f"); } + set a(value) { __classPrivateFieldSet(this, _C1_a_accessor_storage, value, "f"); } + get b() { return __classPrivateFieldGet(this, _C1_b_accessor_storage, "f"); } + set b(value) { __classPrivateFieldSet(this, _C1_b_accessor_storage, value, "f"); } + static get c() { return __classPrivateFieldGet(_a, _a, "f", _C1_c_accessor_storage); } + static set c(value) { __classPrivateFieldSet(_a, _a, value, "f", _C1_c_accessor_storage); } + static get d() { return __classPrivateFieldGet(_a, _a, "f", _C1_d_accessor_storage); } + static set d(value) { __classPrivateFieldSet(_a, _a, value, "f", _C1_d_accessor_storage); } +} +_a = C1, _C1_a_accessor_storage = new WeakMap(), _C1_b_accessor_storage = new WeakMap(); +_C1_c_accessor_storage = { value: void 0 }; +_C1_d_accessor_storage = { value: 2 }; diff --git a/tests/baselines/reference/autoAccessor1(target=es5).types b/tests/baselines/reference/autoAccessor1(target=es5).types index ae3c602c2598f..9477dd86be887 100644 --- a/tests/baselines/reference/autoAccessor1(target=es5).types +++ b/tests/baselines/reference/autoAccessor1(target=es5).types @@ -7,7 +7,6 @@ class C1 { accessor a: any; >a : any -> : ^^^ accessor b = 1; >b : number @@ -17,7 +16,6 @@ class C1 { static accessor c: any; >c : any -> : ^^^ static accessor d = 2; >d : number diff --git a/tests/baselines/reference/autoAccessor3(target=es5).errors.txt b/tests/baselines/reference/autoAccessor3(target=es5).errors.txt deleted file mode 100644 index 0637053416bfe..0000000000000 --- a/tests/baselines/reference/autoAccessor3(target=es5).errors.txt +++ /dev/null @@ -1,22 +0,0 @@ -autoAccessor3.ts(2,14): error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. -autoAccessor3.ts(3,14): error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. -autoAccessor3.ts(4,21): error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. -autoAccessor3.ts(5,21): error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. - - -==== autoAccessor3.ts (4 errors) ==== - class C1 { - accessor "w": any; - ~~~ -!!! error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. - accessor "x" = 1; - ~~~ -!!! error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. - static accessor "y": any; - ~~~ -!!! error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. - static accessor "z" = 2; - ~~~ -!!! error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. - } - \ No newline at end of file diff --git a/tests/baselines/reference/autoAccessor3(target=es5).js b/tests/baselines/reference/autoAccessor3(target=es5).js index 2faf8ed1541b9..4e664b01eff63 100644 --- a/tests/baselines/reference/autoAccessor3(target=es5).js +++ b/tests/baselines/reference/autoAccessor3(target=es5).js @@ -9,9 +9,6 @@ class C1 { } - - -!!!! File autoAccessor3.js missing from original emit, but present in noCheck emit //// [autoAccessor3.js] var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); @@ -24,24 +21,21 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function ( if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; }; -let C1 = (() => { - var _a, _C1__a_accessor_storage, _C1__b_accessor_storage, _C1__c_accessor_storage, _C1__d_accessor_storage; - class C1 { - constructor() { - _C1__a_accessor_storage.set(this, void 0); - _C1__b_accessor_storage.set(this, 1); - } - get "w"() { return __classPrivateFieldGet(this, _C1__a_accessor_storage, "f"); } - set "w"(value) { __classPrivateFieldSet(this, _C1__a_accessor_storage, value, "f"); } - get "x"() { return __classPrivateFieldGet(this, _C1__b_accessor_storage, "f"); } - set "x"(value) { __classPrivateFieldSet(this, _C1__b_accessor_storage, value, "f"); } - static get "y"() { return __classPrivateFieldGet(_a, _a, "f", _C1__c_accessor_storage); } - static set "y"(value) { __classPrivateFieldSet(_a, _a, value, "f", _C1__c_accessor_storage); } - static get "z"() { return __classPrivateFieldGet(_a, _a, "f", _C1__d_accessor_storage); } - static set "z"(value) { __classPrivateFieldSet(_a, _a, value, "f", _C1__d_accessor_storage); } +var _a, _C1__a_accessor_storage, _C1__b_accessor_storage, _C1__c_accessor_storage, _C1__d_accessor_storage; +class C1 { + constructor() { + _C1__a_accessor_storage.set(this, void 0); + _C1__b_accessor_storage.set(this, 1); } - _a = C1, _C1__a_accessor_storage = new WeakMap(), _C1__b_accessor_storage = new WeakMap(); - _C1__c_accessor_storage = { value: void 0 }; - _C1__d_accessor_storage = { value: 2 }; - return C1; -})(); + get "w"() { return __classPrivateFieldGet(this, _C1__a_accessor_storage, "f"); } + set "w"(value) { __classPrivateFieldSet(this, _C1__a_accessor_storage, value, "f"); } + get "x"() { return __classPrivateFieldGet(this, _C1__b_accessor_storage, "f"); } + set "x"(value) { __classPrivateFieldSet(this, _C1__b_accessor_storage, value, "f"); } + static get "y"() { return __classPrivateFieldGet(_a, _a, "f", _C1__c_accessor_storage); } + static set "y"(value) { __classPrivateFieldSet(_a, _a, value, "f", _C1__c_accessor_storage); } + static get "z"() { return __classPrivateFieldGet(_a, _a, "f", _C1__d_accessor_storage); } + static set "z"(value) { __classPrivateFieldSet(_a, _a, value, "f", _C1__d_accessor_storage); } +} +_a = C1, _C1__a_accessor_storage = new WeakMap(), _C1__b_accessor_storage = new WeakMap(); +_C1__c_accessor_storage = { value: void 0 }; +_C1__d_accessor_storage = { value: 2 }; diff --git a/tests/baselines/reference/autoAccessor3(target=es5).types b/tests/baselines/reference/autoAccessor3(target=es5).types index e8072a0fce844..112e04e2fb86d 100644 --- a/tests/baselines/reference/autoAccessor3(target=es5).types +++ b/tests/baselines/reference/autoAccessor3(target=es5).types @@ -7,7 +7,6 @@ class C1 { accessor "w": any; >"w" : any -> : ^^^ accessor "x" = 1; >"x" : number @@ -17,7 +16,6 @@ class C1 { static accessor "y": any; >"y" : any -> : ^^^ static accessor "z" = 2; >"z" : number diff --git a/tests/baselines/reference/autoAccessor4(target=es5).errors.txt b/tests/baselines/reference/autoAccessor4(target=es5).errors.txt deleted file mode 100644 index 5c481a6438a95..0000000000000 --- a/tests/baselines/reference/autoAccessor4(target=es5).errors.txt +++ /dev/null @@ -1,22 +0,0 @@ -autoAccessor4.ts(2,14): error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. -autoAccessor4.ts(3,14): error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. -autoAccessor4.ts(4,21): error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. -autoAccessor4.ts(5,21): error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. - - -==== autoAccessor4.ts (4 errors) ==== - class C1 { - accessor 0: any; - ~ -!!! error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. - accessor 1 = 1; - ~ -!!! error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. - static accessor 2: any; - ~ -!!! error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. - static accessor 3 = 2; - ~ -!!! error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. - } - \ No newline at end of file diff --git a/tests/baselines/reference/autoAccessor4(target=es5).js b/tests/baselines/reference/autoAccessor4(target=es5).js index 21190575393a2..3c774d990f336 100644 --- a/tests/baselines/reference/autoAccessor4(target=es5).js +++ b/tests/baselines/reference/autoAccessor4(target=es5).js @@ -9,9 +9,6 @@ class C1 { } - - -!!!! File autoAccessor4.js missing from original emit, but present in noCheck emit //// [autoAccessor4.js] var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) { if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter"); @@ -24,24 +21,21 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function ( if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; }; -let C1 = (() => { - var _a, _C1__a_accessor_storage, _C1__b_accessor_storage, _C1__c_accessor_storage, _C1__d_accessor_storage; - class C1 { - constructor() { - _C1__a_accessor_storage.set(this, void 0); - _C1__b_accessor_storage.set(this, 1); - } - get 0() { return __classPrivateFieldGet(this, _C1__a_accessor_storage, "f"); } - set 0(value) { __classPrivateFieldSet(this, _C1__a_accessor_storage, value, "f"); } - get 1() { return __classPrivateFieldGet(this, _C1__b_accessor_storage, "f"); } - set 1(value) { __classPrivateFieldSet(this, _C1__b_accessor_storage, value, "f"); } - static get 2() { return __classPrivateFieldGet(_a, _a, "f", _C1__c_accessor_storage); } - static set 2(value) { __classPrivateFieldSet(_a, _a, value, "f", _C1__c_accessor_storage); } - static get 3() { return __classPrivateFieldGet(_a, _a, "f", _C1__d_accessor_storage); } - static set 3(value) { __classPrivateFieldSet(_a, _a, value, "f", _C1__d_accessor_storage); } +var _a, _C1__a_accessor_storage, _C1__b_accessor_storage, _C1__c_accessor_storage, _C1__d_accessor_storage; +class C1 { + constructor() { + _C1__a_accessor_storage.set(this, void 0); + _C1__b_accessor_storage.set(this, 1); } - _a = C1, _C1__a_accessor_storage = new WeakMap(), _C1__b_accessor_storage = new WeakMap(); - _C1__c_accessor_storage = { value: void 0 }; - _C1__d_accessor_storage = { value: 2 }; - return C1; -})(); + get 0() { return __classPrivateFieldGet(this, _C1__a_accessor_storage, "f"); } + set 0(value) { __classPrivateFieldSet(this, _C1__a_accessor_storage, value, "f"); } + get 1() { return __classPrivateFieldGet(this, _C1__b_accessor_storage, "f"); } + set 1(value) { __classPrivateFieldSet(this, _C1__b_accessor_storage, value, "f"); } + static get 2() { return __classPrivateFieldGet(_a, _a, "f", _C1__c_accessor_storage); } + static set 2(value) { __classPrivateFieldSet(_a, _a, value, "f", _C1__c_accessor_storage); } + static get 3() { return __classPrivateFieldGet(_a, _a, "f", _C1__d_accessor_storage); } + static set 3(value) { __classPrivateFieldSet(_a, _a, value, "f", _C1__d_accessor_storage); } +} +_a = C1, _C1__a_accessor_storage = new WeakMap(), _C1__b_accessor_storage = new WeakMap(); +_C1__c_accessor_storage = { value: void 0 }; +_C1__d_accessor_storage = { value: 2 }; diff --git a/tests/baselines/reference/autoAccessor4(target=es5).types b/tests/baselines/reference/autoAccessor4(target=es5).types index 04c4c440b0c05..b51f3ff55fa08 100644 --- a/tests/baselines/reference/autoAccessor4(target=es5).types +++ b/tests/baselines/reference/autoAccessor4(target=es5).types @@ -7,7 +7,6 @@ class C1 { accessor 0: any; >0 : any -> : ^^^ accessor 1 = 1; >1 : number @@ -17,7 +16,6 @@ class C1 { static accessor 2: any; >2 : any -> : ^^^ static accessor 3 = 2; >3 : number diff --git a/tests/baselines/reference/autoAccessor5(target=es5).errors.txt b/tests/baselines/reference/autoAccessor5(target=es5).errors.txt index 5800cd441ff26..2ce40eaac06d3 100644 --- a/tests/baselines/reference/autoAccessor5(target=es5).errors.txt +++ b/tests/baselines/reference/autoAccessor5(target=es5).errors.txt @@ -1,24 +1,12 @@ -autoAccessor5.ts(2,14): error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. -autoAccessor5.ts(3,14): error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. -autoAccessor5.ts(4,21): error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. -autoAccessor5.ts(5,21): error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. autoAccessor5.ts(10,14): error TS1166: A computed property name in a class property declaration must have a simple literal type or a 'unique symbol' type. -==== autoAccessor5.ts (5 errors) ==== +==== autoAccessor5.ts (1 errors) ==== class C1 { accessor ["w"]: any; - ~~~~~ -!!! error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. accessor ["x"] = 1; - ~~~~~ -!!! error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. static accessor ["y"]: any; - ~~~~~ -!!! error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. static accessor ["z"] = 2; - ~~~~~ -!!! error TS18045: Properties with the 'accessor' modifier are only available when targeting ECMAScript 2015 and higher. } declare var f: any; diff --git a/tests/baselines/reference/autoAccessor5(target=es5).js b/tests/baselines/reference/autoAccessor5(target=es5).js index f65d64b30e89b..edafc0c9da1d2 100644 --- a/tests/baselines/reference/autoAccessor5(target=es5).js +++ b/tests/baselines/reference/autoAccessor5(target=es5).js @@ -25,32 +25,28 @@ var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function ( if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value; }; -var _C2__a_accessor_storage, _a; -let C1 = (() => { - var _a, _C1__b_accessor_storage, _C1__c_accessor_storage, _C1__d_accessor_storage, _C1__e_accessor_storage; - class C1 { - constructor() { - _C1__b_accessor_storage.set(this, void 0); - _C1__c_accessor_storage.set(this, 1); - } - get [(_C1__b_accessor_storage = new WeakMap(), _C1__c_accessor_storage = new WeakMap(), "w")]() { return __classPrivateFieldGet(this, _C1__b_accessor_storage, "f"); } - set ["w"](value) { __classPrivateFieldSet(this, _C1__b_accessor_storage, value, "f"); } - get ["x"]() { return __classPrivateFieldGet(this, _C1__c_accessor_storage, "f"); } - set ["x"](value) { __classPrivateFieldSet(this, _C1__c_accessor_storage, value, "f"); } - static get ["y"]() { return __classPrivateFieldGet(_a, _a, "f", _C1__d_accessor_storage); } - static set ["y"](value) { __classPrivateFieldSet(_a, _a, value, "f", _C1__d_accessor_storage); } - static get ["z"]() { return __classPrivateFieldGet(_a, _a, "f", _C1__e_accessor_storage); } - static set ["z"](value) { __classPrivateFieldSet(_a, _a, value, "f", _C1__e_accessor_storage); } +var _a, _C1__a_accessor_storage, _C1__b_accessor_storage, _C1__c_accessor_storage, _C1__d_accessor_storage, _C2__e_accessor_storage, _b; +class C1 { + constructor() { + _C1__a_accessor_storage.set(this, void 0); + _C1__b_accessor_storage.set(this, 1); } - _a = C1; - _C1__d_accessor_storage = { value: void 0 }; - _C1__e_accessor_storage = { value: 2 }; - return C1; -})(); + get [(_C1__a_accessor_storage = new WeakMap(), _C1__b_accessor_storage = new WeakMap(), "w")]() { return __classPrivateFieldGet(this, _C1__a_accessor_storage, "f"); } + set ["w"](value) { __classPrivateFieldSet(this, _C1__a_accessor_storage, value, "f"); } + get ["x"]() { return __classPrivateFieldGet(this, _C1__b_accessor_storage, "f"); } + set ["x"](value) { __classPrivateFieldSet(this, _C1__b_accessor_storage, value, "f"); } + static get ["y"]() { return __classPrivateFieldGet(_a, _a, "f", _C1__c_accessor_storage); } + static set ["y"](value) { __classPrivateFieldSet(_a, _a, value, "f", _C1__c_accessor_storage); } + static get ["z"]() { return __classPrivateFieldGet(_a, _a, "f", _C1__d_accessor_storage); } + static set ["z"](value) { __classPrivateFieldSet(_a, _a, value, "f", _C1__d_accessor_storage); } +} +_a = C1; +_C1__c_accessor_storage = { value: void 0 }; +_C1__d_accessor_storage = { value: 2 }; class C2 { constructor() { - _C2__a_accessor_storage.set(this, 1); + _C2__e_accessor_storage.set(this, 1); } - get [(_C2__a_accessor_storage = new WeakMap(), _a = f())]() { return __classPrivateFieldGet(this, _C2__a_accessor_storage, "f"); } - set [_a](value) { __classPrivateFieldSet(this, _C2__a_accessor_storage, value, "f"); } + get [(_C2__e_accessor_storage = new WeakMap(), _b = f())]() { return __classPrivateFieldGet(this, _C2__e_accessor_storage, "f"); } + set [_b](value) { __classPrivateFieldSet(this, _C2__e_accessor_storage, value, "f"); } } diff --git a/tests/baselines/reference/autolift4.js b/tests/baselines/reference/autolift4.js index c080d03968390..f515ab0fa3951 100644 --- a/tests/baselines/reference/autolift4.js +++ b/tests/baselines/reference/autolift4.js @@ -26,19 +26,16 @@ class Point3D extends Point { //// [autolift4.js] -let Point = (() => { - class Point { - constructor(x, y) { - this.x = x; - this.y = y; - } - getDist() { - return Math.sqrt(this.x * this.x + this.y * this.y); - } +class Point { + constructor(x, y) { + this.x = x; + this.y = y; } - Point.origin = new Point(0, 0); - return Point; -})(); + getDist() { + return Math.sqrt(this.x * this.x + this.y * this.y); + } +} +Point.origin = new Point(0, 0); class Point3D extends Point { constructor(x, y, z, m) { super(x, y); diff --git a/tests/baselines/reference/blockScopedFunctionDeclarationInStrictClass.errors.txt b/tests/baselines/reference/blockScopedFunctionDeclarationInStrictClass.errors.txt index f0e4c2cc061c6..0fcc185589055 100644 --- a/tests/baselines/reference/blockScopedFunctionDeclarationInStrictClass.errors.txt +++ b/tests/baselines/reference/blockScopedFunctionDeclarationInStrictClass.errors.txt @@ -1,14 +1,11 @@ -blockScopedFunctionDeclarationInStrictClass.ts(4,22): error TS1251: Function declarations are not allowed inside blocks in strict mode when targeting 'ES5'. Class definitions are automatically in strict mode. blockScopedFunctionDeclarationInStrictClass.ts(7,9): error TS2304: Cannot find name 'foo'. -==== blockScopedFunctionDeclarationInStrictClass.ts (2 errors) ==== +==== blockScopedFunctionDeclarationInStrictClass.ts (1 errors) ==== class c { method() { if (true) { function foo() { } - ~~~ -!!! error TS1251: Function declarations are not allowed inside blocks in strict mode when targeting 'ES5'. Class definitions are automatically in strict mode. foo(); // ok } foo(); // not ok diff --git a/tests/baselines/reference/blockScopedFunctionDeclarationStrictES5.errors.txt b/tests/baselines/reference/blockScopedFunctionDeclarationStrictES5.errors.txt index 857941c464872..120e1f45d585f 100644 --- a/tests/baselines/reference/blockScopedFunctionDeclarationStrictES5.errors.txt +++ b/tests/baselines/reference/blockScopedFunctionDeclarationStrictES5.errors.txt @@ -1,13 +1,10 @@ -blockScopedFunctionDeclarationStrictES5.ts(3,14): error TS1250: Function declarations are not allowed inside blocks in strict mode when targeting 'ES5'. blockScopedFunctionDeclarationStrictES5.ts(6,1): error TS2304: Cannot find name 'foo'. -==== blockScopedFunctionDeclarationStrictES5.ts (2 errors) ==== +==== blockScopedFunctionDeclarationStrictES5.ts (1 errors) ==== "use strict"; if (true) { function foo() { } // Error to declare function in block scope - ~~~ -!!! error TS1250: Function declarations are not allowed inside blocks in strict mode when targeting 'ES5'. foo(); // This call should be ok } foo(); // Error to find name foo diff --git a/tests/baselines/reference/blockScopedNamespaceDifferentFile.js b/tests/baselines/reference/blockScopedNamespaceDifferentFile.js index 4cae7dd114f2a..f1ff6ca37c8f2 100644 --- a/tests/baselines/reference/blockScopedNamespaceDifferentFile.js +++ b/tests/baselines/reference/blockScopedNamespaceDifferentFile.js @@ -22,13 +22,10 @@ declare namespace A { //// [out.js] var C; (function (C) { - let Name = (() => { - class Name { - constructor(parameters) { } - } - Name.funcData = A.AA.func(); - Name.someConst = A.AA.foo; - return Name; - })(); + class Name { + constructor(parameters) { } + } + Name.funcData = A.AA.func(); + Name.someConst = A.AA.foo; C.Name = Name; })(C || (C = {})); diff --git a/tests/baselines/reference/blockScopedSameNameFunctionDeclarationStrictES5.errors.txt b/tests/baselines/reference/blockScopedSameNameFunctionDeclarationStrictES5.errors.txt index 2a0872026df8e..2d70db4f6cf15 100644 --- a/tests/baselines/reference/blockScopedSameNameFunctionDeclarationStrictES5.errors.txt +++ b/tests/baselines/reference/blockScopedSameNameFunctionDeclarationStrictES5.errors.txt @@ -1,18 +1,14 @@ -blockScopedSameNameFunctionDeclarationStrictES5.ts(4,18): error TS1250: Function declarations are not allowed inside blocks in strict mode when targeting 'ES5'. blockScopedSameNameFunctionDeclarationStrictES5.ts(6,13): error TS2554: Expected 0 arguments, but got 1. -blockScopedSameNameFunctionDeclarationStrictES5.ts(9,18): error TS1250: Function declarations are not allowed inside blocks in strict mode when targeting 'ES5'. blockScopedSameNameFunctionDeclarationStrictES5.ts(11,13): error TS2554: Expected 0 arguments, but got 1. blockScopedSameNameFunctionDeclarationStrictES5.ts(14,5): error TS2554: Expected 1 arguments, but got 0. blockScopedSameNameFunctionDeclarationStrictES5.ts(17,1): error TS2554: Expected 1 arguments, but got 0. -==== blockScopedSameNameFunctionDeclarationStrictES5.ts (6 errors) ==== +==== blockScopedSameNameFunctionDeclarationStrictES5.ts (4 errors) ==== "use strict"; function foo(a: number) { if (a === 1) { function foo() { } // Error to declare function in block scope - ~~~ -!!! error TS1250: Function declarations are not allowed inside blocks in strict mode when targeting 'ES5'. foo(); foo(10); // not ok ~~ @@ -20,8 +16,6 @@ blockScopedSameNameFunctionDeclarationStrictES5.ts(17,1): error TS2554: Expected } else { function foo() { } // Error to declare function in block scope - ~~~ -!!! error TS1250: Function declarations are not allowed inside blocks in strict mode when targeting 'ES5'. foo(); foo(10); // not ok ~~ diff --git a/tests/baselines/reference/blockScopedVariablesUseBeforeDef.js b/tests/baselines/reference/blockScopedVariablesUseBeforeDef.js index 96a2b3f68f227..c1cfdc27774af 100644 --- a/tests/baselines/reference/blockScopedVariablesUseBeforeDef.js +++ b/tests/baselines/reference/blockScopedVariablesUseBeforeDef.js @@ -248,12 +248,9 @@ function foo9() { let x; } function foo10() { - let A = (() => { - class A { - } - A.a = x; - return A; - })(); + class A { + } + A.a = x; let x; } function foo11() { diff --git a/tests/baselines/reference/bundlerCommonJS.js b/tests/baselines/reference/bundlerCommonJS.js index 0d8c4c13d3c90..6d419cecbcbb5 100644 --- a/tests/baselines/reference/bundlerCommonJS.js +++ b/tests/baselines/reference/bundlerCommonJS.js @@ -34,12 +34,12 @@ import { x } from "pkg"; // Error //// [requires.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var pkg = require("pkg"); +const pkg = require("pkg"); pkg.x; //// [imports.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var pkg_1 = require("pkg"); +const pkg_1 = require("pkg"); pkg_1.x; //// [real-imports.mjs] export {}; diff --git a/tests/baselines/reference/callsOnComplexSignatures.js b/tests/baselines/reference/callsOnComplexSignatures.js index fb947338e1644..d0a152e5cbd99 100644 --- a/tests/baselines/reference/callsOnComplexSignatures.js +++ b/tests/baselines/reference/callsOnComplexSignatures.js @@ -113,7 +113,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { }; Object.defineProperty(exports, "__esModule", { value: true }); /// -var react_1 = __importDefault(require("react")); +const react_1 = __importDefault(require("react")); // Simple calls from real usecases function test1() { function test(t) { diff --git a/tests/baselines/reference/capturedParametersInInitializers2.js b/tests/baselines/reference/capturedParametersInInitializers2.js index 4bb279ae1ea33..ae2a81645d949 100644 --- a/tests/baselines/reference/capturedParametersInInitializers2.js +++ b/tests/baselines/reference/capturedParametersInInitializers2.js @@ -21,23 +21,28 @@ var __setFunctionName = (this && this.__setFunctionName) || function (f, name, p if (typeof name === "symbol") name = name.description ? "[".concat(name.description, "]") : ""; return Object.defineProperty(f, "name", { configurable: true, value: prefix ? "".concat(prefix, " ", name) : name }); }; -function foo(y = (_a = class { - get [x]() { return x; } - constructor() { x; } - [z]() { return z; } - }, - __setFunctionName(_a, "y"), - _a.c = x, - _a), x = 1, z = 2) { +function foo(y, x, z) { var _a; + if (y === void 0) { y = (_a = class { + get [x]() { return x; } + constructor() { x; } + [z]() { return z; } + }, + __setFunctionName(_a, "y"), + _a.c = x, + _a); } + if (x === void 0) { x = 1; } + if (z === void 0) { z = 2; } y.c; } -function foo2(y = (_a = class { - constructor() { - this[_b] = x; - } - }, - _b = x, - _a), x = 1) { - var _b, _a; +function foo2(y, x) { + var _a, _b; + if (y === void 0) { y = (_b = class { + constructor() { + this[_a] = x; + } + }, + _a = x, + _b); } + if (x === void 0) { x = 1; } } diff --git a/tests/baselines/reference/chained2.js b/tests/baselines/reference/chained2.js index 048915e190cd6..29273919d1339 100644 --- a/tests/baselines/reference/chained2.js +++ b/tests/baselines/reference/chained2.js @@ -66,7 +66,7 @@ var __importStar = (this && this.__importStar) || (function () { })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; -var types = __importStar(require("./b")); +const types = __importStar(require("./b")); exports.default = types; //// [d.js] "use strict"; @@ -74,7 +74,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -var c_1 = __importDefault(require("./c")); +const c_1 = __importDefault(require("./c")); new c_1.default.A(); new c_1.default.B(); const a = {}; diff --git a/tests/baselines/reference/chainedImportAlias.js b/tests/baselines/reference/chainedImportAlias.js index 08b116b9fb0b0..38e8d3ef71806 100644 --- a/tests/baselines/reference/chainedImportAlias.js +++ b/tests/baselines/reference/chainedImportAlias.js @@ -23,6 +23,6 @@ var m; //// [chainedImportAlias_file1.js] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var x = require("./chainedImportAlias_file0"); +const x = require("./chainedImportAlias_file0"); var y = x; y.m.foo(); diff --git a/tests/baselines/reference/checkJsdocTypeTagOnExportAssignment1.js b/tests/baselines/reference/checkJsdocTypeTagOnExportAssignment1.js index 4ba0cb44b7a7e..ad2d034a27f9a 100644 --- a/tests/baselines/reference/checkJsdocTypeTagOnExportAssignment1.js +++ b/tests/baselines/reference/checkJsdocTypeTagOnExportAssignment1.js @@ -34,5 +34,5 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -var a_1 = __importDefault(require("./a")); +const a_1 = __importDefault(require("./a")); a_1.default; diff --git a/tests/baselines/reference/checkJsdocTypeTagOnExportAssignment2.js b/tests/baselines/reference/checkJsdocTypeTagOnExportAssignment2.js index 309fb75ad8700..cb7d1e31eeabf 100644 --- a/tests/baselines/reference/checkJsdocTypeTagOnExportAssignment2.js +++ b/tests/baselines/reference/checkJsdocTypeTagOnExportAssignment2.js @@ -32,5 +32,5 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -var b_1 = __importDefault(require("./b")); +const b_1 = __importDefault(require("./b")); b_1.default; diff --git a/tests/baselines/reference/checkJsdocTypeTagOnExportAssignment3.js b/tests/baselines/reference/checkJsdocTypeTagOnExportAssignment3.js index ca90e550ba9ee..f97a3ac134f9e 100644 --- a/tests/baselines/reference/checkJsdocTypeTagOnExportAssignment3.js +++ b/tests/baselines/reference/checkJsdocTypeTagOnExportAssignment3.js @@ -37,5 +37,5 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -var a_1 = __importDefault(require("./a")); +const a_1 = __importDefault(require("./a")); a_1.default; diff --git a/tests/baselines/reference/checkJsdocTypeTagOnExportAssignment5.js b/tests/baselines/reference/checkJsdocTypeTagOnExportAssignment5.js index 0934b84307c40..88badb94e9166 100644 --- a/tests/baselines/reference/checkJsdocTypeTagOnExportAssignment5.js +++ b/tests/baselines/reference/checkJsdocTypeTagOnExportAssignment5.js @@ -34,5 +34,5 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -var a_1 = __importDefault(require("./a")); +const a_1 = __importDefault(require("./a")); a_1.default; diff --git a/tests/baselines/reference/checkJsdocTypeTagOnExportAssignment6.js b/tests/baselines/reference/checkJsdocTypeTagOnExportAssignment6.js index 592d06b04074d..dbdd725c30c6f 100644 --- a/tests/baselines/reference/checkJsdocTypeTagOnExportAssignment6.js +++ b/tests/baselines/reference/checkJsdocTypeTagOnExportAssignment6.js @@ -34,5 +34,5 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -var a_1 = __importDefault(require("./a")); +const a_1 = __importDefault(require("./a")); a_1.default; diff --git a/tests/baselines/reference/checkJsdocTypeTagOnExportAssignment7.js b/tests/baselines/reference/checkJsdocTypeTagOnExportAssignment7.js index 28cc1ca0b91dc..c77ce904d2fa2 100644 --- a/tests/baselines/reference/checkJsdocTypeTagOnExportAssignment7.js +++ b/tests/baselines/reference/checkJsdocTypeTagOnExportAssignment7.js @@ -37,5 +37,5 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -var a_1 = __importDefault(require("./a")); +const a_1 = __importDefault(require("./a")); a_1.default; diff --git a/tests/baselines/reference/checkJsxChildrenCanBeTupleType.js b/tests/baselines/reference/checkJsxChildrenCanBeTupleType.js index 0436b31df537b..a8e9ea62af9c9 100644 --- a/tests/baselines/reference/checkJsxChildrenCanBeTupleType.js +++ b/tests/baselines/reference/checkJsxChildrenCanBeTupleType.js @@ -30,7 +30,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); -var react_1 = __importDefault(require("react")); +const react_1 = __importDefault(require("react")); class ResizablePanel extends react_1.default.Component { } const test = react_1.default.createElement(ResizablePanel, null, diff --git a/tests/baselines/reference/checkJsxChildrenProperty1.js b/tests/baselines/reference/checkJsxChildrenProperty1.js index 7e1b77aa26ca2..8f76cbb5aec5f 100644 --- a/tests/baselines/reference/checkJsxChildrenProperty1.js +++ b/tests/baselines/reference/checkJsxChildrenProperty1.js @@ -27,7 +27,7 @@ let k2 = //// [file.jsx] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var React = require("react"); +const React = require("react"); function Comp(p) { return
{p.b}
; } diff --git a/tests/baselines/reference/checkJsxChildrenProperty12.js b/tests/baselines/reference/checkJsxChildrenProperty12.js index 01f64de1aa46f..d676838dc8416 100644 --- a/tests/baselines/reference/checkJsxChildrenProperty12.js +++ b/tests/baselines/reference/checkJsxChildrenProperty12.js @@ -37,7 +37,7 @@ class InnerButton extends React.Component { //// [file.jsx] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var React = require("react"); +const React = require("react"); class Button extends React.Component { render() { let condition; diff --git a/tests/baselines/reference/checkJsxChildrenProperty13.js b/tests/baselines/reference/checkJsxChildrenProperty13.js index 6681e9ff89585..bb675067213e3 100644 --- a/tests/baselines/reference/checkJsxChildrenProperty13.js +++ b/tests/baselines/reference/checkJsxChildrenProperty13.js @@ -32,7 +32,7 @@ class InnerButton extends React.Component { //// [file.jsx] "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -var React = require("react"); +const React = require("react"); class Button extends React.Component { render() { // Error children are specified twice diff --git a/tests/baselines/reference/checkJsxChildrenProperty14.js b/tests/baselines/reference/checkJsxChildrenProperty14.js index cc93f0d31c65d..cf428b23e9d49 100644 --- a/tests/baselines/reference/checkJsxChildrenProperty14.js +++ b/tests/baselines/reference/checkJsxChildrenProperty14.js @@ -47,7 +47,7 @@ let k5 = <>