mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-11-18 17:21:48 +00:00
Merge branch 'master' into theyreNotTHATSpecial
This commit is contained in:
+20
@@ -2,9 +2,11 @@ TypeScript is authored by:
|
||||
|
||||
* Adam Freidin
|
||||
* Ahmad Farid
|
||||
* Akshar Patel
|
||||
* Anders Hejlsberg
|
||||
* Arnav Singh
|
||||
* Arthur Ozga
|
||||
* Asad Saeeduddin
|
||||
* Basarat Ali Syed
|
||||
* Ben Duffield
|
||||
* Bill Ticehurst
|
||||
@@ -15,30 +17,39 @@ TypeScript is authored by:
|
||||
* Colby Russell
|
||||
* Colin Snover
|
||||
* Cyrus Najmabadi
|
||||
* Dan Corder
|
||||
* Dan Quirk
|
||||
* Daniel Rosenwasser
|
||||
* @dashaus
|
||||
* David Li
|
||||
* Denis Nedelyaev
|
||||
* Dick van den Brink
|
||||
* Dirk Bäumer
|
||||
* Dirk Holtwick
|
||||
* Eyas Sharaiha
|
||||
* @falsandtru
|
||||
* Frank Wallis
|
||||
* Gabriel Isenberg
|
||||
* Gilad Peleg
|
||||
* Graeme Wicksted
|
||||
* Guillaume Salles
|
||||
* Guy Bedford
|
||||
* Harald Niesche
|
||||
* Iain Monro
|
||||
* Ingvar Stepanyan
|
||||
* Ivo Gabe de Wolff
|
||||
* James Whitney
|
||||
* Jason Freeman
|
||||
* Jason Killian
|
||||
* Jason Ramsay
|
||||
* Jed Mao
|
||||
* Jeffrey Morlan
|
||||
* Johannes Rieken
|
||||
* John Vilk
|
||||
* Jonathan Bond-Caron
|
||||
* Jonathan Park
|
||||
* Jonathan Turner
|
||||
* Jonathon Smith
|
||||
* Josh Kalderimis
|
||||
* Julian Williams
|
||||
* Kagami Sascha Rosylight
|
||||
@@ -46,21 +57,27 @@ TypeScript is authored by:
|
||||
* Ken Howard
|
||||
* Kenji Imamula
|
||||
* Lorant Pinter
|
||||
* Lucien Greathouse
|
||||
* Martin Všetička
|
||||
* Masahiro Wakame
|
||||
* Mattias Buelens
|
||||
* Max Deepfield
|
||||
* Micah Zoltu
|
||||
* Mohamed Hegazy
|
||||
* Nathan Shively-Sanders
|
||||
* Nathan Yee
|
||||
* Oleg Mihailik
|
||||
* Oleksandr Chekhovskyi
|
||||
* Paul van Brenk
|
||||
* @pcbro
|
||||
* Pedro Maltez
|
||||
* Philip Bulley
|
||||
* piloopin
|
||||
* @progre
|
||||
* Punya Biswal
|
||||
* Richard Sentino
|
||||
* Ron Buckton
|
||||
* Rowan Wyborn
|
||||
* Ryan Cavanaugh
|
||||
* Ryohei Ikegami
|
||||
* Sébastien Arod
|
||||
@@ -71,7 +88,9 @@ TypeScript is authored by:
|
||||
* Solal Pirelli
|
||||
* Stan Thomas
|
||||
* Steve Lucco
|
||||
* Thomas Loubiou
|
||||
* Tien Hoanhtien
|
||||
* Tim Perry
|
||||
* Tingan Ho
|
||||
* togru
|
||||
* Tomas Grubliauskas
|
||||
@@ -81,5 +100,6 @@ TypeScript is authored by:
|
||||
* Wesley Wigham
|
||||
* York Yao
|
||||
* Yui Tanglertsampan
|
||||
* Yuichi Nukiyama
|
||||
* Zev Spitz
|
||||
* Zhengbo Li
|
||||
|
||||
@@ -1462,7 +1462,7 @@ namespace ts {
|
||||
function bindCallExpression(node: CallExpression) {
|
||||
// We're only inspecting call expressions to detect CommonJS modules, so we can skip
|
||||
// this check if we've already seen the module indicator
|
||||
if (!file.commonJsModuleIndicator && isRequireCall(node)) {
|
||||
if (!file.commonJsModuleIndicator && isRequireCall(node, /*checkArgumentIsStringLiteral*/false)) {
|
||||
setCommonJsModuleIndicator(node);
|
||||
}
|
||||
}
|
||||
|
||||
+113
-15
@@ -2465,10 +2465,21 @@ namespace ts {
|
||||
|
||||
function getDeclarationContainer(node: Node): Node {
|
||||
node = getRootDeclaration(node);
|
||||
while (node) {
|
||||
switch (node.kind) {
|
||||
case SyntaxKind.VariableDeclaration:
|
||||
case SyntaxKind.VariableDeclarationList:
|
||||
case SyntaxKind.ImportSpecifier:
|
||||
case SyntaxKind.NamedImports:
|
||||
case SyntaxKind.NamespaceImport:
|
||||
case SyntaxKind.ImportClause:
|
||||
node = node.parent;
|
||||
break;
|
||||
|
||||
// Parent chain:
|
||||
// VaribleDeclaration -> VariableDeclarationList -> VariableStatement -> 'Declaration Container'
|
||||
return node.kind === SyntaxKind.VariableDeclaration ? node.parent.parent.parent : node.parent;
|
||||
default:
|
||||
return node.parent;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function getTypeOfPrototypeProperty(prototype: Symbol): Type {
|
||||
@@ -2610,7 +2621,7 @@ namespace ts {
|
||||
}
|
||||
}
|
||||
else if (declaration.kind === SyntaxKind.Parameter) {
|
||||
// If it's a parameter, see if the parent has a jsdoc comment with an @param
|
||||
// If it's a parameter, see if the parent has a jsdoc comment with an @param
|
||||
// annotation.
|
||||
const paramTag = getCorrespondingJSDocParameterTag(<ParameterDeclaration>declaration);
|
||||
if (paramTag && paramTag.typeExpression) {
|
||||
@@ -2625,7 +2636,7 @@ namespace ts {
|
||||
function getTypeForVariableLikeDeclaration(declaration: VariableLikeDeclaration): Type {
|
||||
if (declaration.parserContextFlags & ParserContextFlags.JavaScriptFile) {
|
||||
// If this is a variable in a JavaScript file, then use the JSDoc type (if it has
|
||||
// one as its type), otherwise fallback to the below standard TS codepaths to
|
||||
// one as its type), otherwise fallback to the below standard TS codepaths to
|
||||
// try to figure it out.
|
||||
const type = getTypeForVariableLikeDeclarationFromJSDocComment(declaration);
|
||||
if (type && type !== unknownType) {
|
||||
@@ -4069,7 +4080,7 @@ namespace ts {
|
||||
const isJSConstructSignature = isJSDocConstructSignature(declaration);
|
||||
let returnType: Type = undefined;
|
||||
|
||||
// If this is a JSDoc construct signature, then skip the first parameter in the
|
||||
// If this is a JSDoc construct signature, then skip the first parameter in the
|
||||
// parameter list. The first parameter represents the return type of the construct
|
||||
// signature.
|
||||
for (let i = isJSConstructSignature ? 1 : 0, n = declaration.parameters.length; i < n; i++) {
|
||||
@@ -4478,7 +4489,7 @@ namespace ts {
|
||||
}
|
||||
|
||||
if (symbol.flags & SymbolFlags.Value && node.kind === SyntaxKind.JSDocTypeReference) {
|
||||
// A JSDocTypeReference may have resolved to a value (as opposed to a type). In
|
||||
// A JSDocTypeReference may have resolved to a value (as opposed to a type). In
|
||||
// that case, the type of this reference is just the type of the value we resolved
|
||||
// to.
|
||||
return getTypeOfSymbol(symbol);
|
||||
@@ -7251,6 +7262,14 @@ namespace ts {
|
||||
let container = getThisContainer(node, /* includeArrowFunctions */ true);
|
||||
let needToCaptureLexicalThis = false;
|
||||
|
||||
if (container.kind === SyntaxKind.Constructor) {
|
||||
const baseTypeNode = getClassExtendsHeritageClauseElement(<ClassLikeDeclaration>container.parent);
|
||||
if (baseTypeNode && !(getNodeCheckFlags(container) & NodeCheckFlags.HasSeenSuperCall)) {
|
||||
// In ES6, super inside constructor of class-declaration has to precede "this" accessing
|
||||
error(node, Diagnostics.super_must_be_called_before_accessing_this_in_the_constructor_of_a_derived_class);
|
||||
}
|
||||
}
|
||||
|
||||
// Now skip arrow functions to get the "real" owner of 'this'.
|
||||
if (container.kind === SyntaxKind.ArrowFunction) {
|
||||
container = getThisContainer(container, /* includeArrowFunctions */ false);
|
||||
@@ -8752,7 +8771,7 @@ namespace ts {
|
||||
*/
|
||||
function checkClassPropertyAccess(node: PropertyAccessExpression | QualifiedName, left: Expression | QualifiedName, type: Type, prop: Symbol): boolean {
|
||||
const flags = getDeclarationFlagsFromSymbol(prop);
|
||||
const declaringClass = <InterfaceType>getDeclaredTypeOfSymbol(prop.parent);
|
||||
const declaringClass = <InterfaceType>getDeclaredTypeOfSymbol(getMergedSymbol(prop.parent));
|
||||
|
||||
if (left.kind === SyntaxKind.SuperKeyword) {
|
||||
const errorNode = node.kind === SyntaxKind.PropertyAccessExpression ?
|
||||
@@ -10197,6 +10216,11 @@ namespace ts {
|
||||
|
||||
const signature = getResolvedSignature(node);
|
||||
if (node.expression.kind === SyntaxKind.SuperKeyword) {
|
||||
const containgFunction = getContainingFunction(node.expression);
|
||||
|
||||
if (containgFunction && containgFunction.kind === SyntaxKind.Constructor) {
|
||||
getNodeLinks(containgFunction).flags |= NodeCheckFlags.HasSeenSuperCall;
|
||||
}
|
||||
return voidType;
|
||||
}
|
||||
if (node.kind === SyntaxKind.NewExpression) {
|
||||
@@ -10223,7 +10247,7 @@ namespace ts {
|
||||
}
|
||||
|
||||
// In JavaScript files, calls to any identifier 'require' are treated as external module imports
|
||||
if (isInJavaScriptFile(node) && isRequireCall(node)) {
|
||||
if (isInJavaScriptFile(node) && isRequireCall(node, /*checkArgumentIsStringLiteral*/true)) {
|
||||
return resolveExternalModuleTypeByLiteral(<StringLiteral>node.arguments[0]);
|
||||
}
|
||||
|
||||
@@ -10405,7 +10429,8 @@ namespace ts {
|
||||
}
|
||||
else {
|
||||
error(func, Diagnostics.No_best_common_type_exists_among_return_expressions);
|
||||
return unknownType;
|
||||
// Defer to unioning the return types so we get a) downstream errors earlier and b) better Salsa experience
|
||||
return getUnionType(types);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -10483,7 +10508,7 @@ namespace ts {
|
||||
|
||||
/*
|
||||
*TypeScript Specification 1.0 (6.3) - July 2014
|
||||
* An explicitly typed function whose return type isn't the Void type,
|
||||
* An explicitly typed function whose return type isn't the Void type,
|
||||
* the Any type, or a union type containing the Void or Any type as a constituent
|
||||
* must have at least one return statement somewhere in its body.
|
||||
* An exception to this rule is if the function implementation consists of a single 'throw' statement.
|
||||
@@ -11639,6 +11664,9 @@ namespace ts {
|
||||
checkTypeAssignableTo(iterableIteratorInstantiation, returnType, node.type);
|
||||
}
|
||||
}
|
||||
else if (isAsyncFunctionLike(node)) {
|
||||
checkAsyncFunctionReturnType(<FunctionLikeDeclaration>node);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -11808,10 +11836,6 @@ namespace ts {
|
||||
if (!superCallStatement) {
|
||||
error(node, Diagnostics.A_super_call_must_be_the_first_statement_in_the_constructor_when_a_class_contains_initialized_properties_or_has_parameter_properties);
|
||||
}
|
||||
else {
|
||||
// In such a required super call, it is a compile-time error for argument expressions to reference this.
|
||||
markThisReferencesAsErrors(superCallStatement.expression);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (baseConstructorType !== nullType) {
|
||||
@@ -12446,6 +12470,36 @@ namespace ts {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks that the return type provided is an instantiation of the global Promise<T> type
|
||||
* and returns the awaited type of the return type.
|
||||
*
|
||||
* @param returnType The return type of a FunctionLikeDeclaration
|
||||
* @param location The node on which to report the error.
|
||||
*/
|
||||
function checkCorrectPromiseType(returnType: Type, location: Node) {
|
||||
if (returnType === unknownType) {
|
||||
// The return type already had some other error, so we ignore and return
|
||||
// the unknown type.
|
||||
return unknownType;
|
||||
}
|
||||
|
||||
const globalPromiseType = getGlobalPromiseType();
|
||||
if (globalPromiseType === emptyGenericType
|
||||
|| globalPromiseType === getTargetType(returnType)) {
|
||||
// Either we couldn't resolve the global promise type, which would have already
|
||||
// reported an error, or we could resolve it and the return type is a valid type
|
||||
// reference to the global type. In either case, we return the awaited type for
|
||||
// the return type.
|
||||
return checkAwaitedType(returnType, location, Diagnostics.An_async_function_or_method_must_have_a_valid_awaitable_return_type);
|
||||
}
|
||||
|
||||
// The promise type was not a valid type reference to the global promise type, so we
|
||||
// report an error and return the unknown type.
|
||||
error(location, Diagnostics.The_return_type_of_an_async_function_or_method_must_be_the_global_Promise_T_type);
|
||||
return unknownType;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks the return type of an async function to ensure it is a compatible
|
||||
* Promise implementation.
|
||||
@@ -12460,6 +12514,11 @@ namespace ts {
|
||||
* callable `then` signature.
|
||||
*/
|
||||
function checkAsyncFunctionReturnType(node: FunctionLikeDeclaration): Type {
|
||||
if (languageVersion >= ScriptTarget.ES6) {
|
||||
const returnType = getTypeFromTypeNode(node.type);
|
||||
return checkCorrectPromiseType(returnType, node.type);
|
||||
}
|
||||
|
||||
const globalPromiseConstructorLikeType = getGlobalPromiseConstructorLikeType();
|
||||
if (globalPromiseConstructorLikeType === emptyObjectType) {
|
||||
// If we couldn't resolve the global PromiseConstructorLike type we cannot verify
|
||||
@@ -12675,6 +12734,7 @@ namespace ts {
|
||||
checkCollisionWithCapturedSuperVariable(node, node.name);
|
||||
checkCollisionWithCapturedThisVariable(node, node.name);
|
||||
checkCollisionWithRequireExportsInGeneratedCode(node, node.name);
|
||||
checkCollisionWithGlobalPromiseInGeneratedCode(node, node.name);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12859,6 +12919,25 @@ namespace ts {
|
||||
}
|
||||
}
|
||||
|
||||
function checkCollisionWithGlobalPromiseInGeneratedCode(node: Node, name: Identifier): void {
|
||||
if (!needCollisionCheckForIdentifier(node, name, "Promise")) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Uninstantiated modules shouldnt do this check
|
||||
if (node.kind === SyntaxKind.ModuleDeclaration && getModuleInstanceState(node) !== ModuleInstanceState.Instantiated) {
|
||||
return;
|
||||
}
|
||||
|
||||
// In case of variable declaration, node.parent is variable statement so look at the variable statement's parent
|
||||
const parent = getDeclarationContainer(node);
|
||||
if (parent.kind === SyntaxKind.SourceFile && isExternalOrCommonJsModule(<SourceFile>parent) && parent.flags & NodeFlags.HasAsyncFunctions) {
|
||||
// If the declaration happens to be in external module, report error that Promise is a reserved identifier.
|
||||
error(name, Diagnostics.Duplicate_identifier_0_Compiler_reserves_name_1_in_top_level_scope_of_a_module_containing_async_functions,
|
||||
declarationNameToString(name), declarationNameToString(name));
|
||||
}
|
||||
}
|
||||
|
||||
function checkVarDeclaredNamesNotShadowed(node: VariableDeclaration | BindingElement) {
|
||||
// - ScriptBody : StatementList
|
||||
// It is a Syntax Error if any element of the LexicallyDeclaredNames of StatementList
|
||||
@@ -13037,6 +13116,7 @@ namespace ts {
|
||||
checkCollisionWithCapturedSuperVariable(node, <Identifier>node.name);
|
||||
checkCollisionWithCapturedThisVariable(node, <Identifier>node.name);
|
||||
checkCollisionWithRequireExportsInGeneratedCode(node, <Identifier>node.name);
|
||||
checkCollisionWithGlobalPromiseInGeneratedCode(node, <Identifier>node.name);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13803,6 +13883,7 @@ namespace ts {
|
||||
checkTypeNameIsReserved(node.name, Diagnostics.Class_name_cannot_be_0);
|
||||
checkCollisionWithCapturedThisVariable(node, node.name);
|
||||
checkCollisionWithRequireExportsInGeneratedCode(node, node.name);
|
||||
checkCollisionWithGlobalPromiseInGeneratedCode(node, node.name);
|
||||
}
|
||||
checkTypeParameters(node.typeParameters);
|
||||
checkExportsOnMergedDeclarations(node);
|
||||
@@ -14309,6 +14390,7 @@ namespace ts {
|
||||
checkTypeNameIsReserved(node.name, Diagnostics.Enum_name_cannot_be_0);
|
||||
checkCollisionWithCapturedThisVariable(node, node.name);
|
||||
checkCollisionWithRequireExportsInGeneratedCode(node, node.name);
|
||||
checkCollisionWithGlobalPromiseInGeneratedCode(node, node.name);
|
||||
checkExportsOnMergedDeclarations(node);
|
||||
|
||||
computeEnumMemberValues(node);
|
||||
@@ -14413,6 +14495,7 @@ namespace ts {
|
||||
|
||||
checkCollisionWithCapturedThisVariable(node, node.name);
|
||||
checkCollisionWithRequireExportsInGeneratedCode(node, node.name);
|
||||
checkCollisionWithGlobalPromiseInGeneratedCode(node, node.name);
|
||||
checkExportsOnMergedDeclarations(node);
|
||||
const symbol = getSymbolOfNode(node);
|
||||
|
||||
@@ -14605,6 +14688,7 @@ namespace ts {
|
||||
function checkImportBinding(node: ImportEqualsDeclaration | ImportClause | NamespaceImport | ImportSpecifier) {
|
||||
checkCollisionWithCapturedThisVariable(node, node.name);
|
||||
checkCollisionWithRequireExportsInGeneratedCode(node, node.name);
|
||||
checkCollisionWithGlobalPromiseInGeneratedCode(node, node.name);
|
||||
checkAliasSymbol(node);
|
||||
}
|
||||
|
||||
@@ -15217,6 +15301,20 @@ namespace ts {
|
||||
return getSymbolOfNode(entityName.parent);
|
||||
}
|
||||
|
||||
if (isInJavaScriptFile(entityName) && entityName.parent.kind === SyntaxKind.PropertyAccessExpression) {
|
||||
const specialPropertyAssignmentKind = getSpecialPropertyAssignmentKind(entityName.parent.parent);
|
||||
switch (specialPropertyAssignmentKind) {
|
||||
case SpecialPropertyAssignmentKind.ExportsProperty:
|
||||
case SpecialPropertyAssignmentKind.PrototypeProperty:
|
||||
return getSymbolOfNode(entityName.parent);
|
||||
case SpecialPropertyAssignmentKind.ThisProperty:
|
||||
case SpecialPropertyAssignmentKind.ModuleExports:
|
||||
return getSymbolOfNode(entityName.parent.parent);
|
||||
default:
|
||||
// Fall through if it is not a special property assignment
|
||||
}
|
||||
}
|
||||
|
||||
if (entityName.parent.kind === SyntaxKind.ExportAssignment) {
|
||||
return resolveEntityName(<Identifier>entityName,
|
||||
/*all meanings*/ SymbolFlags.Value | SymbolFlags.Type | SymbolFlags.Namespace | SymbolFlags.Alias);
|
||||
|
||||
@@ -637,18 +637,21 @@ namespace ts {
|
||||
}
|
||||
}
|
||||
|
||||
function emitClassMemberDeclarationFlags(node: Declaration) {
|
||||
if (node.flags & NodeFlags.Private) {
|
||||
function emitClassMemberDeclarationFlags(flags: NodeFlags) {
|
||||
if (flags & NodeFlags.Private) {
|
||||
write("private ");
|
||||
}
|
||||
else if (node.flags & NodeFlags.Protected) {
|
||||
else if (flags & NodeFlags.Protected) {
|
||||
write("protected ");
|
||||
}
|
||||
|
||||
if (node.flags & NodeFlags.Static) {
|
||||
if (flags & NodeFlags.Static) {
|
||||
write("static ");
|
||||
}
|
||||
if (node.flags & NodeFlags.Abstract) {
|
||||
if (flags & NodeFlags.Readonly) {
|
||||
write("readonly ");
|
||||
}
|
||||
if (flags & NodeFlags.Abstract) {
|
||||
write("abstract ");
|
||||
}
|
||||
}
|
||||
@@ -1074,7 +1077,7 @@ namespace ts {
|
||||
}
|
||||
|
||||
emitJsDocComments(node);
|
||||
emitClassMemberDeclarationFlags(node);
|
||||
emitClassMemberDeclarationFlags(node.flags);
|
||||
emitVariableDeclaration(<VariableDeclaration>node);
|
||||
write(";");
|
||||
writeLine();
|
||||
@@ -1227,7 +1230,7 @@ namespace ts {
|
||||
if (node === accessors.firstAccessor) {
|
||||
emitJsDocComments(accessors.getAccessor);
|
||||
emitJsDocComments(accessors.setAccessor);
|
||||
emitClassMemberDeclarationFlags(node);
|
||||
emitClassMemberDeclarationFlags(node.flags | (accessors.setAccessor ? 0 : NodeFlags.Readonly));
|
||||
writeTextOfNode(currentText, node.name);
|
||||
if (!(node.flags & NodeFlags.Private)) {
|
||||
accessorWithTypeAnnotation = node;
|
||||
@@ -1314,7 +1317,7 @@ namespace ts {
|
||||
emitModuleElementDeclarationFlags(node);
|
||||
}
|
||||
else if (node.kind === SyntaxKind.MethodDeclaration) {
|
||||
emitClassMemberDeclarationFlags(node);
|
||||
emitClassMemberDeclarationFlags(node.flags);
|
||||
}
|
||||
if (node.kind === SyntaxKind.FunctionDeclaration) {
|
||||
write("function ");
|
||||
@@ -1342,15 +1345,17 @@ namespace ts {
|
||||
const prevEnclosingDeclaration = enclosingDeclaration;
|
||||
enclosingDeclaration = node;
|
||||
|
||||
// Construct signature or constructor type write new Signature
|
||||
if (node.kind === SyntaxKind.ConstructSignature || node.kind === SyntaxKind.ConstructorType) {
|
||||
write("new ");
|
||||
}
|
||||
emitTypeParameters(node.typeParameters);
|
||||
if (node.kind === SyntaxKind.IndexSignature) {
|
||||
// Index signature can have readonly modifier
|
||||
emitClassMemberDeclarationFlags(node.flags);
|
||||
write("[");
|
||||
}
|
||||
else {
|
||||
// Construct signature or constructor type write new Signature
|
||||
if (node.kind === SyntaxKind.ConstructSignature || node.kind === SyntaxKind.ConstructorType) {
|
||||
write("new ");
|
||||
}
|
||||
emitTypeParameters(node.typeParameters);
|
||||
write("(");
|
||||
}
|
||||
|
||||
|
||||
@@ -199,6 +199,10 @@
|
||||
"category": "Error",
|
||||
"code": 1063
|
||||
},
|
||||
"The return type of an async function or method must be the global Promise<T> type.": {
|
||||
"category": "Error",
|
||||
"code": 1064
|
||||
},
|
||||
"In ambient enum declarations member initializer must be constant expression.": {
|
||||
"category": "Error",
|
||||
"code": 1066
|
||||
@@ -802,7 +806,7 @@
|
||||
"A decorator can only decorate a method implementation, not an overload.": {
|
||||
"category": "Error",
|
||||
"code": 1249
|
||||
},
|
||||
},
|
||||
"'with' statements are not allowed in an async function block.": {
|
||||
"category": "Error",
|
||||
"code": 1300
|
||||
@@ -1695,6 +1699,10 @@
|
||||
"category": "Error",
|
||||
"code": 2528
|
||||
},
|
||||
"Duplicate identifier '{0}'. Compiler reserves name '{1}' in top level scope of a module containing async functions.": {
|
||||
"category": "Error",
|
||||
"code": 2529
|
||||
},
|
||||
"JSX element attributes type '{0}' may not be a union type.": {
|
||||
"category": "Error",
|
||||
"code": 2600
|
||||
@@ -2763,5 +2771,9 @@
|
||||
"JSX element '{0}' has no corresponding closing tag.": {
|
||||
"category": "Error",
|
||||
"code": 17008
|
||||
},
|
||||
"'super' must be called before accessing 'this' in the constructor of a derived class.": {
|
||||
"category": "Error",
|
||||
"code": 17009
|
||||
}
|
||||
}
|
||||
|
||||
+23
-8
@@ -320,7 +320,7 @@ var __param = (this && this.__param) || function (paramIndex, decorator) {
|
||||
|
||||
const awaiterHelper = `
|
||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
return new P(function (resolve, reject) {
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
|
||||
@@ -477,6 +477,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
||||
// =>
|
||||
// var x;... exporter("x", x = 1)
|
||||
let exportFunctionForFile: string;
|
||||
let contextObjectForFile: string;
|
||||
|
||||
let generatedNameSet: Map<string>;
|
||||
let nodeToGeneratedName: string[];
|
||||
@@ -557,6 +558,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
||||
currentText = undefined;
|
||||
currentLineMap = undefined;
|
||||
exportFunctionForFile = undefined;
|
||||
contextObjectForFile = undefined;
|
||||
generatedNameSet = undefined;
|
||||
nodeToGeneratedName = undefined;
|
||||
computedPropertyNamesToGeneratedNames = undefined;
|
||||
@@ -585,6 +587,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
||||
currentText = sourceFile.text;
|
||||
currentLineMap = getLineStarts(sourceFile);
|
||||
exportFunctionForFile = undefined;
|
||||
contextObjectForFile = undefined;
|
||||
isEs6Module = sourceFile.symbol && sourceFile.symbol.exports && !!sourceFile.symbol.exports["___esModule"];
|
||||
renamedDependencies = sourceFile.renamedDependencies;
|
||||
currentFileIdentifiers = sourceFile.identifiers;
|
||||
@@ -4561,11 +4564,11 @@ const _super = (function (geti, seti) {
|
||||
write(", void 0, ");
|
||||
}
|
||||
|
||||
if (promiseConstructor) {
|
||||
emitEntityNameAsExpression(promiseConstructor, /*useFallback*/ false);
|
||||
if (languageVersion >= ScriptTarget.ES6 || !promiseConstructor) {
|
||||
write("void 0");
|
||||
}
|
||||
else {
|
||||
write("Promise");
|
||||
emitEntityNameAsExpression(promiseConstructor, /*useFallback*/ false);
|
||||
}
|
||||
|
||||
// Emit the call to __awaiter.
|
||||
@@ -7058,6 +7061,7 @@ const _super = (function (geti, seti) {
|
||||
Debug.assert(!exportFunctionForFile);
|
||||
// make sure that name of 'exports' function does not conflict with existing identifiers
|
||||
exportFunctionForFile = makeUniqueName("exports");
|
||||
contextObjectForFile = makeUniqueName("context");
|
||||
writeLine();
|
||||
write("System.register(");
|
||||
writeModuleName(node, emitRelativePathAsModuleName);
|
||||
@@ -7068,14 +7072,22 @@ const _super = (function (geti, seti) {
|
||||
|
||||
for (let i = 0; i < externalImports.length; i++) {
|
||||
const text = getExternalModuleNameText(externalImports[i], emitRelativePathAsModuleName);
|
||||
if (hasProperty(groupIndices, text)) {
|
||||
if (text === undefined) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// text should be quoted string
|
||||
// for deduplication purposes in key remove leading and trailing quotes so 'a' and "a" will be considered the same
|
||||
const key = text.substr(1, text.length - 2);
|
||||
|
||||
if (hasProperty(groupIndices, key)) {
|
||||
// deduplicate/group entries in dependency list by the dependency name
|
||||
const groupIndex = groupIndices[text];
|
||||
const groupIndex = groupIndices[key];
|
||||
dependencyGroups[groupIndex].push(externalImports[i]);
|
||||
continue;
|
||||
}
|
||||
else {
|
||||
groupIndices[text] = dependencyGroups.length;
|
||||
groupIndices[key] = dependencyGroups.length;
|
||||
dependencyGroups.push([externalImports[i]]);
|
||||
}
|
||||
|
||||
@@ -7085,10 +7097,13 @@ const _super = (function (geti, seti) {
|
||||
|
||||
write(text);
|
||||
}
|
||||
write(`], function(${exportFunctionForFile}) {`);
|
||||
write(`], function(${exportFunctionForFile}, ${contextObjectForFile}) {`);
|
||||
writeLine();
|
||||
increaseIndent();
|
||||
const startIndex = emitDirectivePrologues(node.statements, /*startWithNewLine*/ true, /*ensureUseStrict*/ true);
|
||||
writeLine();
|
||||
write(`var __moduleName = ${contextObjectForFile} && ${contextObjectForFile}.id;`);
|
||||
writeLine();
|
||||
emitEmitHelpers(node);
|
||||
emitCaptureThisForNodeIfNecessary(node);
|
||||
emitSystemModuleBody(node, dependencyGroups, startIndex);
|
||||
|
||||
@@ -4017,7 +4017,7 @@ namespace ts {
|
||||
setDecoratorContext(/*val*/ true);
|
||||
}
|
||||
|
||||
return finishNode(node);
|
||||
return addJSDocComment(finishNode(node));
|
||||
}
|
||||
|
||||
function parseOptionalIdentifier() {
|
||||
@@ -4301,13 +4301,13 @@ namespace ts {
|
||||
const labeledStatement = <LabeledStatement>createNode(SyntaxKind.LabeledStatement, fullStart);
|
||||
labeledStatement.label = <Identifier>expression;
|
||||
labeledStatement.statement = parseStatement();
|
||||
return finishNode(labeledStatement);
|
||||
return addJSDocComment(finishNode(labeledStatement));
|
||||
}
|
||||
else {
|
||||
const expressionStatement = <ExpressionStatement>createNode(SyntaxKind.ExpressionStatement, fullStart);
|
||||
expressionStatement.expression = expression;
|
||||
parseSemicolon();
|
||||
return finishNode(expressionStatement);
|
||||
return addJSDocComment(finishNode(expressionStatement));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1328,7 +1328,7 @@ namespace ts {
|
||||
}
|
||||
|
||||
function collectRequireCalls(node: Node): void {
|
||||
if (isRequireCall(node)) {
|
||||
if (isRequireCall(node, /*checkArgumentIsStringLiteral*/true)) {
|
||||
(imports || (imports = [])).push(<StringLiteral>(<CallExpression>node).arguments[0]);
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -2070,6 +2070,7 @@ namespace ts {
|
||||
LoopWithCapturedBlockScopedBinding = 0x00010000, // Loop that contains block scoped variable captured in closure
|
||||
CapturedBlockScopedBinding = 0x00020000, // Block-scoped binding that is captured in some function
|
||||
BlockScopedBindingInLoop = 0x00040000, // Block-scoped binding with declaration nested inside iteration statement
|
||||
HasSeenSuperCall = 0x00080000, // Set during the binding when encounter 'super'
|
||||
}
|
||||
|
||||
/* @internal */
|
||||
|
||||
@@ -1086,12 +1086,14 @@ namespace ts {
|
||||
* exactly one argument.
|
||||
* This function does not test if the node is in a JavaScript file or not.
|
||||
*/
|
||||
export function isRequireCall(expression: Node): expression is CallExpression {
|
||||
export function isRequireCall(expression: Node, checkArgumentIsStringLiteral: boolean): expression is CallExpression {
|
||||
// of the form 'require("name")'
|
||||
return expression.kind === SyntaxKind.CallExpression &&
|
||||
(<CallExpression>expression).expression.kind === SyntaxKind.Identifier &&
|
||||
(<Identifier>(<CallExpression>expression).expression).text === "require" &&
|
||||
(<CallExpression>expression).arguments.length === 1;
|
||||
const isRequire = expression.kind === SyntaxKind.CallExpression &&
|
||||
(<CallExpression>expression).expression.kind === SyntaxKind.Identifier &&
|
||||
(<Identifier>(<CallExpression>expression).expression).text === "require" &&
|
||||
(<CallExpression>expression).arguments.length === 1;
|
||||
|
||||
return isRequire && (!checkArgumentIsStringLiteral || (<CallExpression>expression).arguments[0].kind === SyntaxKind.StringLiteral);
|
||||
}
|
||||
|
||||
/// Given a BinaryExpression, returns SpecialPropertyAssignmentKind for the various kinds of property
|
||||
@@ -1205,7 +1207,19 @@ namespace ts {
|
||||
node.parent.parent.parent.kind === SyntaxKind.VariableStatement;
|
||||
|
||||
const variableStatementNode = isInitializerOfVariableDeclarationInStatement ? node.parent.parent.parent : undefined;
|
||||
return variableStatementNode && variableStatementNode.jsDocComment;
|
||||
if (variableStatementNode) {
|
||||
return variableStatementNode.jsDocComment;
|
||||
}
|
||||
|
||||
// Also recognize when the node is the RHS of an assignment expression
|
||||
const isSourceOfAssignmentExpressionStatement =
|
||||
node.parent && node.parent.parent &&
|
||||
node.parent.kind === SyntaxKind.BinaryExpression &&
|
||||
(node.parent as BinaryExpression).operatorToken.kind === SyntaxKind.EqualsToken &&
|
||||
node.parent.parent.kind === SyntaxKind.ExpressionStatement;
|
||||
if (isSourceOfAssignmentExpressionStatement) {
|
||||
return node.parent.parent.jsDocComment;
|
||||
}
|
||||
}
|
||||
|
||||
return undefined;
|
||||
|
||||
@@ -17,8 +17,9 @@ module M {
|
||||
|
||||
|
||||
//// [aliasesInSystemModule1.js]
|
||||
System.register(['foo'], function(exports_1) {
|
||||
System.register(['foo'], function(exports_1, context_1) {
|
||||
"use strict";
|
||||
var __moduleName = context_1 && context_1.id;
|
||||
var alias;
|
||||
var cls, cls2, x, y, z, M;
|
||||
return {
|
||||
|
||||
@@ -16,8 +16,9 @@ module M {
|
||||
}
|
||||
|
||||
//// [aliasesInSystemModule2.js]
|
||||
System.register(["foo"], function(exports_1) {
|
||||
System.register(["foo"], function(exports_1, context_1) {
|
||||
"use strict";
|
||||
var __moduleName = context_1 && context_1.id;
|
||||
var foo_1;
|
||||
var cls, cls2, x, y, z, M;
|
||||
return {
|
||||
|
||||
@@ -10,8 +10,9 @@ export class Foo {
|
||||
}
|
||||
|
||||
//// [b.js]
|
||||
System.register([], function(exports_1) {
|
||||
System.register([], function(exports_1, context_1) {
|
||||
"use strict";
|
||||
var __moduleName = context_1 && context_1.id;
|
||||
var Foo;
|
||||
return {
|
||||
setters:[],
|
||||
@@ -26,8 +27,9 @@ System.register([], function(exports_1) {
|
||||
}
|
||||
});
|
||||
//// [a.js]
|
||||
System.register(["./b"], function(exports_1) {
|
||||
System.register(["./b"], function(exports_1, context_1) {
|
||||
"use strict";
|
||||
var __moduleName = context_1 && context_1.id;
|
||||
var b_1;
|
||||
var x;
|
||||
return {
|
||||
|
||||
@@ -11,8 +11,9 @@ export class Foo {
|
||||
|
||||
|
||||
//// [b.js]
|
||||
System.register([], function(exports_1) {
|
||||
System.register([], function(exports_1, context_1) {
|
||||
"use strict";
|
||||
var __moduleName = context_1 && context_1.id;
|
||||
var Foo;
|
||||
return {
|
||||
setters:[],
|
||||
@@ -27,8 +28,9 @@ System.register([], function(exports_1) {
|
||||
}
|
||||
});
|
||||
//// [a.js]
|
||||
System.register(["./b"], function(exports_1) {
|
||||
System.register(["./b"], function(exports_1, context_1) {
|
||||
"use strict";
|
||||
var __moduleName = context_1 && context_1.id;
|
||||
var b_1;
|
||||
var x;
|
||||
return {
|
||||
|
||||
@@ -12,8 +12,9 @@ export var x = new Foo();
|
||||
|
||||
|
||||
//// [a.js]
|
||||
System.register(["./b"], function(exports_1) {
|
||||
System.register(["./b"], function(exports_1, context_1) {
|
||||
"use strict";
|
||||
var __moduleName = context_1 && context_1.id;
|
||||
var b_1;
|
||||
var x;
|
||||
return {
|
||||
|
||||
@@ -12,8 +12,9 @@ export var x = new Foo();
|
||||
|
||||
|
||||
//// [a.js]
|
||||
System.register(["./b"], function(exports_1) {
|
||||
System.register(["./b"], function(exports_1, context_1) {
|
||||
"use strict";
|
||||
var __moduleName = context_1 && context_1.id;
|
||||
var b_1;
|
||||
var x;
|
||||
return {
|
||||
|
||||
@@ -7,8 +7,9 @@ export default class {}
|
||||
export default function() {}
|
||||
|
||||
//// [a.js]
|
||||
System.register([], function(exports_1) {
|
||||
System.register([], function(exports_1, context_1) {
|
||||
"use strict";
|
||||
var __moduleName = context_1 && context_1.id;
|
||||
var default_1;
|
||||
return {
|
||||
setters:[],
|
||||
@@ -20,8 +21,9 @@ System.register([], function(exports_1) {
|
||||
}
|
||||
});
|
||||
//// [b.js]
|
||||
System.register([], function(exports_1) {
|
||||
System.register([], function(exports_1, context_1) {
|
||||
"use strict";
|
||||
var __moduleName = context_1 && context_1.id;
|
||||
function default_1() { }
|
||||
exports_1("default", default_1);
|
||||
return {
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
tests/cases/conformance/async/es6/asyncAliasReturnType_es6.ts(3,16): error TS1055: Type 'PromiseAlias' is not a valid async function return type.
|
||||
|
||||
|
||||
==== tests/cases/conformance/async/es6/asyncAliasReturnType_es6.ts (1 errors) ====
|
||||
type PromiseAlias<T> = Promise<T>;
|
||||
|
||||
async function f(): PromiseAlias<void> {
|
||||
~
|
||||
!!! error TS1055: Type 'PromiseAlias' is not a valid async function return type.
|
||||
}
|
||||
@@ -6,6 +6,6 @@ async function f(): PromiseAlias<void> {
|
||||
|
||||
//// [asyncAliasReturnType_es6.js]
|
||||
function f() {
|
||||
return __awaiter(this, void 0, PromiseAlias, function* () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
});
|
||||
}
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
=== tests/cases/conformance/async/es6/asyncAliasReturnType_es6.ts ===
|
||||
type PromiseAlias<T> = Promise<T>;
|
||||
>PromiseAlias : Symbol(PromiseAlias, Decl(asyncAliasReturnType_es6.ts, 0, 0))
|
||||
>T : Symbol(T, Decl(asyncAliasReturnType_es6.ts, 0, 18))
|
||||
>Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --))
|
||||
>T : Symbol(T, Decl(asyncAliasReturnType_es6.ts, 0, 18))
|
||||
|
||||
async function f(): PromiseAlias<void> {
|
||||
>f : Symbol(f, Decl(asyncAliasReturnType_es6.ts, 0, 34))
|
||||
>PromiseAlias : Symbol(PromiseAlias, Decl(asyncAliasReturnType_es6.ts, 0, 0))
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
=== tests/cases/conformance/async/es6/asyncAliasReturnType_es6.ts ===
|
||||
type PromiseAlias<T> = Promise<T>;
|
||||
>PromiseAlias : Promise<T>
|
||||
>T : T
|
||||
>Promise : Promise<T>
|
||||
>T : T
|
||||
|
||||
async function f(): PromiseAlias<void> {
|
||||
>f : () => Promise<void>
|
||||
>PromiseAlias : Promise<T>
|
||||
}
|
||||
@@ -4,5 +4,5 @@ var foo = async (): Promise<void> => {
|
||||
};
|
||||
|
||||
//// [asyncArrowFunction1_es6.js]
|
||||
var foo = () => __awaiter(this, void 0, Promise, function* () {
|
||||
var foo = () => __awaiter(this, void 0, void 0, function* () {
|
||||
});
|
||||
|
||||
@@ -4,5 +4,5 @@ var foo = async (a = await): Promise<void> => {
|
||||
}
|
||||
|
||||
//// [asyncArrowFunction6_es6.js]
|
||||
var foo = (a = yield ) => __awaiter(this, void 0, Promise, function* () {
|
||||
var foo = (a = yield ) => __awaiter(this, void 0, void 0, function* () {
|
||||
});
|
||||
|
||||
@@ -7,8 +7,8 @@ var bar = async (): Promise<void> => {
|
||||
}
|
||||
|
||||
//// [asyncArrowFunction7_es6.js]
|
||||
var bar = () => __awaiter(this, void 0, Promise, function* () {
|
||||
var bar = () => __awaiter(this, void 0, void 0, function* () {
|
||||
// 'await' here is an identifier, and not an await expression.
|
||||
var foo = (a = yield ) => __awaiter(this, void 0, Promise, function* () {
|
||||
var foo = (a = yield ) => __awaiter(this, void 0, void 0, function* () {
|
||||
});
|
||||
});
|
||||
|
||||
@@ -5,6 +5,6 @@ var foo = async (): Promise<void> => {
|
||||
}
|
||||
|
||||
//// [asyncArrowFunction8_es6.js]
|
||||
var foo = () => __awaiter(this, void 0, Promise, function* () {
|
||||
var foo = () => __awaiter(this, void 0, void 0, function* () {
|
||||
var v = { [yield ]: foo };
|
||||
});
|
||||
|
||||
@@ -11,6 +11,6 @@ class C {
|
||||
class C {
|
||||
method() {
|
||||
function other() { }
|
||||
var fn = () => __awaiter(this, arguments, Promise, function* () { return yield other.apply(this, arguments); });
|
||||
var fn = () => __awaiter(this, arguments, void 0, function* () { return yield other.apply(this, arguments); });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,6 @@ class C {
|
||||
//// [asyncArrowFunctionCapturesThis_es6.js]
|
||||
class C {
|
||||
method() {
|
||||
var fn = () => __awaiter(this, void 0, Promise, function* () { return yield this; });
|
||||
var fn = () => __awaiter(this, void 0, void 0, function* () { return yield this; });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ module M {
|
||||
|
||||
//// [asyncAwaitIsolatedModules_es6.js]
|
||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
return new P(function (resolve, reject) {
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
|
||||
@@ -49,65 +49,65 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
||||
});
|
||||
};
|
||||
function f0() {
|
||||
return __awaiter(this, void 0, Promise, function* () { });
|
||||
return __awaiter(this, void 0, void 0, function* () { });
|
||||
}
|
||||
function f1() {
|
||||
return __awaiter(this, void 0, Promise, function* () { });
|
||||
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, Promise, function* () { });
|
||||
return __awaiter(this, void 0, void 0, function* () { });
|
||||
};
|
||||
let f5 = function () {
|
||||
return __awaiter(this, void 0, Promise, 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, Promise, function* () { });
|
||||
let f8 = () => __awaiter(this, void 0, Promise, function* () { });
|
||||
let f9 = () => __awaiter(this, void 0, MyPromise, function* () { });
|
||||
let f10 = () => __awaiter(this, void 0, Promise, function* () { return p; });
|
||||
let f11 = () => __awaiter(this, void 0, Promise, function* () { return mp; });
|
||||
let f12 = () => __awaiter(this, void 0, Promise, function* () { return mp; });
|
||||
let f13 = () => __awaiter(this, void 0, MyPromise, function* () { return p; });
|
||||
let f7 = () => __awaiter(this, void 0, void 0, function* () { });
|
||||
let f8 = () => __awaiter(this, void 0, void 0, 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, void 0, function* () { return p; });
|
||||
let o = {
|
||||
m1() {
|
||||
return __awaiter(this, void 0, Promise, function* () { });
|
||||
return __awaiter(this, void 0, void 0, function* () { });
|
||||
},
|
||||
m2() {
|
||||
return __awaiter(this, void 0, Promise, function* () { });
|
||||
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 {
|
||||
m1() {
|
||||
return __awaiter(this, void 0, Promise, function* () { });
|
||||
return __awaiter(this, void 0, void 0, function* () { });
|
||||
}
|
||||
m2() {
|
||||
return __awaiter(this, void 0, Promise, function* () { });
|
||||
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, Promise, function* () { });
|
||||
return __awaiter(this, void 0, void 0, function* () { });
|
||||
}
|
||||
static m5() {
|
||||
return __awaiter(this, void 0, Promise, function* () { });
|
||||
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;
|
||||
(function (M) {
|
||||
function f1() {
|
||||
return __awaiter(this, void 0, Promise, function* () { });
|
||||
return __awaiter(this, void 0, void 0, function* () { });
|
||||
}
|
||||
M.f1 = f1;
|
||||
})(M || (M = {}));
|
||||
|
||||
@@ -41,7 +41,7 @@ module M {
|
||||
|
||||
//// [asyncAwait_es6.js]
|
||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
return new P(function (resolve, reject) {
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
|
||||
@@ -49,65 +49,65 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
||||
});
|
||||
};
|
||||
function f0() {
|
||||
return __awaiter(this, void 0, Promise, function* () { });
|
||||
return __awaiter(this, void 0, void 0, function* () { });
|
||||
}
|
||||
function f1() {
|
||||
return __awaiter(this, void 0, Promise, function* () { });
|
||||
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, Promise, function* () { });
|
||||
return __awaiter(this, void 0, void 0, function* () { });
|
||||
};
|
||||
let f5 = function () {
|
||||
return __awaiter(this, void 0, Promise, 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, Promise, function* () { });
|
||||
let f8 = () => __awaiter(this, void 0, Promise, function* () { });
|
||||
let f9 = () => __awaiter(this, void 0, MyPromise, function* () { });
|
||||
let f10 = () => __awaiter(this, void 0, Promise, function* () { return p; });
|
||||
let f11 = () => __awaiter(this, void 0, Promise, function* () { return mp; });
|
||||
let f12 = () => __awaiter(this, void 0, Promise, function* () { return mp; });
|
||||
let f13 = () => __awaiter(this, void 0, MyPromise, function* () { return p; });
|
||||
let f7 = () => __awaiter(this, void 0, void 0, function* () { });
|
||||
let f8 = () => __awaiter(this, void 0, void 0, 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, void 0, function* () { return p; });
|
||||
let o = {
|
||||
m1() {
|
||||
return __awaiter(this, void 0, Promise, function* () { });
|
||||
return __awaiter(this, void 0, void 0, function* () { });
|
||||
},
|
||||
m2() {
|
||||
return __awaiter(this, void 0, Promise, function* () { });
|
||||
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 {
|
||||
m1() {
|
||||
return __awaiter(this, void 0, Promise, function* () { });
|
||||
return __awaiter(this, void 0, void 0, function* () { });
|
||||
}
|
||||
m2() {
|
||||
return __awaiter(this, void 0, Promise, function* () { });
|
||||
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, Promise, function* () { });
|
||||
return __awaiter(this, void 0, void 0, function* () { });
|
||||
}
|
||||
static m5() {
|
||||
return __awaiter(this, void 0, Promise, function* () { });
|
||||
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;
|
||||
(function (M) {
|
||||
function f1() {
|
||||
return __awaiter(this, void 0, Promise, function* () { });
|
||||
return __awaiter(this, void 0, void 0, function* () { });
|
||||
}
|
||||
M.f1 = f1;
|
||||
})(M || (M = {}));
|
||||
|
||||
@@ -4,6 +4,6 @@ async function await(): Promise<void> {
|
||||
|
||||
//// [asyncFunctionDeclaration11_es6.js]
|
||||
function await() {
|
||||
return __awaiter(this, void 0, Promise, function* () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
});
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ async function foo(): Promise<void> {
|
||||
|
||||
//// [asyncFunctionDeclaration13_es6.js]
|
||||
function foo() {
|
||||
return __awaiter(this, void 0, Promise, function* () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
// Legal to use 'await' in a type context.
|
||||
var v;
|
||||
});
|
||||
|
||||
@@ -5,7 +5,7 @@ async function foo(): Promise<void> {
|
||||
|
||||
//// [asyncFunctionDeclaration14_es6.js]
|
||||
function foo() {
|
||||
return __awaiter(this, void 0, Promise, function* () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
return;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,12 +1,8 @@
|
||||
tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(6,16): error TS1055: Type '{}' is not a valid async function return type.
|
||||
tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(7,16): error TS1055: Type 'any' is not a valid async function return type.
|
||||
tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(8,16): error TS1055: Type 'number' is not a valid async function return type.
|
||||
tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(9,16): error TS1055: Type 'PromiseLike' is not a valid async function return type.
|
||||
tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(10,16): error TS1055: Type 'typeof Thenable' is not a valid async function return type.
|
||||
Type 'Thenable' is not assignable to type 'PromiseLike<any>'.
|
||||
Types of property 'then' are incompatible.
|
||||
Type '() => void' is not assignable to type '{ <TResult>(onfulfilled?: (value: any) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): PromiseLike<TResult>; <TResult>(onfulfilled?: (value: any) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => void): PromiseLike<TResult>; }'.
|
||||
Type 'void' is not assignable to type 'PromiseLike<any>'.
|
||||
tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(6,23): error TS1064: The return type of an async function or method must be the global Promise<T> type.
|
||||
tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(7,23): error TS1064: The return type of an async function or method must be the global Promise<T> type.
|
||||
tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(8,23): error TS1064: The return type of an async function or method must be the global Promise<T> type.
|
||||
tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(9,23): error TS1064: The return type of an async function or method must be the global Promise<T> type.
|
||||
tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(10,23): error TS1064: The return type of an async function or method must be the global Promise<T> type.
|
||||
tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(17,16): error TS1059: Return expression in async function does not have a valid callable 'then' member.
|
||||
tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration15_es6.ts(23,25): error TS1058: Operand for 'await' does not have a valid callable 'then' member.
|
||||
|
||||
@@ -18,24 +14,20 @@ tests/cases/conformance/async/es6/functionDeclarations/asyncFunctionDeclaration1
|
||||
declare let thenable: Thenable;
|
||||
async function fn1() { } // valid: Promise<void>
|
||||
async function fn2(): { } { } // error
|
||||
~~~
|
||||
!!! error TS1055: Type '{}' is not a valid async function return type.
|
||||
~~~
|
||||
!!! error TS1064: The return type of an async function or method must be the global Promise<T> type.
|
||||
async function fn3(): any { } // error
|
||||
~~~
|
||||
!!! error TS1055: Type 'any' is not a valid async function return type.
|
||||
~~~
|
||||
!!! error TS1064: The return type of an async function or method must be the global Promise<T> type.
|
||||
async function fn4(): number { } // error
|
||||
~~~
|
||||
!!! error TS1055: Type 'number' is not a valid async function return type.
|
||||
~~~~~~
|
||||
!!! error TS1064: The return type of an async function or method must be the global Promise<T> type.
|
||||
async function fn5(): PromiseLike<void> { } // error
|
||||
~~~
|
||||
!!! error TS1055: Type 'PromiseLike' is not a valid async function return type.
|
||||
~~~~~~~~~~~~~~~~~
|
||||
!!! error TS1064: The return type of an async function or method must be the global Promise<T> type.
|
||||
async function fn6(): Thenable { } // error
|
||||
~~~
|
||||
!!! error TS1055: Type 'typeof Thenable' is not a valid async function return type.
|
||||
!!! error TS1055: Type 'Thenable' is not assignable to type 'PromiseLike<any>'.
|
||||
!!! error TS1055: Types of property 'then' are incompatible.
|
||||
!!! error TS1055: Type '() => void' is not assignable to type '{ <TResult>(onfulfilled?: (value: any) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => TResult | PromiseLike<TResult>): PromiseLike<TResult>; <TResult>(onfulfilled?: (value: any) => TResult | PromiseLike<TResult>, onrejected?: (reason: any) => void): PromiseLike<TResult>; }'.
|
||||
!!! error TS1055: Type 'void' is not assignable to type 'PromiseLike<any>'.
|
||||
~~~~~~~~
|
||||
!!! error TS1064: The return type of an async function or method must be the global Promise<T> type.
|
||||
async function fn7() { return; } // valid: Promise<void>
|
||||
async function fn8() { return 1; } // valid: Promise<number>
|
||||
async function fn9() { return null; } // valid: Promise<any>
|
||||
|
||||
@@ -26,59 +26,59 @@ async function fn19() { await thenable; } // error
|
||||
|
||||
//// [asyncFunctionDeclaration15_es6.js]
|
||||
function fn1() {
|
||||
return __awaiter(this, void 0, Promise, function* () { });
|
||||
return __awaiter(this, void 0, void 0, function* () { });
|
||||
} // valid: Promise<void>
|
||||
function fn2() {
|
||||
return __awaiter(this, void 0, Promise, function* () { });
|
||||
return __awaiter(this, void 0, void 0, function* () { });
|
||||
} // error
|
||||
function fn3() {
|
||||
return __awaiter(this, void 0, Promise, function* () { });
|
||||
return __awaiter(this, void 0, void 0, function* () { });
|
||||
} // error
|
||||
function fn4() {
|
||||
return __awaiter(this, void 0, Promise, function* () { });
|
||||
return __awaiter(this, void 0, void 0, function* () { });
|
||||
} // error
|
||||
function fn5() {
|
||||
return __awaiter(this, void 0, PromiseLike, function* () { });
|
||||
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, Promise, function* () { return; });
|
||||
return __awaiter(this, void 0, void 0, function* () { return; });
|
||||
} // valid: Promise<void>
|
||||
function fn8() {
|
||||
return __awaiter(this, void 0, Promise, function* () { return 1; });
|
||||
return __awaiter(this, void 0, void 0, function* () { return 1; });
|
||||
} // valid: Promise<number>
|
||||
function fn9() {
|
||||
return __awaiter(this, void 0, Promise, function* () { return null; });
|
||||
return __awaiter(this, void 0, void 0, function* () { return null; });
|
||||
} // valid: Promise<any>
|
||||
function fn10() {
|
||||
return __awaiter(this, void 0, Promise, function* () { return undefined; });
|
||||
return __awaiter(this, void 0, void 0, function* () { return undefined; });
|
||||
} // valid: Promise<any>
|
||||
function fn11() {
|
||||
return __awaiter(this, void 0, Promise, function* () { return a; });
|
||||
return __awaiter(this, void 0, void 0, function* () { return a; });
|
||||
} // valid: Promise<any>
|
||||
function fn12() {
|
||||
return __awaiter(this, void 0, Promise, function* () { return obj; });
|
||||
return __awaiter(this, void 0, void 0, function* () { return obj; });
|
||||
} // valid: Promise<{ then: string; }>
|
||||
function fn13() {
|
||||
return __awaiter(this, void 0, Promise, function* () { return thenable; });
|
||||
return __awaiter(this, void 0, void 0, function* () { return thenable; });
|
||||
} // error
|
||||
function fn14() {
|
||||
return __awaiter(this, void 0, Promise, function* () { yield 1; });
|
||||
return __awaiter(this, void 0, void 0, function* () { yield 1; });
|
||||
} // valid: Promise<void>
|
||||
function fn15() {
|
||||
return __awaiter(this, void 0, Promise, function* () { yield null; });
|
||||
return __awaiter(this, void 0, void 0, function* () { yield null; });
|
||||
} // valid: Promise<void>
|
||||
function fn16() {
|
||||
return __awaiter(this, void 0, Promise, function* () { yield undefined; });
|
||||
return __awaiter(this, void 0, void 0, function* () { yield undefined; });
|
||||
} // valid: Promise<void>
|
||||
function fn17() {
|
||||
return __awaiter(this, void 0, Promise, function* () { yield a; });
|
||||
return __awaiter(this, void 0, void 0, function* () { yield a; });
|
||||
} // valid: Promise<void>
|
||||
function fn18() {
|
||||
return __awaiter(this, void 0, Promise, function* () { yield obj; });
|
||||
return __awaiter(this, void 0, void 0, function* () { yield obj; });
|
||||
} // valid: Promise<void>
|
||||
function fn19() {
|
||||
return __awaiter(this, void 0, Promise, function* () { yield thenable; });
|
||||
return __awaiter(this, void 0, void 0, function* () { yield thenable; });
|
||||
} // error
|
||||
|
||||
@@ -4,6 +4,6 @@ async function foo(): Promise<void> {
|
||||
|
||||
//// [asyncFunctionDeclaration1_es6.js]
|
||||
function foo() {
|
||||
return __awaiter(this, void 0, Promise, function* () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
});
|
||||
}
|
||||
|
||||
@@ -4,6 +4,6 @@ async function foo(a = await): Promise<void> {
|
||||
|
||||
//// [asyncFunctionDeclaration6_es6.js]
|
||||
function foo(a = yield ) {
|
||||
return __awaiter(this, void 0, Promise, function* () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
});
|
||||
}
|
||||
|
||||
@@ -7,10 +7,10 @@ async function bar(): Promise<void> {
|
||||
|
||||
//// [asyncFunctionDeclaration7_es6.js]
|
||||
function bar() {
|
||||
return __awaiter(this, void 0, Promise, function* () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
// 'await' here is an identifier, and not a yield expression.
|
||||
function foo(a = yield ) {
|
||||
return __awaiter(this, void 0, Promise, function* () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@@ -5,7 +5,7 @@ async function foo(): Promise<void> {
|
||||
|
||||
//// [asyncFunctionDeclaration9_es6.js]
|
||||
function foo() {
|
||||
return __awaiter(this, void 0, Promise, function* () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
var v = { [yield ]: foo };
|
||||
});
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ export const b = {
|
||||
|
||||
//// [b.js]
|
||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
return new P(function (resolve, reject) {
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
|
||||
@@ -26,13 +26,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
||||
};
|
||||
import { a } from './a';
|
||||
export const b = {
|
||||
f: () => __awaiter(this, void 0, Promise, function* () {
|
||||
f: () => __awaiter(this, void 0, void 0, function* () {
|
||||
yield a.f();
|
||||
})
|
||||
};
|
||||
//// [a.js]
|
||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
return new P(function (resolve, reject) {
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
|
||||
@@ -41,7 +41,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
||||
};
|
||||
import { b } from './b';
|
||||
export const a = {
|
||||
f: () => __awaiter(this, void 0, Promise, function* () {
|
||||
f: () => __awaiter(this, void 0, void 0, function* () {
|
||||
yield b.f();
|
||||
})
|
||||
};
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
tests/cases/conformance/async/es6/test.ts(3,25): error TS1064: The return type of an async function or method must be the global Promise<T> type.
|
||||
|
||||
|
||||
==== tests/cases/conformance/async/es6/task.ts (0 errors) ====
|
||||
export class Task<T> extends Promise<T> { }
|
||||
|
||||
==== tests/cases/conformance/async/es6/test.ts (1 errors) ====
|
||||
import { Task } from "./task";
|
||||
class Test {
|
||||
async example<T>(): Task<T> { return; }
|
||||
~~~~~~~
|
||||
!!! error TS1064: The return type of an async function or method must be the global Promise<T> type.
|
||||
}
|
||||
@@ -17,16 +17,15 @@ exports.Task = Task;
|
||||
//// [test.js]
|
||||
"use strict";
|
||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
return new P(function (resolve, reject) {
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
|
||||
step((generator = generator.apply(thisArg, _arguments)).next());
|
||||
});
|
||||
};
|
||||
const 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; });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
=== tests/cases/conformance/async/es6/task.ts ===
|
||||
export class Task<T> extends Promise<T> { }
|
||||
>Task : Symbol(Task, Decl(task.ts, 0, 0))
|
||||
>T : Symbol(T, Decl(task.ts, 0, 18))
|
||||
>Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --))
|
||||
>T : Symbol(T, Decl(task.ts, 0, 18))
|
||||
|
||||
=== tests/cases/conformance/async/es6/test.ts ===
|
||||
import { Task } from "./task";
|
||||
>Task : Symbol(Task, Decl(test.ts, 0, 8))
|
||||
|
||||
class Test {
|
||||
>Test : Symbol(Test, Decl(test.ts, 0, 30))
|
||||
|
||||
async example<T>(): Task<T> { return; }
|
||||
>example : Symbol(example, Decl(test.ts, 1, 12))
|
||||
>T : Symbol(T, Decl(test.ts, 2, 18))
|
||||
>Task : Symbol(Task, Decl(test.ts, 0, 8))
|
||||
>T : Symbol(T, Decl(test.ts, 2, 18))
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
=== tests/cases/conformance/async/es6/task.ts ===
|
||||
export class Task<T> extends Promise<T> { }
|
||||
>Task : Task<T>
|
||||
>T : T
|
||||
>Promise : Promise<T>
|
||||
>T : T
|
||||
|
||||
=== tests/cases/conformance/async/es6/test.ts ===
|
||||
import { Task } from "./task";
|
||||
>Task : typeof Task
|
||||
|
||||
class Test {
|
||||
>Test : Test
|
||||
|
||||
async example<T>(): Task<T> { return; }
|
||||
>example : <T>() => Task<T>
|
||||
>T : T
|
||||
>Task : Task<T>
|
||||
>T : T
|
||||
}
|
||||
@@ -59,7 +59,7 @@ class B extends A {
|
||||
// async method with only call/get on 'super' does not require a binding
|
||||
simple() {
|
||||
const _super = name => super[name];
|
||||
return __awaiter(this, void 0, Promise, function* () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
// call with property access
|
||||
_super("x").call(this);
|
||||
// call with element access
|
||||
@@ -76,7 +76,7 @@ class B extends A {
|
||||
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);
|
||||
return __awaiter(this, void 0, Promise, function* () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
const f = () => { };
|
||||
// call with property access
|
||||
_super("x").value.call(this);
|
||||
|
||||
@@ -7,7 +7,7 @@ function g() { }
|
||||
|
||||
//// [a.js]
|
||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||
return new P(function (resolve, reject) {
|
||||
return new (P || (P = Promise))(function (resolve, reject) {
|
||||
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||
function rejected(value) { try { step(generator.throw(value)); } catch (e) { reject(e); } }
|
||||
function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
|
||||
@@ -15,7 +15,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
||||
});
|
||||
};
|
||||
function f() {
|
||||
return __awaiter(this, void 0, Promise, function* () { });
|
||||
return __awaiter(this, void 0, void 0, function* () { });
|
||||
}
|
||||
//// [b.js]
|
||||
function g() { }
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
tests/cases/conformance/async/es6/asyncQualifiedReturnType_es6.ts(6,21): error TS1064: The return type of an async function or method must be the global Promise<T> type.
|
||||
|
||||
|
||||
==== tests/cases/conformance/async/es6/asyncQualifiedReturnType_es6.ts (1 errors) ====
|
||||
namespace X {
|
||||
export class MyPromise<T> extends Promise<T> {
|
||||
}
|
||||
}
|
||||
|
||||
async function f(): X.MyPromise<void> {
|
||||
~~~~~~~~~~~~~~~~~
|
||||
!!! error TS1064: The return type of an async function or method must be the global Promise<T> type.
|
||||
}
|
||||
@@ -15,6 +15,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* () {
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
=== tests/cases/conformance/async/es6/asyncQualifiedReturnType_es6.ts ===
|
||||
namespace X {
|
||||
>X : Symbol(X, Decl(asyncQualifiedReturnType_es6.ts, 0, 0))
|
||||
|
||||
export class MyPromise<T> extends Promise<T> {
|
||||
>MyPromise : Symbol(MyPromise, Decl(asyncQualifiedReturnType_es6.ts, 0, 13))
|
||||
>T : Symbol(T, Decl(asyncQualifiedReturnType_es6.ts, 1, 27))
|
||||
>Promise : Symbol(Promise, Decl(lib.d.ts, --, --), Decl(lib.d.ts, --, --))
|
||||
>T : Symbol(T, Decl(asyncQualifiedReturnType_es6.ts, 1, 27))
|
||||
}
|
||||
}
|
||||
|
||||
async function f(): X.MyPromise<void> {
|
||||
>f : Symbol(f, Decl(asyncQualifiedReturnType_es6.ts, 3, 1))
|
||||
>X : Symbol(X, Decl(asyncQualifiedReturnType_es6.ts, 0, 0))
|
||||
>MyPromise : Symbol(X.MyPromise, Decl(asyncQualifiedReturnType_es6.ts, 0, 13))
|
||||
}
|
||||
@@ -1,17 +0,0 @@
|
||||
=== tests/cases/conformance/async/es6/asyncQualifiedReturnType_es6.ts ===
|
||||
namespace X {
|
||||
>X : typeof X
|
||||
|
||||
export class MyPromise<T> extends Promise<T> {
|
||||
>MyPromise : MyPromise<T>
|
||||
>T : T
|
||||
>Promise : Promise<T>
|
||||
>T : T
|
||||
}
|
||||
}
|
||||
|
||||
async function f(): X.MyPromise<void> {
|
||||
>f : () => X.MyPromise<void>
|
||||
>X : any
|
||||
>MyPromise : X.MyPromise<T>
|
||||
}
|
||||
@@ -9,7 +9,7 @@ async function func(): Promise<void> {
|
||||
|
||||
//// [awaitBinaryExpression1_es6.js]
|
||||
function func() {
|
||||
return __awaiter(this, void 0, Promise, function* () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
"before";
|
||||
var b = (yield p) || a;
|
||||
"after";
|
||||
|
||||
@@ -9,7 +9,7 @@ async function func(): Promise<void> {
|
||||
|
||||
//// [awaitBinaryExpression2_es6.js]
|
||||
function func() {
|
||||
return __awaiter(this, void 0, Promise, function* () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
"before";
|
||||
var b = (yield p) && a;
|
||||
"after";
|
||||
|
||||
@@ -9,7 +9,7 @@ async function func(): Promise<void> {
|
||||
|
||||
//// [awaitBinaryExpression3_es6.js]
|
||||
function func() {
|
||||
return __awaiter(this, void 0, Promise, function* () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
"before";
|
||||
var b = (yield p) + a;
|
||||
"after";
|
||||
|
||||
@@ -9,7 +9,7 @@ async function func(): Promise<void> {
|
||||
|
||||
//// [awaitBinaryExpression4_es6.js]
|
||||
function func() {
|
||||
return __awaiter(this, void 0, Promise, function* () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
"before";
|
||||
var b = yield p, a;
|
||||
"after";
|
||||
|
||||
@@ -10,7 +10,7 @@ async function func(): Promise<void> {
|
||||
|
||||
//// [awaitBinaryExpression5_es6.js]
|
||||
function func() {
|
||||
return __awaiter(this, void 0, Promise, function* () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
"before";
|
||||
var o;
|
||||
o.a = yield p;
|
||||
|
||||
@@ -13,7 +13,7 @@ async function func(): Promise<void> {
|
||||
|
||||
//// [awaitCallExpression1_es6.js]
|
||||
function func() {
|
||||
return __awaiter(this, void 0, Promise, function* () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
"before";
|
||||
var b = fn(a, a, a);
|
||||
"after";
|
||||
|
||||
@@ -13,7 +13,7 @@ async function func(): Promise<void> {
|
||||
|
||||
//// [awaitCallExpression2_es6.js]
|
||||
function func() {
|
||||
return __awaiter(this, void 0, Promise, function* () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
"before";
|
||||
var b = fn(yield p, a, a);
|
||||
"after";
|
||||
|
||||
@@ -13,7 +13,7 @@ async function func(): Promise<void> {
|
||||
|
||||
//// [awaitCallExpression3_es6.js]
|
||||
function func() {
|
||||
return __awaiter(this, void 0, Promise, function* () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
"before";
|
||||
var b = fn(a, yield p, a);
|
||||
"after";
|
||||
|
||||
@@ -13,7 +13,7 @@ async function func(): Promise<void> {
|
||||
|
||||
//// [awaitCallExpression4_es6.js]
|
||||
function func() {
|
||||
return __awaiter(this, void 0, Promise, function* () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
"before";
|
||||
var b = (yield pfn)(a, a, a);
|
||||
"after";
|
||||
|
||||
@@ -13,7 +13,7 @@ async function func(): Promise<void> {
|
||||
|
||||
//// [awaitCallExpression5_es6.js]
|
||||
function func() {
|
||||
return __awaiter(this, void 0, Promise, function* () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
"before";
|
||||
var b = o.fn(a, a, a);
|
||||
"after";
|
||||
|
||||
@@ -13,7 +13,7 @@ async function func(): Promise<void> {
|
||||
|
||||
//// [awaitCallExpression6_es6.js]
|
||||
function func() {
|
||||
return __awaiter(this, void 0, Promise, function* () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
"before";
|
||||
var b = o.fn(yield p, a, a);
|
||||
"after";
|
||||
|
||||
@@ -13,7 +13,7 @@ async function func(): Promise<void> {
|
||||
|
||||
//// [awaitCallExpression7_es6.js]
|
||||
function func() {
|
||||
return __awaiter(this, void 0, Promise, function* () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
"before";
|
||||
var b = o.fn(a, yield p, a);
|
||||
"after";
|
||||
|
||||
@@ -13,7 +13,7 @@ async function func(): Promise<void> {
|
||||
|
||||
//// [awaitCallExpression8_es6.js]
|
||||
function func() {
|
||||
return __awaiter(this, void 0, Promise, function* () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
"before";
|
||||
var b = (yield po).fn(a, a, a);
|
||||
"after";
|
||||
|
||||
@@ -14,7 +14,7 @@ async function f() {
|
||||
|
||||
//// [awaitUnion_es6.js]
|
||||
function f() {
|
||||
return __awaiter(this, void 0, Promise, function* () {
|
||||
return __awaiter(this, void 0, void 0, function* () {
|
||||
let await_a = yield a;
|
||||
let await_b = yield b;
|
||||
let await_c = yield c;
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
tests/cases/compiler/baseCheck.ts(9,18): error TS2304: Cannot find name 'loc'.
|
||||
tests/cases/compiler/baseCheck.ts(17,53): error TS2346: Supplied parameters do not match any signature of call target.
|
||||
tests/cases/compiler/baseCheck.ts(17,59): error TS2332: 'this' cannot be referenced in current location.
|
||||
tests/cases/compiler/baseCheck.ts(18,62): error TS2332: 'this' cannot be referenced in current location.
|
||||
tests/cases/compiler/baseCheck.ts(17,59): error TS17009: 'super' must be called before accessing 'this' in the constructor of a derived class.
|
||||
tests/cases/compiler/baseCheck.ts(18,62): error TS17009: 'super' must be called before accessing 'this' in the constructor of a derived class.
|
||||
tests/cases/compiler/baseCheck.ts(19,59): error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.
|
||||
tests/cases/compiler/baseCheck.ts(19,68): error TS2332: 'this' cannot be referenced in current location.
|
||||
tests/cases/compiler/baseCheck.ts(19,68): error TS17009: 'super' must be called before accessing 'this' in the constructor of a derived class.
|
||||
tests/cases/compiler/baseCheck.ts(22,9): error TS2304: Cannot find name 'x'.
|
||||
tests/cases/compiler/baseCheck.ts(23,7): error TS2304: Cannot find name 'x'.
|
||||
tests/cases/compiler/baseCheck.ts(26,9): error TS2304: Cannot find name 'x'.
|
||||
@@ -32,15 +32,15 @@ tests/cases/compiler/baseCheck.ts(26,9): error TS2304: Cannot find name 'x'.
|
||||
~~~~~~~~~~~~~
|
||||
!!! error TS2346: Supplied parameters do not match any signature of call target.
|
||||
~~~~
|
||||
!!! error TS2332: 'this' cannot be referenced in current location.
|
||||
!!! error TS17009: 'super' must be called before accessing 'this' in the constructor of a derived class.
|
||||
class E extends C { constructor(public z: number) { super(0, this.z) } }
|
||||
~~~~
|
||||
!!! error TS2332: 'this' cannot be referenced in current location.
|
||||
!!! error TS17009: 'super' must be called before accessing 'this' in the constructor of a derived class.
|
||||
class F extends C { constructor(public z: number) { super("hello", this.z) } } // first param type
|
||||
~~~~~~~
|
||||
!!! error TS2345: Argument of type 'string' is not assignable to parameter of type 'number'.
|
||||
~~~~
|
||||
!!! error TS2332: 'this' cannot be referenced in current location.
|
||||
!!! error TS17009: 'super' must be called before accessing 'this' in the constructor of a derived class.
|
||||
|
||||
function f() {
|
||||
if (x<10) {
|
||||
|
||||
@@ -4,6 +4,7 @@ tests/cases/compiler/bases.ts(7,17): error TS2304: Cannot find name 'any'.
|
||||
tests/cases/compiler/bases.ts(11,7): error TS2420: Class 'C' incorrectly implements interface 'I'.
|
||||
Property 'x' is missing in type 'C'.
|
||||
tests/cases/compiler/bases.ts(12,5): error TS2377: Constructors for derived classes must contain a 'super' call.
|
||||
tests/cases/compiler/bases.ts(13,9): error TS17009: 'super' must be called before accessing 'this' in the constructor of a derived class.
|
||||
tests/cases/compiler/bases.ts(13,14): error TS2339: Property 'x' does not exist on type 'C'.
|
||||
tests/cases/compiler/bases.ts(13,15): error TS1005: ';' expected.
|
||||
tests/cases/compiler/bases.ts(13,17): error TS2304: Cannot find name 'any'.
|
||||
@@ -11,7 +12,7 @@ tests/cases/compiler/bases.ts(17,9): error TS2339: Property 'x' does not exist o
|
||||
tests/cases/compiler/bases.ts(18,9): error TS2339: Property 'y' does not exist on type 'C'.
|
||||
|
||||
|
||||
==== tests/cases/compiler/bases.ts (10 errors) ====
|
||||
==== tests/cases/compiler/bases.ts (11 errors) ====
|
||||
interface I {
|
||||
x;
|
||||
}
|
||||
@@ -36,6 +37,8 @@ tests/cases/compiler/bases.ts(18,9): error TS2339: Property 'y' does not exist o
|
||||
~~~~~~~~~~~~~~~
|
||||
this.x: any;
|
||||
~~~~~~~~~~~~~~~~~~~~
|
||||
~~~~
|
||||
!!! error TS17009: 'super' must be called before accessing 'this' in the constructor of a derived class.
|
||||
~
|
||||
!!! error TS2339: Property 'x' does not exist on type 'C'.
|
||||
~
|
||||
|
||||
@@ -144,8 +144,9 @@ for (const y = 0; y < 1;) {
|
||||
|
||||
|
||||
//// [capturedLetConstInLoop4.js]
|
||||
System.register([], function(exports_1) {
|
||||
System.register([], function(exports_1, context_1) {
|
||||
"use strict";
|
||||
var __moduleName = context_1 && context_1.id;
|
||||
var v0, v00, v1, v2, v3, v4, v5, v6, v7, v8, v0_c, v00_c, v1_c, v2_c, v3_c, v4_c, v5_c, v6_c, v7_c, v8_c;
|
||||
//======let
|
||||
function exportedFoo() {
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
//// [checkSuperCallBeforeThisAccessing1.ts]
|
||||
class Based { }
|
||||
class Derived extends Based {
|
||||
public x: number;
|
||||
constructor() {
|
||||
super();
|
||||
this;
|
||||
this.x = 10;
|
||||
var that = this;
|
||||
}
|
||||
}
|
||||
|
||||
//// [checkSuperCallBeforeThisAccessing1.js]
|
||||
var __extends = (this && this.__extends) || function (d, b) {
|
||||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
};
|
||||
var Based = (function () {
|
||||
function Based() {
|
||||
}
|
||||
return Based;
|
||||
}());
|
||||
var Derived = (function (_super) {
|
||||
__extends(Derived, _super);
|
||||
function Derived() {
|
||||
_super.call(this);
|
||||
this;
|
||||
this.x = 10;
|
||||
var that = this;
|
||||
}
|
||||
return Derived;
|
||||
}(Based));
|
||||
@@ -0,0 +1,28 @@
|
||||
=== tests/cases/compiler/checkSuperCallBeforeThisAccessing1.ts ===
|
||||
class Based { }
|
||||
>Based : Symbol(Based, Decl(checkSuperCallBeforeThisAccessing1.ts, 0, 0))
|
||||
|
||||
class Derived extends Based {
|
||||
>Derived : Symbol(Derived, Decl(checkSuperCallBeforeThisAccessing1.ts, 0, 15))
|
||||
>Based : Symbol(Based, Decl(checkSuperCallBeforeThisAccessing1.ts, 0, 0))
|
||||
|
||||
public x: number;
|
||||
>x : Symbol(x, Decl(checkSuperCallBeforeThisAccessing1.ts, 1, 29))
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
>super : Symbol(Based, Decl(checkSuperCallBeforeThisAccessing1.ts, 0, 0))
|
||||
|
||||
this;
|
||||
>this : Symbol(Derived, Decl(checkSuperCallBeforeThisAccessing1.ts, 0, 15))
|
||||
|
||||
this.x = 10;
|
||||
>this.x : Symbol(x, Decl(checkSuperCallBeforeThisAccessing1.ts, 1, 29))
|
||||
>this : Symbol(Derived, Decl(checkSuperCallBeforeThisAccessing1.ts, 0, 15))
|
||||
>x : Symbol(x, Decl(checkSuperCallBeforeThisAccessing1.ts, 1, 29))
|
||||
|
||||
var that = this;
|
||||
>that : Symbol(that, Decl(checkSuperCallBeforeThisAccessing1.ts, 7, 11))
|
||||
>this : Symbol(Derived, Decl(checkSuperCallBeforeThisAccessing1.ts, 0, 15))
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
=== tests/cases/compiler/checkSuperCallBeforeThisAccessing1.ts ===
|
||||
class Based { }
|
||||
>Based : Based
|
||||
|
||||
class Derived extends Based {
|
||||
>Derived : Derived
|
||||
>Based : Based
|
||||
|
||||
public x: number;
|
||||
>x : number
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
>super() : void
|
||||
>super : typeof Based
|
||||
|
||||
this;
|
||||
>this : this
|
||||
|
||||
this.x = 10;
|
||||
>this.x = 10 : number
|
||||
>this.x : number
|
||||
>this : this
|
||||
>x : number
|
||||
>10 : number
|
||||
|
||||
var that = this;
|
||||
>that : this
|
||||
>this : this
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
tests/cases/compiler/checkSuperCallBeforeThisAccessing2.ts(5,9): error TS17009: 'super' must be called before accessing 'this' in the constructor of a derived class.
|
||||
|
||||
|
||||
==== tests/cases/compiler/checkSuperCallBeforeThisAccessing2.ts (1 errors) ====
|
||||
class Based { }
|
||||
class Derived extends Based {
|
||||
public x: number;
|
||||
constructor() {
|
||||
this.x = 100;
|
||||
~~~~
|
||||
!!! error TS17009: 'super' must be called before accessing 'this' in the constructor of a derived class.
|
||||
super();
|
||||
this.x = 10;
|
||||
var that = this;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
//// [checkSuperCallBeforeThisAccessing2.ts]
|
||||
class Based { }
|
||||
class Derived extends Based {
|
||||
public x: number;
|
||||
constructor() {
|
||||
this.x = 100;
|
||||
super();
|
||||
this.x = 10;
|
||||
var that = this;
|
||||
}
|
||||
}
|
||||
|
||||
//// [checkSuperCallBeforeThisAccessing2.js]
|
||||
var __extends = (this && this.__extends) || function (d, b) {
|
||||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
};
|
||||
var Based = (function () {
|
||||
function Based() {
|
||||
}
|
||||
return Based;
|
||||
}());
|
||||
var Derived = (function (_super) {
|
||||
__extends(Derived, _super);
|
||||
function Derived() {
|
||||
this.x = 100;
|
||||
_super.call(this);
|
||||
this.x = 10;
|
||||
var that = this;
|
||||
}
|
||||
return Derived;
|
||||
}(Based));
|
||||
@@ -0,0 +1,43 @@
|
||||
//// [checkSuperCallBeforeThisAccessing3.ts]
|
||||
class Based { }
|
||||
class Derived extends Based {
|
||||
public x: number;
|
||||
constructor() {
|
||||
class innver {
|
||||
public y: boolean;
|
||||
constructor() {
|
||||
this.y = true;
|
||||
}
|
||||
}
|
||||
super();
|
||||
this.x = 10;
|
||||
var that = this;
|
||||
}
|
||||
}
|
||||
|
||||
//// [checkSuperCallBeforeThisAccessing3.js]
|
||||
var __extends = (this && this.__extends) || function (d, b) {
|
||||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
};
|
||||
var Based = (function () {
|
||||
function Based() {
|
||||
}
|
||||
return Based;
|
||||
}());
|
||||
var Derived = (function (_super) {
|
||||
__extends(Derived, _super);
|
||||
function Derived() {
|
||||
var innver = (function () {
|
||||
function innver() {
|
||||
this.y = true;
|
||||
}
|
||||
return innver;
|
||||
}());
|
||||
_super.call(this);
|
||||
this.x = 10;
|
||||
var that = this;
|
||||
}
|
||||
return Derived;
|
||||
}(Based));
|
||||
@@ -0,0 +1,38 @@
|
||||
=== tests/cases/compiler/checkSuperCallBeforeThisAccessing3.ts ===
|
||||
class Based { }
|
||||
>Based : Symbol(Based, Decl(checkSuperCallBeforeThisAccessing3.ts, 0, 0))
|
||||
|
||||
class Derived extends Based {
|
||||
>Derived : Symbol(Derived, Decl(checkSuperCallBeforeThisAccessing3.ts, 0, 15))
|
||||
>Based : Symbol(Based, Decl(checkSuperCallBeforeThisAccessing3.ts, 0, 0))
|
||||
|
||||
public x: number;
|
||||
>x : Symbol(x, Decl(checkSuperCallBeforeThisAccessing3.ts, 1, 29))
|
||||
|
||||
constructor() {
|
||||
class innver {
|
||||
>innver : Symbol(innver, Decl(checkSuperCallBeforeThisAccessing3.ts, 3, 19))
|
||||
|
||||
public y: boolean;
|
||||
>y : Symbol(y, Decl(checkSuperCallBeforeThisAccessing3.ts, 4, 22))
|
||||
|
||||
constructor() {
|
||||
this.y = true;
|
||||
>this.y : Symbol(y, Decl(checkSuperCallBeforeThisAccessing3.ts, 4, 22))
|
||||
>this : Symbol(innver, Decl(checkSuperCallBeforeThisAccessing3.ts, 3, 19))
|
||||
>y : Symbol(y, Decl(checkSuperCallBeforeThisAccessing3.ts, 4, 22))
|
||||
}
|
||||
}
|
||||
super();
|
||||
>super : Symbol(Based, Decl(checkSuperCallBeforeThisAccessing3.ts, 0, 0))
|
||||
|
||||
this.x = 10;
|
||||
>this.x : Symbol(x, Decl(checkSuperCallBeforeThisAccessing3.ts, 1, 29))
|
||||
>this : Symbol(Derived, Decl(checkSuperCallBeforeThisAccessing3.ts, 0, 15))
|
||||
>x : Symbol(x, Decl(checkSuperCallBeforeThisAccessing3.ts, 1, 29))
|
||||
|
||||
var that = this;
|
||||
>that : Symbol(that, Decl(checkSuperCallBeforeThisAccessing3.ts, 12, 11))
|
||||
>this : Symbol(Derived, Decl(checkSuperCallBeforeThisAccessing3.ts, 0, 15))
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
=== tests/cases/compiler/checkSuperCallBeforeThisAccessing3.ts ===
|
||||
class Based { }
|
||||
>Based : Based
|
||||
|
||||
class Derived extends Based {
|
||||
>Derived : Derived
|
||||
>Based : Based
|
||||
|
||||
public x: number;
|
||||
>x : number
|
||||
|
||||
constructor() {
|
||||
class innver {
|
||||
>innver : innver
|
||||
|
||||
public y: boolean;
|
||||
>y : boolean
|
||||
|
||||
constructor() {
|
||||
this.y = true;
|
||||
>this.y = true : boolean
|
||||
>this.y : boolean
|
||||
>this : this
|
||||
>y : boolean
|
||||
>true : boolean
|
||||
}
|
||||
}
|
||||
super();
|
||||
>super() : void
|
||||
>super : typeof Based
|
||||
|
||||
this.x = 10;
|
||||
>this.x = 10 : number
|
||||
>this.x : number
|
||||
>this : this
|
||||
>x : number
|
||||
>10 : number
|
||||
|
||||
var that = this;
|
||||
>that : this
|
||||
>this : this
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
//// [checkSuperCallBeforeThisAccessing4.ts]
|
||||
class Based { }
|
||||
class Derived extends Based {
|
||||
public x: number;
|
||||
constructor() {
|
||||
(() => {
|
||||
this; // No error
|
||||
});
|
||||
() => {
|
||||
this; // No error
|
||||
};
|
||||
(() => {
|
||||
this; // No error
|
||||
})();
|
||||
super();
|
||||
super();
|
||||
this.x = 10;
|
||||
var that = this;
|
||||
}
|
||||
}
|
||||
|
||||
//// [checkSuperCallBeforeThisAccessing4.js]
|
||||
var __extends = (this && this.__extends) || function (d, b) {
|
||||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
};
|
||||
var Based = (function () {
|
||||
function Based() {
|
||||
}
|
||||
return Based;
|
||||
}());
|
||||
var Derived = (function (_super) {
|
||||
__extends(Derived, _super);
|
||||
function Derived() {
|
||||
var _this = this;
|
||||
(function () {
|
||||
_this; // No error
|
||||
});
|
||||
(function () {
|
||||
_this; // No error
|
||||
});
|
||||
(function () {
|
||||
_this; // No error
|
||||
})();
|
||||
_super.call(this);
|
||||
_super.call(this);
|
||||
this.x = 10;
|
||||
var that = this;
|
||||
}
|
||||
return Derived;
|
||||
}(Based));
|
||||
@@ -0,0 +1,43 @@
|
||||
=== tests/cases/compiler/checkSuperCallBeforeThisAccessing4.ts ===
|
||||
class Based { }
|
||||
>Based : Symbol(Based, Decl(checkSuperCallBeforeThisAccessing4.ts, 0, 0))
|
||||
|
||||
class Derived extends Based {
|
||||
>Derived : Symbol(Derived, Decl(checkSuperCallBeforeThisAccessing4.ts, 0, 15))
|
||||
>Based : Symbol(Based, Decl(checkSuperCallBeforeThisAccessing4.ts, 0, 0))
|
||||
|
||||
public x: number;
|
||||
>x : Symbol(x, Decl(checkSuperCallBeforeThisAccessing4.ts, 1, 29))
|
||||
|
||||
constructor() {
|
||||
(() => {
|
||||
this; // No error
|
||||
>this : Symbol(Derived, Decl(checkSuperCallBeforeThisAccessing4.ts, 0, 15))
|
||||
|
||||
});
|
||||
() => {
|
||||
this; // No error
|
||||
>this : Symbol(Derived, Decl(checkSuperCallBeforeThisAccessing4.ts, 0, 15))
|
||||
|
||||
};
|
||||
(() => {
|
||||
this; // No error
|
||||
>this : Symbol(Derived, Decl(checkSuperCallBeforeThisAccessing4.ts, 0, 15))
|
||||
|
||||
})();
|
||||
super();
|
||||
>super : Symbol(Based, Decl(checkSuperCallBeforeThisAccessing4.ts, 0, 0))
|
||||
|
||||
super();
|
||||
>super : Symbol(Based, Decl(checkSuperCallBeforeThisAccessing4.ts, 0, 0))
|
||||
|
||||
this.x = 10;
|
||||
>this.x : Symbol(x, Decl(checkSuperCallBeforeThisAccessing4.ts, 1, 29))
|
||||
>this : Symbol(Derived, Decl(checkSuperCallBeforeThisAccessing4.ts, 0, 15))
|
||||
>x : Symbol(x, Decl(checkSuperCallBeforeThisAccessing4.ts, 1, 29))
|
||||
|
||||
var that = this;
|
||||
>that : Symbol(that, Decl(checkSuperCallBeforeThisAccessing4.ts, 16, 11))
|
||||
>this : Symbol(Derived, Decl(checkSuperCallBeforeThisAccessing4.ts, 0, 15))
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,56 @@
|
||||
=== tests/cases/compiler/checkSuperCallBeforeThisAccessing4.ts ===
|
||||
class Based { }
|
||||
>Based : Based
|
||||
|
||||
class Derived extends Based {
|
||||
>Derived : Derived
|
||||
>Based : Based
|
||||
|
||||
public x: number;
|
||||
>x : number
|
||||
|
||||
constructor() {
|
||||
(() => {
|
||||
>(() => { this; // No error }) : () => void
|
||||
>() => { this; // No error } : () => void
|
||||
|
||||
this; // No error
|
||||
>this : this
|
||||
|
||||
});
|
||||
() => {
|
||||
>() => { this; // No error } : () => void
|
||||
|
||||
this; // No error
|
||||
>this : this
|
||||
|
||||
};
|
||||
(() => {
|
||||
>(() => { this; // No error })() : void
|
||||
>(() => { this; // No error }) : () => void
|
||||
>() => { this; // No error } : () => void
|
||||
|
||||
this; // No error
|
||||
>this : this
|
||||
|
||||
})();
|
||||
super();
|
||||
>super() : void
|
||||
>super : typeof Based
|
||||
|
||||
super();
|
||||
>super() : void
|
||||
>super : typeof Based
|
||||
|
||||
this.x = 10;
|
||||
>this.x = 10 : number
|
||||
>this.x : number
|
||||
>this : this
|
||||
>x : number
|
||||
>10 : number
|
||||
|
||||
var that = this;
|
||||
>that : this
|
||||
>this : this
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
tests/cases/compiler/checkSuperCallBeforeThisAccessing5.ts(5,15): error TS17009: 'super' must be called before accessing 'this' in the constructor of a derived class.
|
||||
|
||||
|
||||
==== tests/cases/compiler/checkSuperCallBeforeThisAccessing5.ts (1 errors) ====
|
||||
class Based { constructor(...arg) { } }
|
||||
class Derived extends Based {
|
||||
public x: number;
|
||||
constructor() {
|
||||
super(this.x);
|
||||
~~~~
|
||||
!!! error TS17009: 'super' must be called before accessing 'this' in the constructor of a derived class.
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
//// [checkSuperCallBeforeThisAccessing5.ts]
|
||||
class Based { constructor(...arg) { } }
|
||||
class Derived extends Based {
|
||||
public x: number;
|
||||
constructor() {
|
||||
super(this.x);
|
||||
}
|
||||
}
|
||||
|
||||
//// [checkSuperCallBeforeThisAccessing5.js]
|
||||
var __extends = (this && this.__extends) || function (d, b) {
|
||||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
};
|
||||
var Based = (function () {
|
||||
function Based() {
|
||||
var arg = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
arg[_i - 0] = arguments[_i];
|
||||
}
|
||||
}
|
||||
return Based;
|
||||
}());
|
||||
var Derived = (function (_super) {
|
||||
__extends(Derived, _super);
|
||||
function Derived() {
|
||||
_super.call(this, this.x);
|
||||
}
|
||||
return Derived;
|
||||
}(Based));
|
||||
@@ -0,0 +1,36 @@
|
||||
//// [checkSuperCallBeforeThisAccessing6.ts]
|
||||
class Base {
|
||||
constructor(...arg) {
|
||||
}
|
||||
}
|
||||
class Super extends Base {
|
||||
constructor() {
|
||||
(() => this); // No Error
|
||||
super();
|
||||
}
|
||||
}
|
||||
|
||||
//// [checkSuperCallBeforeThisAccessing6.js]
|
||||
var __extends = (this && this.__extends) || function (d, b) {
|
||||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
};
|
||||
var Base = (function () {
|
||||
function Base() {
|
||||
var arg = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
arg[_i - 0] = arguments[_i];
|
||||
}
|
||||
}
|
||||
return Base;
|
||||
}());
|
||||
var Super = (function (_super) {
|
||||
__extends(Super, _super);
|
||||
function Super() {
|
||||
var _this = this;
|
||||
(function () { return _this; }); // No Error
|
||||
_super.call(this);
|
||||
}
|
||||
return Super;
|
||||
}(Base));
|
||||
@@ -0,0 +1,20 @@
|
||||
=== tests/cases/compiler/checkSuperCallBeforeThisAccessing6.ts ===
|
||||
class Base {
|
||||
>Base : Symbol(Base, Decl(checkSuperCallBeforeThisAccessing6.ts, 0, 0))
|
||||
|
||||
constructor(...arg) {
|
||||
>arg : Symbol(arg, Decl(checkSuperCallBeforeThisAccessing6.ts, 1, 16))
|
||||
}
|
||||
}
|
||||
class Super extends Base {
|
||||
>Super : Symbol(Super, Decl(checkSuperCallBeforeThisAccessing6.ts, 3, 1))
|
||||
>Base : Symbol(Base, Decl(checkSuperCallBeforeThisAccessing6.ts, 0, 0))
|
||||
|
||||
constructor() {
|
||||
(() => this); // No Error
|
||||
>this : Symbol(Super, Decl(checkSuperCallBeforeThisAccessing6.ts, 3, 1))
|
||||
|
||||
super();
|
||||
>super : Symbol(Base, Decl(checkSuperCallBeforeThisAccessing6.ts, 0, 0))
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
=== tests/cases/compiler/checkSuperCallBeforeThisAccessing6.ts ===
|
||||
class Base {
|
||||
>Base : Base
|
||||
|
||||
constructor(...arg) {
|
||||
>arg : any[]
|
||||
}
|
||||
}
|
||||
class Super extends Base {
|
||||
>Super : Super
|
||||
>Base : Base
|
||||
|
||||
constructor() {
|
||||
(() => this); // No Error
|
||||
>(() => this) : () => this
|
||||
>() => this : () => this
|
||||
>this : this
|
||||
|
||||
super();
|
||||
>super() : void
|
||||
>super : typeof Base
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
//// [checkSuperCallBeforeThisAccessing7.ts]
|
||||
class Base {
|
||||
constructor(func: ()=>Base) {
|
||||
}
|
||||
}
|
||||
class Super extends Base {
|
||||
constructor() {
|
||||
super((() => this)); // No error
|
||||
}
|
||||
}
|
||||
|
||||
//// [checkSuperCallBeforeThisAccessing7.js]
|
||||
var __extends = (this && this.__extends) || function (d, b) {
|
||||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
};
|
||||
var Base = (function () {
|
||||
function Base(func) {
|
||||
}
|
||||
return Base;
|
||||
}());
|
||||
var Super = (function (_super) {
|
||||
__extends(Super, _super);
|
||||
function Super() {
|
||||
var _this = this;
|
||||
_super.call(this, (function () { return _this; })); // No error
|
||||
}
|
||||
return Super;
|
||||
}(Base));
|
||||
@@ -0,0 +1,19 @@
|
||||
=== tests/cases/compiler/checkSuperCallBeforeThisAccessing7.ts ===
|
||||
class Base {
|
||||
>Base : Symbol(Base, Decl(checkSuperCallBeforeThisAccessing7.ts, 0, 0))
|
||||
|
||||
constructor(func: ()=>Base) {
|
||||
>func : Symbol(func, Decl(checkSuperCallBeforeThisAccessing7.ts, 1, 16))
|
||||
>Base : Symbol(Base, Decl(checkSuperCallBeforeThisAccessing7.ts, 0, 0))
|
||||
}
|
||||
}
|
||||
class Super extends Base {
|
||||
>Super : Symbol(Super, Decl(checkSuperCallBeforeThisAccessing7.ts, 3, 1))
|
||||
>Base : Symbol(Base, Decl(checkSuperCallBeforeThisAccessing7.ts, 0, 0))
|
||||
|
||||
constructor() {
|
||||
super((() => this)); // No error
|
||||
>super : Symbol(Base, Decl(checkSuperCallBeforeThisAccessing7.ts, 0, 0))
|
||||
>this : Symbol(Super, Decl(checkSuperCallBeforeThisAccessing7.ts, 3, 1))
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
=== tests/cases/compiler/checkSuperCallBeforeThisAccessing7.ts ===
|
||||
class Base {
|
||||
>Base : Base
|
||||
|
||||
constructor(func: ()=>Base) {
|
||||
>func : () => Base
|
||||
>Base : Base
|
||||
}
|
||||
}
|
||||
class Super extends Base {
|
||||
>Super : Super
|
||||
>Base : Base
|
||||
|
||||
constructor() {
|
||||
super((() => this)); // No error
|
||||
>super((() => this)) : void
|
||||
>super : typeof Base
|
||||
>(() => this) : () => this
|
||||
>() => this : () => this
|
||||
>this : this
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
tests/cases/compiler/checkSuperCallBeforeThisAccessing8.ts(7,20): error TS17009: 'super' must be called before accessing 'this' in the constructor of a derived class.
|
||||
|
||||
|
||||
==== tests/cases/compiler/checkSuperCallBeforeThisAccessing8.ts (1 errors) ====
|
||||
class Base {
|
||||
constructor(...arg) {
|
||||
}
|
||||
}
|
||||
class Super extends Base {
|
||||
constructor() {
|
||||
var that = this;
|
||||
~~~~
|
||||
!!! error TS17009: 'super' must be called before accessing 'this' in the constructor of a derived class.
|
||||
super();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
//// [checkSuperCallBeforeThisAccessing8.ts]
|
||||
class Base {
|
||||
constructor(...arg) {
|
||||
}
|
||||
}
|
||||
class Super extends Base {
|
||||
constructor() {
|
||||
var that = this;
|
||||
super();
|
||||
}
|
||||
}
|
||||
|
||||
//// [checkSuperCallBeforeThisAccessing8.js]
|
||||
var __extends = (this && this.__extends) || function (d, b) {
|
||||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
};
|
||||
var Base = (function () {
|
||||
function Base() {
|
||||
var arg = [];
|
||||
for (var _i = 0; _i < arguments.length; _i++) {
|
||||
arg[_i - 0] = arguments[_i];
|
||||
}
|
||||
}
|
||||
return Base;
|
||||
}());
|
||||
var Super = (function (_super) {
|
||||
__extends(Super, _super);
|
||||
function Super() {
|
||||
var that = this;
|
||||
_super.call(this);
|
||||
}
|
||||
return Super;
|
||||
}(Base));
|
||||
@@ -211,12 +211,12 @@ declare class a {
|
||||
pgF(): void;
|
||||
pv: any;
|
||||
d: number;
|
||||
static p2: {
|
||||
static readonly p2: {
|
||||
x: number;
|
||||
y: number;
|
||||
};
|
||||
private static d2();
|
||||
private static p3;
|
||||
private static readonly p3;
|
||||
private pv3;
|
||||
private foo(n);
|
||||
private foo(s);
|
||||
|
||||
@@ -568,8 +568,8 @@ declare var i1_c: typeof c1;
|
||||
declare class cProperties {
|
||||
private val;
|
||||
/** getter only property*/
|
||||
p1: number;
|
||||
nc_p1: number;
|
||||
readonly p1: number;
|
||||
readonly nc_p1: number;
|
||||
/**setter only property*/
|
||||
p2: number;
|
||||
nc_p2: number;
|
||||
|
||||
@@ -316,19 +316,19 @@ declare class c2 {
|
||||
/** c2 c2_f1*/
|
||||
c2_f1(): void;
|
||||
/** c2 c2_prop*/
|
||||
c2_prop: number;
|
||||
readonly c2_prop: number;
|
||||
c2_nc_p1: number;
|
||||
c2_nc_f1(): void;
|
||||
c2_nc_prop: number;
|
||||
readonly c2_nc_prop: number;
|
||||
/** c2 p1*/
|
||||
p1: number;
|
||||
/** c2 f1*/
|
||||
f1(): void;
|
||||
/** c2 prop*/
|
||||
prop: number;
|
||||
readonly prop: number;
|
||||
nc_p1: number;
|
||||
nc_f1(): void;
|
||||
nc_prop: number;
|
||||
readonly nc_prop: number;
|
||||
/** c2 constructor*/
|
||||
constructor(a: number);
|
||||
}
|
||||
@@ -339,10 +339,10 @@ declare class c3 extends c2 {
|
||||
/** c3 f1*/
|
||||
f1(): void;
|
||||
/** c3 prop*/
|
||||
prop: number;
|
||||
readonly prop: number;
|
||||
nc_p1: number;
|
||||
nc_f1(): void;
|
||||
nc_prop: number;
|
||||
readonly nc_prop: number;
|
||||
}
|
||||
declare var c2_i: c2;
|
||||
declare var c3_i: c3;
|
||||
|
||||
@@ -284,7 +284,7 @@ export declare class c1 {
|
||||
nc_p3: number;
|
||||
private nc_pp3;
|
||||
static nc_s3: string;
|
||||
onlyGetter: number;
|
||||
readonly onlyGetter: number;
|
||||
onlySetter: number;
|
||||
}
|
||||
//// [declFileAccessors_1.d.ts]
|
||||
@@ -302,6 +302,6 @@ declare class c2 {
|
||||
nc_p3: number;
|
||||
private nc_pp3;
|
||||
static nc_s3: string;
|
||||
onlyGetter: number;
|
||||
readonly onlyGetter: number;
|
||||
onlySetter: number;
|
||||
}
|
||||
|
||||
@@ -52,8 +52,8 @@ declare class C {
|
||||
static y: number;
|
||||
private static a();
|
||||
static b(): void;
|
||||
private static c;
|
||||
static d: number;
|
||||
private static readonly c;
|
||||
static readonly d: number;
|
||||
private static e;
|
||||
static f: any;
|
||||
}
|
||||
|
||||
@@ -135,7 +135,7 @@ declare class C1 {
|
||||
protected static sx: number;
|
||||
protected static sf(): number;
|
||||
protected static staticSetter: number;
|
||||
protected static staticGetter: number;
|
||||
protected static readonly staticGetter: number;
|
||||
}
|
||||
declare class C2 extends C1 {
|
||||
protected f(): number;
|
||||
@@ -146,7 +146,7 @@ declare class C3 extends C2 {
|
||||
static sx: number;
|
||||
f(): number;
|
||||
static sf(): number;
|
||||
static staticGetter: number;
|
||||
static readonly staticGetter: number;
|
||||
}
|
||||
declare class C4 {
|
||||
protected a: number;
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
//// [tests/cases/compiler/declarationMerging1.ts] ////
|
||||
|
||||
//// [file1.ts]
|
||||
class A {
|
||||
protected _f: number;
|
||||
getF() { return this._f; }
|
||||
}
|
||||
|
||||
//// [file2.ts]
|
||||
interface A {
|
||||
run();
|
||||
}
|
||||
|
||||
//// [file1.js]
|
||||
var A = (function () {
|
||||
function A() {
|
||||
}
|
||||
A.prototype.getF = function () { return this._f; };
|
||||
return A;
|
||||
}());
|
||||
//// [file2.js]
|
||||
@@ -0,0 +1,21 @@
|
||||
=== tests/cases/compiler/file1.ts ===
|
||||
class A {
|
||||
>A : Symbol(A, Decl(file1.ts, 0, 0), Decl(file2.ts, 0, 0))
|
||||
|
||||
protected _f: number;
|
||||
>_f : Symbol(_f, Decl(file1.ts, 0, 9))
|
||||
|
||||
getF() { return this._f; }
|
||||
>getF : Symbol(getF, Decl(file1.ts, 1, 25))
|
||||
>this._f : Symbol(_f, Decl(file1.ts, 0, 9))
|
||||
>this : Symbol(A, Decl(file1.ts, 0, 0), Decl(file2.ts, 0, 0))
|
||||
>_f : Symbol(_f, Decl(file1.ts, 0, 9))
|
||||
}
|
||||
|
||||
=== tests/cases/compiler/file2.ts ===
|
||||
interface A {
|
||||
>A : Symbol(A, Decl(file1.ts, 0, 0), Decl(file2.ts, 0, 0))
|
||||
|
||||
run();
|
||||
>run : Symbol(run, Decl(file2.ts, 0, 13))
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
=== tests/cases/compiler/file1.ts ===
|
||||
class A {
|
||||
>A : A
|
||||
|
||||
protected _f: number;
|
||||
>_f : number
|
||||
|
||||
getF() { return this._f; }
|
||||
>getF : () => number
|
||||
>this._f : number
|
||||
>this : this
|
||||
>_f : number
|
||||
}
|
||||
|
||||
=== tests/cases/compiler/file2.ts ===
|
||||
interface A {
|
||||
>A : A
|
||||
|
||||
run();
|
||||
>run : () => any
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
//// [tests/cases/compiler/declarationMerging2.ts] ////
|
||||
|
||||
//// [a.ts]
|
||||
|
||||
export class A {
|
||||
protected _f: number;
|
||||
getF() { return this._f; }
|
||||
}
|
||||
|
||||
//// [b.ts]
|
||||
export {}
|
||||
declare module "./a" {
|
||||
interface A {
|
||||
run();
|
||||
}
|
||||
}
|
||||
|
||||
//// [a.js]
|
||||
define(["require", "exports"], function (require, exports) {
|
||||
"use strict";
|
||||
var A = (function () {
|
||||
function A() {
|
||||
}
|
||||
A.prototype.getF = function () { return this._f; };
|
||||
return A;
|
||||
}());
|
||||
exports.A = A;
|
||||
});
|
||||
//// [b.js]
|
||||
define(["require", "exports"], function (require, exports) {
|
||||
"use strict";
|
||||
});
|
||||
@@ -0,0 +1,25 @@
|
||||
=== tests/cases/compiler/a.ts ===
|
||||
|
||||
export class A {
|
||||
>A : Symbol(A, Decl(a.ts, 0, 0), Decl(b.ts, 1, 22))
|
||||
|
||||
protected _f: number;
|
||||
>_f : Symbol(_f, Decl(a.ts, 1, 16))
|
||||
|
||||
getF() { return this._f; }
|
||||
>getF : Symbol(getF, Decl(a.ts, 2, 25))
|
||||
>this._f : Symbol(_f, Decl(a.ts, 1, 16))
|
||||
>this : Symbol(A, Decl(a.ts, 0, 0), Decl(b.ts, 1, 22))
|
||||
>_f : Symbol(_f, Decl(a.ts, 1, 16))
|
||||
}
|
||||
|
||||
=== tests/cases/compiler/b.ts ===
|
||||
export {}
|
||||
declare module "./a" {
|
||||
interface A {
|
||||
>A : Symbol(A, Decl(a.ts, 0, 0), Decl(b.ts, 1, 22))
|
||||
|
||||
run();
|
||||
>run : Symbol(run, Decl(b.ts, 2, 17))
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
=== tests/cases/compiler/a.ts ===
|
||||
|
||||
export class A {
|
||||
>A : A
|
||||
|
||||
protected _f: number;
|
||||
>_f : number
|
||||
|
||||
getF() { return this._f; }
|
||||
>getF : () => number
|
||||
>this._f : number
|
||||
>this : this
|
||||
>_f : number
|
||||
}
|
||||
|
||||
=== tests/cases/compiler/b.ts ===
|
||||
export {}
|
||||
declare module "./a" {
|
||||
interface A {
|
||||
>A : A
|
||||
|
||||
run();
|
||||
>run : () => any
|
||||
}
|
||||
}
|
||||
@@ -13,8 +13,9 @@ var decorator: ClassDecorator;
|
||||
export default class {}
|
||||
|
||||
//// [a.js]
|
||||
System.register([], function(exports_1) {
|
||||
System.register([], function(exports_1, context_1) {
|
||||
"use strict";
|
||||
var __moduleName = context_1 && context_1.id;
|
||||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||
@@ -35,8 +36,9 @@ System.register([], function(exports_1) {
|
||||
}
|
||||
});
|
||||
//// [b.js]
|
||||
System.register([], function(exports_1) {
|
||||
System.register([], function(exports_1, context_1) {
|
||||
"use strict";
|
||||
var __moduleName = context_1 && context_1.id;
|
||||
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
||||
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
||||
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user