From dfa149457c86f101c03b0828d72a975966e651a2 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Sun, 14 Jun 2015 07:10:25 -0700 Subject: [PATCH 01/16] Allow expressions in extends clause of class --- src/compiler/checker.ts | 228 ++++++++++-------- .../diagnosticInformationMap.generated.ts | 4 + src/compiler/diagnosticMessages.json | 16 ++ src/compiler/types.ts | 1 + 4 files changed, 155 insertions(+), 94 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index c8150d644a243..7feee34d7b032 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2600,6 +2600,47 @@ module ts { return concatenate(getOuterTypeParametersOfClassOrInterface(symbol), getLocalTypeParametersOfClassOrInterfaceOrTypeAlias(symbol)); } + function isConstructorType(type: Type): boolean { + return type.flags & TypeFlags.ObjectType && getSignaturesOfType(type, SignatureKind.Construct).length > 0; + } + + function getBaseTypeNodeOfClass(type: InterfaceType): ExpressionWithTypeArguments { + return getClassExtendsHeritageClauseElement(type.symbol.valueDeclaration); + } + + function getConstructorsForTypeArguments(type: ObjectType, typeArguments: TypeNode[]): Signature[] { + let typeArgCount = typeArguments ? typeArguments.length : 0; + return filter(getSignaturesOfType(type, SignatureKind.Construct), + sig => (sig.typeParameters ? sig.typeParameters.length : 0) === typeArgCount); + } + + function getBaseConstructorTypeOfClass(type: InterfaceType): ObjectType { + if (!type.baseConstructorType) { + let baseTypeNode = getBaseTypeNodeOfClass(type); + if (!baseTypeNode) { + return type.baseConstructorType = unknownType; + } + if (!pushTypeResolution(type)) { + return unknownType; + } + let baseConstructorType = checkExpressionCached(baseTypeNode.expression); + if (baseConstructorType.flags & TypeFlags.ObjectType) { + // Force resolution of members such that we catch circularities + resolveObjectOrUnionTypeMembers(baseConstructorType); + } + if (!popTypeResolution()) { + error(type.symbol.valueDeclaration, Diagnostics._0_is_referenced_directly_or_indirectly_in_its_own_base_expression, symbolToString(type.symbol)); + return type.baseConstructorType = unknownType; + } + if (baseConstructorType !== unknownType && !isConstructorType(baseConstructorType)) { + error(baseTypeNode, Diagnostics.Base_expression_is_not_of_a_constructor_function_type); + return type.baseConstructorType = unknownType; + } + type.baseConstructorType = baseConstructorType; + } + return type.baseConstructorType; + } + function getBaseTypes(type: InterfaceType): ObjectType[] { let typeWithBaseTypes = type; if (!typeWithBaseTypes.baseTypes) { @@ -2613,30 +2654,45 @@ module ts { Debug.fail("type must be class or interface"); } } - return typeWithBaseTypes.baseTypes; } function resolveBaseTypesOfClass(type: InterfaceTypeWithBaseTypes): void { - type.baseTypes = []; - let declaration = getDeclarationOfKind(type.symbol, SyntaxKind.ClassDeclaration); - let baseTypeNode = getClassExtendsHeritageClauseElement(declaration); - if (baseTypeNode) { - let baseType = getTypeFromTypeNode(baseTypeNode); - if (baseType !== unknownType) { - if (getTargetType(baseType).flags & TypeFlags.Class) { - if (type !== baseType && !hasBaseType(baseType, type)) { - type.baseTypes.push(baseType); - } - else { - error(declaration, Diagnostics.Type_0_recursively_references_itself_as_a_base_type, typeToString(type, /*enclosingDeclaration*/ undefined, TypeFormatFlags.WriteArrayAsGenericType)); - } - } - else { - error(baseTypeNode, Diagnostics.A_class_may_only_extend_another_class); - } + type.baseTypes = emptyArray; + let baseContructorType = getBaseConstructorTypeOfClass(type); + if (baseContructorType === unknownType) { + return; + } + let baseTypeNode = getBaseTypeNodeOfClass(type); + let baseType: Type; + if (baseContructorType.symbol && baseContructorType.symbol.flags & SymbolFlags.Class) { + baseType = getTypeFromClassOrInterfaceReference(baseTypeNode, baseContructorType.symbol); + } + else { + let constructors = getConstructorsForTypeArguments(baseContructorType, baseTypeNode.typeArguments); + if (!constructors.length) { + error(baseTypeNode, Diagnostics.No_base_constructor_has_the_specified_number_of_type_arguments); + return; + } + let constructor = constructors[0]; + if (baseTypeNode.typeArguments) { + constructor = getSignatureInstantiation(constructor, map(baseTypeNode.typeArguments, getTypeFromTypeNode)); } + baseType = getReturnTypeOfSignature(constructor); } + if (baseType === unknownType) { + return; + } + if (!(getTargetType(baseType).flags & (TypeFlags.Class | TypeFlags.Interface))) { + error(baseTypeNode, Diagnostics.Base_constructor_does_not_return_a_class_or_interface_type); + return; + } + if (type === baseType || hasBaseType(baseType, type)) { + error(type.symbol.valueDeclaration, Diagnostics.Type_0_recursively_references_itself_as_a_base_type, + typeToString(type, /*enclosingDeclaration*/ undefined, TypeFormatFlags.WriteArrayAsGenericType)); + return; + } + type.baseTypes = [baseType]; } function resolveBaseTypesOfInterface(type: InterfaceTypeWithBaseTypes): void { @@ -2645,7 +2701,6 @@ module ts { if (declaration.kind === SyntaxKind.InterfaceDeclaration && getInterfaceBaseTypeNodes(declaration)) { for (let node of getInterfaceBaseTypeNodes(declaration)) { let baseType = getTypeFromTypeNode(node); - if (baseType !== unknownType) { if (getTargetType(baseType).flags & (TypeFlags.Class | TypeFlags.Interface)) { if (type !== baseType && !hasBaseType(baseType, type)) { @@ -2867,20 +2922,26 @@ module ts { sig.minArgumentCount, sig.hasRestParameter, sig.hasStringLiterals); } - function getDefaultConstructSignatures(classType: InterfaceType): Signature[]{ - let baseTypes = getBaseTypes(classType); - if (baseTypes.length) { - let baseType = baseTypes[0]; - let baseSignatures = getSignaturesOfType(getTypeOfSymbol(baseType.symbol), SignatureKind.Construct); - return map(baseSignatures, baseSignature => { - let signature = baseType.flags & TypeFlags.Reference ? - getSignatureInstantiation(baseSignature, (baseType).typeArguments) : cloneSignature(baseSignature); - signature.typeParameters = classType.localTypeParameters; - signature.resolvedReturnType = classType; - return signature; - }); + function getDefaultConstructSignatures(classType: InterfaceType): Signature[] { + if (!getBaseTypes(classType).length) { + return [createSignature(undefined, classType.localTypeParameters, emptyArray, classType, undefined, 0, false, false)]; + } + let baseConstructorType = getBaseConstructorTypeOfClass(classType); + let baseSignatures = getSignaturesOfType(baseConstructorType, SignatureKind.Construct); + let baseTypeNode = getBaseTypeNodeOfClass(classType); + let typeArguments = map(baseTypeNode.typeArguments, getTypeFromTypeNode); + let typeArgCount = typeArguments ? typeArguments.length : 0; + let result: Signature[] = []; + for (let baseSig of baseSignatures) { + let typeParamCount = baseSig.typeParameters ? baseSig.typeParameters.length : 0; + if (typeParamCount === typeArgCount) { + let sig = typeParamCount ? getSignatureInstantiation(baseSig, typeArguments) : cloneSignature(baseSig); + sig.typeParameters = classType.localTypeParameters; + sig.resolvedReturnType = classType; + result.push(sig); + } } - return [createSignature(undefined, classType.localTypeParameters, emptyArray, classType, undefined, 0, false, false)]; + return result; } function createTupleTypeMemberSymbols(memberTypes: Type[]): SymbolTable { @@ -2992,10 +3053,10 @@ module ts { if (!constructSignatures.length) { constructSignatures = getDefaultConstructSignatures(classType); } - let baseTypes = getBaseTypes(classType); - if (baseTypes.length) { + let baseConstructorType = getBaseConstructorTypeOfClass(classType); + if (baseConstructorType !== unknownType) { members = createSymbolTable(getNamedMembers(members)); - addInheritedMembers(members, getPropertiesOfObjectType(getTypeOfSymbol(baseTypes[0].symbol))); + addInheritedMembers(members, getPropertiesOfObjectType(baseConstructorType)); } } stringIndexType = undefined; @@ -4127,14 +4188,14 @@ module ts { return !node.typeParameters && node.parameters.length && !forEach(node.parameters, p => p.type); } - function getTypeWithoutConstructors(type: Type): Type { + function getTypeWithoutSignatures(type: Type): Type { if (type.flags & TypeFlags.ObjectType) { let resolved = resolveObjectOrUnionTypeMembers(type); if (resolved.constructSignatures.length) { let result = createObjectType(TypeFlags.Anonymous, type.symbol); result.members = resolved.members; result.properties = resolved.properties; - result.callSignatures = resolved.callSignatures; + result.callSignatures = emptyArray; result.constructSignatures = emptyArray; type = result; } @@ -5891,15 +5952,11 @@ module ts { function checkSuperExpression(node: Node): Type { let isCallExpression = node.parent.kind === SyntaxKind.CallExpression && (node.parent).expression === node; - let enclosingClass = getAncestor(node, SyntaxKind.ClassDeclaration); - let baseClass: Type; - if (enclosingClass && getClassExtendsHeritageClauseElement(enclosingClass)) { - let classType = getDeclaredTypeOfSymbol(getSymbolOfNode(enclosingClass)); - let baseTypes = getBaseTypes(classType); - baseClass = baseTypes.length && baseTypes[0]; - } + let classDeclaration = getAncestor(node, SyntaxKind.ClassDeclaration); + let classType = classDeclaration && getDeclaredTypeOfSymbol(getSymbolOfNode(classDeclaration)); + let baseClassType = classType && getBaseTypes(classType)[0]; - if (!baseClass) { + if (!baseClassType) { error(node, Diagnostics.super_can_only_be_referenced_in_a_derived_class); return unknownType; } @@ -5954,11 +6011,11 @@ module ts { if ((container.flags & NodeFlags.Static) || isCallExpression) { getNodeLinks(node).flags |= NodeCheckFlags.SuperStatic; - returnType = getTypeOfSymbol(baseClass.symbol); + returnType = getBaseConstructorTypeOfClass(classType); } else { getNodeLinks(node).flags |= NodeCheckFlags.SuperInstance; - returnType = baseClass; + returnType = baseClassType; } if (container.kind === SyntaxKind.Constructor && isInConstructorArgumentInitializer(node, container)) { @@ -7381,7 +7438,7 @@ module ts { if (node.expression.kind === SyntaxKind.SuperKeyword) { let superType = checkSuperExpression(node.expression); if (superType !== unknownType) { - return resolveCall(node, getSignaturesOfType(superType, SignatureKind.Construct), candidatesOutArray); + return resolveCall(node, getConstructorsForTypeArguments(superType, getEffectiveTypeArguments(node)), candidatesOutArray); } return resolveUntypedCall(node); } @@ -8963,35 +9020,31 @@ module ts { checkDecorators(node); } - function checkTypeReferenceNode(node: TypeReferenceNode) { - checkGrammarTypeReferenceInStrictMode(node.typeName); - return checkTypeReferenceOrExpressionWithTypeArguments(node); - } - - function checkExpressionWithTypeArguments(node: ExpressionWithTypeArguments) { - checkGrammarExpressionWithTypeArgumentsInStrictMode(node.expression); - - return checkTypeReferenceOrExpressionWithTypeArguments(node); + function checkTypeArgumentsAndConstraints(typeParameters: TypeParameter[], typeArguments: TypeNode[]) { + for (let i = 0; i < typeArguments.length; i++) { + let typeArgument = typeArguments[i]; + checkSourceElement(typeArgument); + let constraint = getConstraintOfTypeParameter(typeParameters[i]); + if (produceDiagnostics && constraint) { + checkTypeAssignableTo(getTypeFromTypeNode(typeArgument), constraint, typeArgument, Diagnostics.Type_0_does_not_satisfy_the_constraint_1); + } + } } - function checkTypeReferenceOrExpressionWithTypeArguments(node: TypeReferenceNode | ExpressionWithTypeArguments) { - // Grammar checking + function checkTypeReferenceNode(node: TypeReferenceNode | ExpressionWithTypeArguments) { + if (node.kind === SyntaxKind.TypeReference) { + checkGrammarTypeReferenceInStrictMode((node).typeName); + } + else { + checkGrammarExpressionWithTypeArgumentsInStrictMode((node).expression); + } checkGrammarTypeArguments(node, node.typeArguments); - let type = getTypeFromTypeReference(node); if (type !== unknownType && node.typeArguments) { // Do type argument local checks only if referenced type is successfully resolved let symbol = getNodeLinks(node).resolvedSymbol; let typeParameters = symbol.flags & SymbolFlags.TypeAlias ? getSymbolLinks(symbol).typeParameters : (type).target.localTypeParameters; - let len = node.typeArguments.length; - for (let i = 0; i < len; i++) { - checkSourceElement(node.typeArguments[i]); - let constraint = getConstraintOfTypeParameter(typeParameters[i]); - if (produceDiagnostics && constraint) { - let typeArgument = (type).typeArguments[i]; - checkTypeAssignableTo(typeArgument, constraint, node, Diagnostics.Type_0_does_not_satisfy_the_constraint_1); - } - } + checkTypeArgumentsAndConstraints(typeParameters, node.typeArguments); } } @@ -10596,45 +10649,33 @@ module ts { let symbol = getSymbolOfNode(node); let type = getDeclaredTypeOfSymbol(symbol); let staticType = getTypeOfSymbol(symbol); + let baseTypeNode = getClassExtendsHeritageClauseElement(node); if (baseTypeNode) { - if (!isSupportedExpressionWithTypeArguments(baseTypeNode)) { - error(baseTypeNode.expression, Diagnostics.Only_identifiers_Slashqualified_names_with_optional_type_arguments_are_currently_supported_in_a_class_extends_clauses); - } - emitExtends = emitExtends || !isInAmbientContext(node); - checkExpressionWithTypeArguments(baseTypeNode); - } - let baseTypes = getBaseTypes(type); - if (baseTypes.length) { - if (produceDiagnostics) { + // !!! checkExpressionWithTypeArguments(baseTypeNode); + let baseTypes = getBaseTypes(type); + if (baseTypes.length && produceDiagnostics) { let baseType = baseTypes[0]; + let staticBaseType = getBaseConstructorTypeOfClass(type); + if (baseTypeNode.typeArguments) { + let constructors = getConstructorsForTypeArguments(staticBaseType, baseTypeNode.typeArguments); + checkTypeArgumentsAndConstraints(constructors[0].typeParameters, baseTypeNode.typeArguments); + } checkTypeAssignableTo(type, baseType, node.name || node, Diagnostics.Class_0_incorrectly_extends_base_class_1); - let staticBaseType = getTypeOfSymbol(baseType.symbol); - checkTypeAssignableTo(staticType, getTypeWithoutConstructors(staticBaseType), node.name || node, + checkTypeAssignableTo(staticType, getTypeWithoutSignatures(staticBaseType), node.name || node, Diagnostics.Class_static_side_0_incorrectly_extends_base_class_static_side_1); - - if (baseType.symbol !== resolveEntityName(baseTypeNode.expression, SymbolFlags.Value)) { - error(baseTypeNode, Diagnostics.Type_name_0_in_extends_clause_does_not_reference_constructor_function_for_0, typeToString(baseType)); - } - checkKindsOfPropertyMemberOverrides(type, baseType); } } - if (baseTypes.length || (baseTypeNode && compilerOptions.isolatedModules)) { - // Check that base type can be evaluated as expression - checkExpressionOrQualifiedName(baseTypeNode.expression); - } - let implementedTypeNodes = getClassImplementsHeritageClauseElements(node); if (implementedTypeNodes) { forEach(implementedTypeNodes, typeRefNode => { if (!isSupportedExpressionWithTypeArguments(typeRefNode)) { error(typeRefNode.expression, Diagnostics.A_class_can_only_implement_an_identifier_Slashqualified_name_with_optional_type_arguments); } - - checkExpressionWithTypeArguments(typeRefNode); + checkTypeReferenceNode(typeRefNode); if (produceDiagnostics) { let t = getTypeFromTypeNode(typeRefNode); if (t !== unknownType) { @@ -10834,8 +10875,7 @@ module ts { if (!isSupportedExpressionWithTypeArguments(heritageElement)) { error(heritageElement.expression, Diagnostics.An_interface_can_only_extend_an_identifier_Slashqualified_name_with_optional_type_arguments); } - - checkExpressionWithTypeArguments(heritageElement); + checkTypeReferenceNode(heritageElement); }); forEach(node.members, checkSourceElement); diff --git a/src/compiler/diagnosticInformationMap.generated.ts b/src/compiler/diagnosticInformationMap.generated.ts index 0c8be2d3c5445..3c75f388a3e9e 100644 --- a/src/compiler/diagnosticInformationMap.generated.ts +++ b/src/compiler/diagnosticInformationMap.generated.ts @@ -379,6 +379,10 @@ module ts { Cannot_find_namespace_0: { code: 2503, category: DiagnosticCategory.Error, key: "Cannot find namespace '{0}'." }, No_best_common_type_exists_among_yield_expressions: { code: 2504, category: DiagnosticCategory.Error, key: "No best common type exists among yield expressions." }, A_generator_cannot_have_a_void_type_annotation: { code: 2505, category: DiagnosticCategory.Error, key: "A generator cannot have a 'void' type annotation." }, + _0_is_referenced_directly_or_indirectly_in_its_own_base_expression: { code: 2506, category: DiagnosticCategory.Error, key: "'{0}' is referenced directly or indirectly in its own base expression." }, + Base_expression_is_not_of_a_constructor_function_type: { code: 2507, category: DiagnosticCategory.Error, key: "Base expression is not of a constructor function type." }, + No_base_constructor_has_the_specified_number_of_type_arguments: { code: 2508, category: DiagnosticCategory.Error, key: "No base constructor has the specified number of type arguments." }, + Base_constructor_does_not_return_a_class_or_interface_type: { code: 2509, category: DiagnosticCategory.Error, key: "Base constructor does not return a class or interface type." }, Import_declaration_0_is_using_private_name_1: { code: 4000, category: DiagnosticCategory.Error, key: "Import declaration '{0}' is using private name '{1}'." }, Type_parameter_0_of_exported_class_has_or_is_using_private_name_1: { code: 4002, category: DiagnosticCategory.Error, key: "Type parameter '{0}' of exported class has or is using private name '{1}'." }, Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1: { code: 4004, category: DiagnosticCategory.Error, key: "Type parameter '{0}' of exported interface has or is using private name '{1}'." }, diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index 0827301174555..db062b759f38e 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -1505,6 +1505,22 @@ "category": "Error", "code": 2505 }, + "'{0}' is referenced directly or indirectly in its own base expression.": { + "category": "Error", + "code": 2506 + }, + "Base expression is not of a constructor function type.": { + "category": "Error", + "code": 2507 + }, + "No base constructor has the specified number of type arguments.": { + "category": "Error", + "code": 2508 + }, + "Base constructor does not return a class or interface type.": { + "category": "Error", + "code": 2509 + }, "Import declaration '{0}' is using private name '{1}'.": { "category": "Error", diff --git a/src/compiler/types.ts b/src/compiler/types.ts index a50d6e9a45c05..c4c3722613345 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -1660,6 +1660,7 @@ module ts { typeParameters: TypeParameter[]; // Type parameters (undefined if non-generic) outerTypeParameters: TypeParameter[]; // Outer type parameters (undefined if none) localTypeParameters: TypeParameter[]; // Local type parameters (undefined if none) + baseConstructorType?: Type; // Base constructor type of class } export interface InterfaceTypeWithBaseTypes extends InterfaceType { From 80ea68701b910e7e9189574e3c25ad33f5924c1c Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Mon, 15 Jun 2015 10:27:59 -0700 Subject: [PATCH 02/16] Use instantiated signatures in super calls --- src/compiler/checker.ts | 59 +++++++++++++++-------------------------- 1 file changed, 22 insertions(+), 37 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 7feee34d7b032..13235f64b9e9d 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2608,22 +2608,31 @@ module ts { return getClassExtendsHeritageClauseElement(type.symbol.valueDeclaration); } - function getConstructorsForTypeArguments(type: ObjectType, typeArguments: TypeNode[]): Signature[] { - let typeArgCount = typeArguments ? typeArguments.length : 0; + function getConstructorsForTypeArguments(type: ObjectType, typeArgumentNodes: TypeNode[]): Signature[] { + let typeArgCount = typeArgumentNodes ? typeArgumentNodes.length : 0; return filter(getSignaturesOfType(type, SignatureKind.Construct), sig => (sig.typeParameters ? sig.typeParameters.length : 0) === typeArgCount); } + function getInstantiatedConstructorsForTypeArguments(type: ObjectType, typeArgumentNodes: TypeNode[]): Signature[] { + let signatures = getConstructorsForTypeArguments(type, typeArgumentNodes); + if (typeArgumentNodes) { + let typeArguments = map(typeArgumentNodes, getTypeFromTypeNode); + signatures = map(signatures, sig => getSignatureInstantiation(sig, typeArguments)); + } + return signatures; + } + function getBaseConstructorTypeOfClass(type: InterfaceType): ObjectType { if (!type.baseConstructorType) { let baseTypeNode = getBaseTypeNodeOfClass(type); if (!baseTypeNode) { - return type.baseConstructorType = unknownType; + return type.baseConstructorType = undefinedType; } if (!pushTypeResolution(type)) { return unknownType; } - let baseConstructorType = checkExpressionCached(baseTypeNode.expression); + let baseConstructorType = checkExpression(baseTypeNode.expression); if (baseConstructorType.flags & TypeFlags.ObjectType) { // Force resolution of members such that we catch circularities resolveObjectOrUnionTypeMembers(baseConstructorType); @@ -2632,7 +2641,7 @@ module ts { error(type.symbol.valueDeclaration, Diagnostics._0_is_referenced_directly_or_indirectly_in_its_own_base_expression, symbolToString(type.symbol)); return type.baseConstructorType = unknownType; } - if (baseConstructorType !== unknownType && !isConstructorType(baseConstructorType)) { + if (baseConstructorType !== unknownType && baseConstructorType !== nullType && !isConstructorType(baseConstructorType)) { error(baseTypeNode, Diagnostics.Base_expression_is_not_of_a_constructor_function_type); return type.baseConstructorType = unknownType; } @@ -2660,7 +2669,7 @@ module ts { function resolveBaseTypesOfClass(type: InterfaceTypeWithBaseTypes): void { type.baseTypes = emptyArray; let baseContructorType = getBaseConstructorTypeOfClass(type); - if (baseContructorType === unknownType) { + if (!(baseContructorType.flags & TypeFlags.ObjectType)) { return; } let baseTypeNode = getBaseTypeNodeOfClass(type); @@ -2669,16 +2678,12 @@ module ts { baseType = getTypeFromClassOrInterfaceReference(baseTypeNode, baseContructorType.symbol); } else { - let constructors = getConstructorsForTypeArguments(baseContructorType, baseTypeNode.typeArguments); + let constructors = getInstantiatedConstructorsForTypeArguments(baseContructorType, baseTypeNode.typeArguments); if (!constructors.length) { error(baseTypeNode, Diagnostics.No_base_constructor_has_the_specified_number_of_type_arguments); return; } - let constructor = constructors[0]; - if (baseTypeNode.typeArguments) { - constructor = getSignatureInstantiation(constructor, map(baseTypeNode.typeArguments, getTypeFromTypeNode)); - } - baseType = getReturnTypeOfSignature(constructor); + baseType = getReturnTypeOfSignature(constructors[0]); } if (baseType === unknownType) { return; @@ -3054,7 +3059,7 @@ module ts { constructSignatures = getDefaultConstructSignatures(classType); } let baseConstructorType = getBaseConstructorTypeOfClass(classType); - if (baseConstructorType !== unknownType) { + if (baseConstructorType.flags & TypeFlags.ObjectType) { members = createSymbolTable(getNamedMembers(members)); addInheritedMembers(members, getPropertiesOfObjectType(baseConstructorType)); } @@ -7202,35 +7207,13 @@ module ts { return args; } - /** - * In a 'super' call, type arguments are not provided within the CallExpression node itself. - * Instead, they must be fetched from the class declaration's base type node. - * - * If 'node' is a 'super' call (e.g. super(...), new super(...)), then we attempt to fetch - * the type arguments off the containing class's first heritage clause (if one exists). Note that if - * type arguments are supplied on the 'super' call, they are ignored (though this is syntactically incorrect). - * - * In all other cases, the call's explicit type arguments are returned. - */ - function getEffectiveTypeArguments(callExpression: CallExpression): TypeNode[] { - if (callExpression.expression.kind === SyntaxKind.SuperKeyword) { - let containingClass = getAncestor(callExpression, SyntaxKind.ClassDeclaration); - let baseClassTypeNode = containingClass && getClassExtendsHeritageClauseElement(containingClass); - return baseClassTypeNode && baseClassTypeNode.typeArguments; - } - else { - // Ordinary case - simple function invocation. - return callExpression.typeArguments; - } - } - function resolveCall(node: CallLikeExpression, signatures: Signature[], candidatesOutArray: Signature[]): Signature { let isTaggedTemplate = node.kind === SyntaxKind.TaggedTemplateExpression; let typeArguments: TypeNode[]; if (!isTaggedTemplate) { - typeArguments = getEffectiveTypeArguments(node); + typeArguments = (node).typeArguments; // We already perform checking on the type arguments on the class declaration itself. if ((node).expression.kind !== SyntaxKind.SuperKeyword) { @@ -7438,7 +7421,9 @@ module ts { if (node.expression.kind === SyntaxKind.SuperKeyword) { let superType = checkSuperExpression(node.expression); if (superType !== unknownType) { - return resolveCall(node, getConstructorsForTypeArguments(superType, getEffectiveTypeArguments(node)), candidatesOutArray); + let baseTypeNode = getClassExtendsHeritageClauseElement(getAncestor(node, SyntaxKind.ClassDeclaration)); + let baseConstructors = getInstantiatedConstructorsForTypeArguments(superType, baseTypeNode.typeArguments); + return resolveCall(node, baseConstructors, candidatesOutArray); } return resolveUntypedCall(node); } From 956d73ef5e7f92095393e1dccd2d1e293269bd51 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Mon, 15 Jun 2015 10:44:21 -0700 Subject: [PATCH 03/16] Accepting new baselines --- .../checkForObjectTooStrict.errors.txt | 40 ----------------- .../reference/checkForObjectTooStrict.symbols | 42 ++++++++++++++++++ .../reference/checkForObjectTooStrict.types | 44 +++++++++++++++++++ .../classExtendingPrimitive.errors.txt | 13 +++--- .../classExtendingPrimitive2.errors.txt | 7 +-- .../classExtendingQualifiedName.errors.txt | 4 +- ...ithModuleNotReferingConstructor.errors.txt | 4 +- ...useClassNotReferringConstructor.errors.txt | 4 +- .../classExtendsEveryObjectType.errors.txt | 29 ++++++------ .../classExtendsEveryObjectType2.errors.txt | 13 +++--- .../classExtendsInterface.errors.txt | 10 ++--- .../reference/classExtendsItself.errors.txt | 12 ++--- .../classExtendsItselfIndirectly.errors.txt | 24 +++++++--- .../classExtendsItselfIndirectly2.errors.txt | 22 +++++++--- .../classExtendsItselfIndirectly3.errors.txt | 30 +++++++++---- ...endsShadowedConstructorFunction.errors.txt | 4 +- ...ExtendsValidConstructorFunction.errors.txt | 4 +- .../reference/classInheritence.errors.txt | 4 +- .../reference/classUpdateTests.errors.txt | 8 +--- ...ericRecursiveBaseClassReference.errors.txt | 4 +- .../reference/constraints0.errors.txt | 4 +- .../reference/extBaseClass2.errors.txt | 4 +- .../extendNonClassSymbol1.errors.txt | 9 ---- .../extendNonClassSymbol2.errors.txt | 4 +- .../reference/generatorTypeCheck40.errors.txt | 9 ++-- .../reference/generatorTypeCheck60.errors.txt | 9 ++-- ...eReferenceWithoutTypeArgument.d.errors.txt | 4 +- ...peReferenceWithoutTypeArgument2.errors.txt | 10 ++--- ...peReferenceWithoutTypeArgument3.errors.txt | 4 +- .../baselines/reference/generics1.errors.txt | 4 +- .../baselines/reference/generics2.errors.txt | 4 +- .../baselines/reference/generics5.errors.txt | 4 +- .../reference/importAsBaseClass.errors.txt | 4 +- .../baselines/reference/importAsBaseClass.js | 1 + .../indirectSelfReference.errors.txt | 11 +++-- .../indirectSelfReferenceGeneric.errors.txt | 11 +++-- ...inheritFromGenericTypeParameter.errors.txt | 4 +- ...nWithConstraintCheckingDeferred.errors.txt | 4 +- ...-does-not-affect-class-heritage.errors.txt | 6 +-- .../reference/recursiveBaseCheck.errors.txt | 18 ++++++-- .../reference/recursiveBaseCheck2.errors.txt | 9 ++-- .../reference/recursiveBaseCheck3.errors.txt | 9 ++-- .../reference/recursiveBaseCheck4.errors.txt | 4 +- .../reference/recursiveBaseCheck6.errors.txt | 4 +- ...eReservedWordInClassDeclaration.errors.txt | 9 ++-- .../subtypingWithNumericIndexer2.errors.txt | 4 +- .../subtypingWithNumericIndexer3.errors.txt | 4 +- .../subtypingWithNumericIndexer4.errors.txt | 4 +- .../subtypingWithStringIndexer2.errors.txt | 4 +- .../subtypingWithStringIndexer3.errors.txt | 4 +- .../subtypingWithStringIndexer4.errors.txt | 4 +- .../thisInInvalidContexts.errors.txt | 4 +- ...InInvalidContextsExternalModule.errors.txt | 4 +- .../typeParameterAsBaseClass.errors.txt | 4 +- .../typeParameterAsBaseType.errors.txt | 8 ++-- .../reference/undeclaredBase.errors.txt | 4 +- ...unctionCallsWithTypeParameters1.errors.txt | 9 ++-- 57 files changed, 317 insertions(+), 225 deletions(-) delete mode 100644 tests/baselines/reference/checkForObjectTooStrict.errors.txt create mode 100644 tests/baselines/reference/checkForObjectTooStrict.symbols create mode 100644 tests/baselines/reference/checkForObjectTooStrict.types delete mode 100644 tests/baselines/reference/extendNonClassSymbol1.errors.txt diff --git a/tests/baselines/reference/checkForObjectTooStrict.errors.txt b/tests/baselines/reference/checkForObjectTooStrict.errors.txt deleted file mode 100644 index 7af7481f6ae26..0000000000000 --- a/tests/baselines/reference/checkForObjectTooStrict.errors.txt +++ /dev/null @@ -1,40 +0,0 @@ -tests/cases/compiler/checkForObjectTooStrict.ts(22,19): error TS2311: A class may only extend another class. -tests/cases/compiler/checkForObjectTooStrict.ts(26,9): error TS2335: 'super' can only be referenced in a derived class. - - -==== tests/cases/compiler/checkForObjectTooStrict.ts (2 errors) ==== - module Foo { - - export class Object { - - } - - } - - - - class Bar extends Foo.Object { // should work - - constructor () { - - super(); - - } - - } - - - class Baz extends Object { - ~~~~~~ -!!! error TS2311: A class may only extend another class. - - constructor () { // ERROR, as expected - - super(); - ~~~~~ -!!! error TS2335: 'super' can only be referenced in a derived class. - - } - - } - \ No newline at end of file diff --git a/tests/baselines/reference/checkForObjectTooStrict.symbols b/tests/baselines/reference/checkForObjectTooStrict.symbols new file mode 100644 index 0000000000000..48e04392c3bea --- /dev/null +++ b/tests/baselines/reference/checkForObjectTooStrict.symbols @@ -0,0 +1,42 @@ +=== tests/cases/compiler/checkForObjectTooStrict.ts === +module Foo { +>Foo : Symbol(Foo, Decl(checkForObjectTooStrict.ts, 0, 0)) + + export class Object { +>Object : Symbol(Object, Decl(checkForObjectTooStrict.ts, 0, 12)) + + } + +} + + + +class Bar extends Foo.Object { // should work +>Bar : Symbol(Bar, Decl(checkForObjectTooStrict.ts, 6, 1)) +>Foo.Object : Symbol(Foo.Object, Decl(checkForObjectTooStrict.ts, 0, 12)) +>Foo : Symbol(Foo, Decl(checkForObjectTooStrict.ts, 0, 0)) +>Object : Symbol(Foo.Object, Decl(checkForObjectTooStrict.ts, 0, 12)) + + constructor () { + + super(); +>super : Symbol(Foo.Object, Decl(checkForObjectTooStrict.ts, 0, 12)) + + } + +} + + +class Baz extends Object { +>Baz : Symbol(Baz, Decl(checkForObjectTooStrict.ts, 18, 1)) +>Object : Symbol(Object, Decl(lib.d.ts, 92, 1), Decl(lib.d.ts, 223, 11)) + + constructor () { // ERROR, as expected + + super(); +>super : Symbol(ObjectConstructor, Decl(lib.d.ts, 124, 1)) + + } + +} + diff --git a/tests/baselines/reference/checkForObjectTooStrict.types b/tests/baselines/reference/checkForObjectTooStrict.types new file mode 100644 index 0000000000000..3dd47c79743d0 --- /dev/null +++ b/tests/baselines/reference/checkForObjectTooStrict.types @@ -0,0 +1,44 @@ +=== tests/cases/compiler/checkForObjectTooStrict.ts === +module Foo { +>Foo : typeof Foo + + export class Object { +>Object : Object + + } + +} + + + +class Bar extends Foo.Object { // should work +>Bar : Bar +>Foo.Object : any +>Foo : typeof Foo +>Object : Foo.Object + + constructor () { + + super(); +>super() : void +>super : typeof Foo.Object + + } + +} + + +class Baz extends Object { +>Baz : Baz +>Object : Object + + constructor () { // ERROR, as expected + + super(); +>super() : void +>super : ObjectConstructor + + } + +} + diff --git a/tests/baselines/reference/classExtendingPrimitive.errors.txt b/tests/baselines/reference/classExtendingPrimitive.errors.txt index ae039640e9949..68525a1eabd74 100644 --- a/tests/baselines/reference/classExtendingPrimitive.errors.txt +++ b/tests/baselines/reference/classExtendingPrimitive.errors.txt @@ -4,13 +4,12 @@ tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/cla tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(6,18): error TS2304: Cannot find name 'Void'. tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(7,19): error TS1109: Expression expected. tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(8,18): error TS2304: Cannot find name 'Null'. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(9,19): error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(10,18): error TS2304: Cannot find name 'undefined'. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(10,18): error TS2507: Base expression is not of a constructor function type. tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(11,18): error TS2304: Cannot find name 'Undefined'. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(14,18): error TS2311: A class may only extend another class. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(14,18): error TS2507: Base expression is not of a constructor function type. -==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts (10 errors) ==== +==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts (9 errors) ==== // classes cannot extend primitives class C extends number { } @@ -32,11 +31,9 @@ tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/cla ~~~~ !!! error TS2304: Cannot find name 'Null'. class C5a extends null { } - ~~~~ -!!! error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. class C6 extends undefined { } ~~~~~~~~~ -!!! error TS2304: Cannot find name 'undefined'. +!!! error TS2507: Base expression is not of a constructor function type. class C7 extends Undefined { } ~~~~~~~~~ !!! error TS2304: Cannot find name 'Undefined'. @@ -44,4 +41,4 @@ tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/cla enum E { A } class C8 extends E { } ~ -!!! error TS2311: A class may only extend another class. \ No newline at end of file +!!! error TS2507: Base expression is not of a constructor function type. \ No newline at end of file diff --git a/tests/baselines/reference/classExtendingPrimitive2.errors.txt b/tests/baselines/reference/classExtendingPrimitive2.errors.txt index 3bba9b9e0416b..2303ca6323dd9 100644 --- a/tests/baselines/reference/classExtendingPrimitive2.errors.txt +++ b/tests/baselines/reference/classExtendingPrimitive2.errors.txt @@ -1,13 +1,10 @@ tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive2.ts(3,19): error TS1109: Expression expected. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive2.ts(4,19): error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. -==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive2.ts (2 errors) ==== +==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive2.ts (1 errors) ==== // classes cannot extend primitives class C4a extends void {} ~~~~ !!! error TS1109: Expression expected. - class C5a extends null { } - ~~~~ -!!! error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. \ No newline at end of file + class C5a extends null { } \ No newline at end of file diff --git a/tests/baselines/reference/classExtendingQualifiedName.errors.txt b/tests/baselines/reference/classExtendingQualifiedName.errors.txt index b63b3e2310861..f04d07c89e632 100644 --- a/tests/baselines/reference/classExtendingQualifiedName.errors.txt +++ b/tests/baselines/reference/classExtendingQualifiedName.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/classExtendingQualifiedName.ts(5,23): error TS2305: Module 'M' has no exported member 'C'. +tests/cases/compiler/classExtendingQualifiedName.ts(5,23): error TS2339: Property 'C' does not exist on type 'typeof M'. ==== tests/cases/compiler/classExtendingQualifiedName.ts (1 errors) ==== @@ -8,6 +8,6 @@ tests/cases/compiler/classExtendingQualifiedName.ts(5,23): error TS2305: Module class D extends M.C { ~ -!!! error TS2305: Module 'M' has no exported member 'C'. +!!! error TS2339: Property 'C' does not exist on type 'typeof M'. } } \ No newline at end of file diff --git a/tests/baselines/reference/classExtendsClauseClassMergedWithModuleNotReferingConstructor.errors.txt b/tests/baselines/reference/classExtendsClauseClassMergedWithModuleNotReferingConstructor.errors.txt index 50c903895203b..b1c5d253b5608 100644 --- a/tests/baselines/reference/classExtendsClauseClassMergedWithModuleNotReferingConstructor.errors.txt +++ b/tests/baselines/reference/classExtendsClauseClassMergedWithModuleNotReferingConstructor.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/classExtendsClauseClassMergedWithModuleNotReferingConstructor.ts(10,21): error TS2419: Type name 'A' in extends clause does not reference constructor function for 'A'. +tests/cases/compiler/classExtendsClauseClassMergedWithModuleNotReferingConstructor.ts(10,21): error TS2507: Base expression is not of a constructor function type. ==== tests/cases/compiler/classExtendsClauseClassMergedWithModuleNotReferingConstructor.ts (1 errors) ==== @@ -13,7 +13,7 @@ tests/cases/compiler/classExtendsClauseClassMergedWithModuleNotReferingConstruct var A = 1; class B extends A { ~ -!!! error TS2419: Type name 'A' in extends clause does not reference constructor function for 'A'. +!!! error TS2507: Base expression is not of a constructor function type. b: string; } } \ No newline at end of file diff --git a/tests/baselines/reference/classExtendsClauseClassNotReferringConstructor.errors.txt b/tests/baselines/reference/classExtendsClauseClassNotReferringConstructor.errors.txt index 7f8b6fb411b8a..448167d739d65 100644 --- a/tests/baselines/reference/classExtendsClauseClassNotReferringConstructor.errors.txt +++ b/tests/baselines/reference/classExtendsClauseClassNotReferringConstructor.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/classExtendsClauseClassNotReferringConstructor.ts(4,21): error TS2419: Type name 'A' in extends clause does not reference constructor function for 'A'. +tests/cases/compiler/classExtendsClauseClassNotReferringConstructor.ts(4,21): error TS2507: Base expression is not of a constructor function type. ==== tests/cases/compiler/classExtendsClauseClassNotReferringConstructor.ts (1 errors) ==== @@ -7,6 +7,6 @@ tests/cases/compiler/classExtendsClauseClassNotReferringConstructor.ts(4,21): er var A = 1; class B extends A { b: string; } ~ -!!! error TS2419: Type name 'A' in extends clause does not reference constructor function for 'A'. +!!! error TS2507: Base expression is not of a constructor function type. } \ No newline at end of file diff --git a/tests/baselines/reference/classExtendsEveryObjectType.errors.txt b/tests/baselines/reference/classExtendsEveryObjectType.errors.txt index 75eced531399c..e1f1c785bbccd 100644 --- a/tests/baselines/reference/classExtendsEveryObjectType.errors.txt +++ b/tests/baselines/reference/classExtendsEveryObjectType.errors.txt @@ -1,40 +1,43 @@ -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(4,17): error TS2311: A class may only extend another class. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(6,18): error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(4,17): error TS2304: Cannot find name 'I'. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(6,18): error TS2507: Base expression is not of a constructor function type. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(6,25): error TS2304: Cannot find name 'string'. tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(6,31): error TS1005: ',' expected. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(8,18): error TS2304: Cannot find name 'x'. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(11,18): error TS2304: Cannot find name 'M'. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(14,18): error TS2304: Cannot find name 'foo'. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(16,18): error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(8,18): error TS2507: Base expression is not of a constructor function type. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(11,18): error TS2507: Base expression is not of a constructor function type. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(14,18): error TS2507: Base expression is not of a constructor function type. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(16,18): error TS2507: Base expression is not of a constructor function type. -==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts (7 errors) ==== +==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts (8 errors) ==== interface I { foo: string; } class C extends I { } // error ~ -!!! error TS2311: A class may only extend another class. +!!! error TS2304: Cannot find name 'I'. class C2 extends { foo: string; } { } // error ~~~~~~~~~~~~~~~~ -!!! error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. +!!! error TS2507: Base expression is not of a constructor function type. + ~~~~~~ +!!! error TS2304: Cannot find name 'string'. ~ !!! error TS1005: ',' expected. var x: { foo: string; } class C3 extends x { } // error ~ -!!! error TS2304: Cannot find name 'x'. +!!! error TS2507: Base expression is not of a constructor function type. module M { export var x = 1; } class C4 extends M { } // error ~ -!!! error TS2304: Cannot find name 'M'. +!!! error TS2507: Base expression is not of a constructor function type. function foo() { } class C5 extends foo { } // error ~~~ -!!! error TS2304: Cannot find name 'foo'. +!!! error TS2507: Base expression is not of a constructor function type. class C6 extends []{ } // error ~~ -!!! error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. \ No newline at end of file +!!! error TS2507: Base expression is not of a constructor function type. \ No newline at end of file diff --git a/tests/baselines/reference/classExtendsEveryObjectType2.errors.txt b/tests/baselines/reference/classExtendsEveryObjectType2.errors.txt index 45a63030d007b..650c4e4886eb4 100644 --- a/tests/baselines/reference/classExtendsEveryObjectType2.errors.txt +++ b/tests/baselines/reference/classExtendsEveryObjectType2.errors.txt @@ -1,15 +1,18 @@ -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType2.ts(1,18): error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType2.ts(1,18): error TS2507: Base expression is not of a constructor function type. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType2.ts(1,25): error TS2304: Cannot find name 'string'. tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType2.ts(1,31): error TS1005: ',' expected. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType2.ts(3,18): error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType2.ts(3,18): error TS2507: Base expression is not of a constructor function type. -==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType2.ts (3 errors) ==== +==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType2.ts (4 errors) ==== class C2 extends { foo: string; } { } // error ~~~~~~~~~~~~~~~~ -!!! error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. +!!! error TS2507: Base expression is not of a constructor function type. + ~~~~~~ +!!! error TS2304: Cannot find name 'string'. ~ !!! error TS1005: ',' expected. class C6 extends []{ } // error ~~ -!!! error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. \ No newline at end of file +!!! error TS2507: Base expression is not of a constructor function type. \ No newline at end of file diff --git a/tests/baselines/reference/classExtendsInterface.errors.txt b/tests/baselines/reference/classExtendsInterface.errors.txt index 746f3c4bea0ba..2ecca6cf2cf2e 100644 --- a/tests/baselines/reference/classExtendsInterface.errors.txt +++ b/tests/baselines/reference/classExtendsInterface.errors.txt @@ -1,17 +1,17 @@ -tests/cases/compiler/classExtendsInterface.ts(2,17): error TS2311: A class may only extend another class. -tests/cases/compiler/classExtendsInterface.ts(6,21): error TS2311: A class may only extend another class. +tests/cases/compiler/classExtendsInterface.ts(2,17): error TS2304: Cannot find name 'Comparable'. +tests/cases/compiler/classExtendsInterface.ts(6,21): error TS2304: Cannot find name 'Comparable2'. ==== tests/cases/compiler/classExtendsInterface.ts (2 errors) ==== interface Comparable {} class A extends Comparable {} ~~~~~~~~~~ -!!! error TS2311: A class may only extend another class. +!!! error TS2304: Cannot find name 'Comparable'. class B implements Comparable {} interface Comparable2 {} class A2 extends Comparable2 {} - ~~~~~~~~~~~~~~ -!!! error TS2311: A class may only extend another class. + ~~~~~~~~~~~ +!!! error TS2304: Cannot find name 'Comparable2'. class B2 implements Comparable2 {} \ No newline at end of file diff --git a/tests/baselines/reference/classExtendsItself.errors.txt b/tests/baselines/reference/classExtendsItself.errors.txt index bd15ae22c1287..9dd3bcc2202dd 100644 --- a/tests/baselines/reference/classExtendsItself.errors.txt +++ b/tests/baselines/reference/classExtendsItself.errors.txt @@ -1,17 +1,17 @@ -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItself.ts(1,7): error TS2310: Type 'C' recursively references itself as a base type. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItself.ts(3,7): error TS2310: Type 'D' recursively references itself as a base type. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItself.ts(5,7): error TS2310: Type 'E' recursively references itself as a base type. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItself.ts(1,7): error TS2506: 'C' is referenced directly or indirectly in its own base expression. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItself.ts(3,7): error TS2506: 'D' is referenced directly or indirectly in its own base expression. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItself.ts(5,7): error TS2506: 'E' is referenced directly or indirectly in its own base expression. ==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItself.ts (3 errors) ==== class C extends C { } // error ~ -!!! error TS2310: Type 'C' recursively references itself as a base type. +!!! error TS2506: 'C' is referenced directly or indirectly in its own base expression. class D extends D { } // error ~ -!!! error TS2310: Type 'D' recursively references itself as a base type. +!!! error TS2506: 'D' is referenced directly or indirectly in its own base expression. class E extends E { } // error ~ -!!! error TS2310: Type 'E' recursively references itself as a base type. \ No newline at end of file +!!! error TS2506: 'E' is referenced directly or indirectly in its own base expression. \ No newline at end of file diff --git a/tests/baselines/reference/classExtendsItselfIndirectly.errors.txt b/tests/baselines/reference/classExtendsItselfIndirectly.errors.txt index b39ef5b905fe1..c0f35f0388fc2 100644 --- a/tests/baselines/reference/classExtendsItselfIndirectly.errors.txt +++ b/tests/baselines/reference/classExtendsItselfIndirectly.errors.txt @@ -1,20 +1,32 @@ -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly.ts(1,7): error TS2310: Type 'C' recursively references itself as a base type. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly.ts(7,7): error TS2310: Type 'C2' recursively references itself as a base type. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly.ts(1,7): error TS2506: 'C' is referenced directly or indirectly in its own base expression. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly.ts(3,7): error TS2506: 'D' is referenced directly or indirectly in its own base expression. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly.ts(5,7): error TS2506: 'E' is referenced directly or indirectly in its own base expression. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly.ts(7,7): error TS2506: 'C2' is referenced directly or indirectly in its own base expression. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly.ts(9,7): error TS2506: 'D2' is referenced directly or indirectly in its own base expression. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly.ts(11,7): error TS2506: 'E2' is referenced directly or indirectly in its own base expression. -==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly.ts (2 errors) ==== +==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly.ts (6 errors) ==== class C extends E { foo: string; } // error ~ -!!! error TS2310: Type 'C' recursively references itself as a base type. +!!! error TS2506: 'C' is referenced directly or indirectly in its own base expression. class D extends C { bar: string; } + ~ +!!! error TS2506: 'D' is referenced directly or indirectly in its own base expression. class E extends D { baz: number; } + ~ +!!! error TS2506: 'E' is referenced directly or indirectly in its own base expression. class C2 extends E2 { foo: T; } // error ~~ -!!! error TS2310: Type 'C2' recursively references itself as a base type. +!!! error TS2506: 'C2' is referenced directly or indirectly in its own base expression. class D2 extends C2 { bar: T; } + ~~ +!!! error TS2506: 'D2' is referenced directly or indirectly in its own base expression. - class E2 extends D2 { baz: T; } \ No newline at end of file + class E2 extends D2 { baz: T; } + ~~ +!!! error TS2506: 'E2' is referenced directly or indirectly in its own base expression. \ No newline at end of file diff --git a/tests/baselines/reference/classExtendsItselfIndirectly2.errors.txt b/tests/baselines/reference/classExtendsItselfIndirectly2.errors.txt index a61291b5aa9f1..061770f9b7968 100644 --- a/tests/baselines/reference/classExtendsItselfIndirectly2.errors.txt +++ b/tests/baselines/reference/classExtendsItselfIndirectly2.errors.txt @@ -1,31 +1,43 @@ -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly2.ts(1,7): error TS2310: Type 'C' recursively references itself as a base type. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly2.ts(13,11): error TS2310: Type 'C2' recursively references itself as a base type. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly2.ts(1,7): error TS2506: 'C' is referenced directly or indirectly in its own base expression. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly2.ts(4,18): error TS2506: 'D' is referenced directly or indirectly in its own base expression. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly2.ts(9,18): error TS2506: 'E' is referenced directly or indirectly in its own base expression. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly2.ts(13,11): error TS2506: 'C2' is referenced directly or indirectly in its own base expression. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly2.ts(16,22): error TS2506: 'D2' is referenced directly or indirectly in its own base expression. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly2.ts(20,22): error TS2506: 'E2' is referenced directly or indirectly in its own base expression. -==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly2.ts (2 errors) ==== +==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly2.ts (6 errors) ==== class C extends N.E { foo: string; } // error ~ -!!! error TS2310: Type 'C' recursively references itself as a base type. +!!! error TS2506: 'C' is referenced directly or indirectly in its own base expression. module M { export class D extends C { bar: string; } + ~ +!!! error TS2506: 'D' is referenced directly or indirectly in its own base expression. } module N { export class E extends M.D { baz: number; } + ~ +!!! error TS2506: 'E' is referenced directly or indirectly in its own base expression. } module O { class C2 extends Q.E2 { foo: T; } // error ~~ -!!! error TS2310: Type 'C2' recursively references itself as a base type. +!!! error TS2506: 'C2' is referenced directly or indirectly in its own base expression. module P { export class D2 extends C2 { bar: T; } + ~~ +!!! error TS2506: 'D2' is referenced directly or indirectly in its own base expression. } module Q { export class E2 extends P.D2 { baz: T; } + ~~ +!!! error TS2506: 'E2' is referenced directly or indirectly in its own base expression. } } \ No newline at end of file diff --git a/tests/baselines/reference/classExtendsItselfIndirectly3.errors.txt b/tests/baselines/reference/classExtendsItselfIndirectly3.errors.txt index 8430ec887b538..411ea4cb580b0 100644 --- a/tests/baselines/reference/classExtendsItselfIndirectly3.errors.txt +++ b/tests/baselines/reference/classExtendsItselfIndirectly3.errors.txt @@ -1,25 +1,37 @@ -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly_file1.ts(1,7): error TS2310: Type 'C' recursively references itself as a base type. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly_file4.ts(1,7): error TS2310: Type 'C2' recursively references itself as a base type. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly_file1.ts(1,7): error TS2506: 'C' is referenced directly or indirectly in its own base expression. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly_file2.ts(1,7): error TS2506: 'D' is referenced directly or indirectly in its own base expression. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly_file3.ts(1,7): error TS2506: 'E' is referenced directly or indirectly in its own base expression. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly_file4.ts(1,7): error TS2506: 'C2' is referenced directly or indirectly in its own base expression. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly_file5.ts(1,7): error TS2506: 'D2' is referenced directly or indirectly in its own base expression. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly_file6.ts(1,7): error TS2506: 'E2' is referenced directly or indirectly in its own base expression. ==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly_file1.ts (1 errors) ==== class C extends E { foo: string; } // error ~ -!!! error TS2310: Type 'C' recursively references itself as a base type. +!!! error TS2506: 'C' is referenced directly or indirectly in its own base expression. -==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly_file2.ts (0 errors) ==== +==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly_file2.ts (1 errors) ==== class D extends C { bar: string; } + ~ +!!! error TS2506: 'D' is referenced directly or indirectly in its own base expression. -==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly_file3.ts (0 errors) ==== +==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly_file3.ts (1 errors) ==== class E extends D { baz: number; } + ~ +!!! error TS2506: 'E' is referenced directly or indirectly in its own base expression. ==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly_file4.ts (1 errors) ==== class C2 extends E2 { foo: T; } // error ~~ -!!! error TS2310: Type 'C2' recursively references itself as a base type. +!!! error TS2506: 'C2' is referenced directly or indirectly in its own base expression. -==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly_file5.ts (0 errors) ==== +==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly_file5.ts (1 errors) ==== class D2 extends C2 { bar: T; } + ~~ +!!! error TS2506: 'D2' is referenced directly or indirectly in its own base expression. -==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly_file6.ts (0 errors) ==== - class E2 extends D2 { baz: T; } \ No newline at end of file +==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsItselfIndirectly_file6.ts (1 errors) ==== + class E2 extends D2 { baz: T; } + ~~ +!!! error TS2506: 'E2' is referenced directly or indirectly in its own base expression. \ No newline at end of file diff --git a/tests/baselines/reference/classExtendsShadowedConstructorFunction.errors.txt b/tests/baselines/reference/classExtendsShadowedConstructorFunction.errors.txt index 782dd2a2dbc81..475a980e4e610 100644 --- a/tests/baselines/reference/classExtendsShadowedConstructorFunction.errors.txt +++ b/tests/baselines/reference/classExtendsShadowedConstructorFunction.errors.txt @@ -1,4 +1,4 @@ -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsShadowedConstructorFunction.ts(5,21): error TS2419: Type name 'C' in extends clause does not reference constructor function for 'C'. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsShadowedConstructorFunction.ts(5,21): error TS2507: Base expression is not of a constructor function type. ==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsShadowedConstructorFunction.ts (1 errors) ==== @@ -8,7 +8,7 @@ tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/cla var C = 1; class D extends C { // error, C must evaluate to constructor function ~ -!!! error TS2419: Type name 'C' in extends clause does not reference constructor function for 'C'. +!!! error TS2507: Base expression is not of a constructor function type. bar: string; } } \ No newline at end of file diff --git a/tests/baselines/reference/classExtendsValidConstructorFunction.errors.txt b/tests/baselines/reference/classExtendsValidConstructorFunction.errors.txt index ad2262819ed8f..6ebd818e54748 100644 --- a/tests/baselines/reference/classExtendsValidConstructorFunction.errors.txt +++ b/tests/baselines/reference/classExtendsValidConstructorFunction.errors.txt @@ -1,4 +1,4 @@ -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsValidConstructorFunction.ts(5,17): error TS2304: Cannot find name 'foo'. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsValidConstructorFunction.ts(5,17): error TS2507: Base expression is not of a constructor function type. ==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsValidConstructorFunction.ts (1 errors) ==== @@ -8,4 +8,4 @@ tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/cla class C extends foo { } // error, cannot extend it though ~~~ -!!! error TS2304: Cannot find name 'foo'. \ No newline at end of file +!!! error TS2507: Base expression is not of a constructor function type. \ No newline at end of file diff --git a/tests/baselines/reference/classInheritence.errors.txt b/tests/baselines/reference/classInheritence.errors.txt index 483812c6b5f49..cba8c040d6e43 100644 --- a/tests/baselines/reference/classInheritence.errors.txt +++ b/tests/baselines/reference/classInheritence.errors.txt @@ -1,8 +1,8 @@ -tests/cases/compiler/classInheritence.ts(2,7): error TS2310: Type 'A' recursively references itself as a base type. +tests/cases/compiler/classInheritence.ts(2,7): error TS2506: 'A' is referenced directly or indirectly in its own base expression. ==== tests/cases/compiler/classInheritence.ts (1 errors) ==== class B extends A { } class A extends A { } ~ -!!! error TS2310: Type 'A' recursively references itself as a base type. \ No newline at end of file +!!! error TS2506: 'A' is referenced directly or indirectly in its own base expression. \ No newline at end of file diff --git a/tests/baselines/reference/classUpdateTests.errors.txt b/tests/baselines/reference/classUpdateTests.errors.txt index e7f34fec54637..a8c24dc63a25e 100644 --- a/tests/baselines/reference/classUpdateTests.errors.txt +++ b/tests/baselines/reference/classUpdateTests.errors.txt @@ -1,7 +1,5 @@ tests/cases/compiler/classUpdateTests.ts(34,2): error TS2377: Constructors for derived classes must contain a 'super' call. tests/cases/compiler/classUpdateTests.ts(43,18): error TS2335: 'super' can only be referenced in a derived class. -tests/cases/compiler/classUpdateTests.ts(46,17): error TS2311: A class may only extend another class. -tests/cases/compiler/classUpdateTests.ts(47,18): error TS2335: 'super' can only be referenced in a derived class. tests/cases/compiler/classUpdateTests.ts(57,2): error TS2376: A 'super' call must be the first statement in the constructor when a class contains initialized properties or has parameter properties. tests/cases/compiler/classUpdateTests.ts(63,7): error TS2415: Class 'L' incorrectly extends base class 'G'. Property 'p1' is private in type 'L' but not in type 'G'. @@ -20,7 +18,7 @@ tests/cases/compiler/classUpdateTests.ts(111,15): error TS1005: ';' expected. tests/cases/compiler/classUpdateTests.ts(113,1): error TS1128: Declaration or statement expected. -==== tests/cases/compiler/classUpdateTests.ts (18 errors) ==== +==== tests/cases/compiler/classUpdateTests.ts (16 errors) ==== // // test codegen for instance properties // @@ -71,11 +69,7 @@ tests/cases/compiler/classUpdateTests.ts(113,1): error TS1128: Declaration or st } class I extends Object { - ~~~~~~ -!!! error TS2311: A class may only extend another class. constructor() { super(); } // ERROR - no super call allowed - ~~~~~ -!!! error TS2335: 'super' can only be referenced in a derived class. } class J extends G { diff --git a/tests/baselines/reference/complicatedGenericRecursiveBaseClassReference.errors.txt b/tests/baselines/reference/complicatedGenericRecursiveBaseClassReference.errors.txt index 204a7d4c21af9..a70eb0e5e2c7c 100644 --- a/tests/baselines/reference/complicatedGenericRecursiveBaseClassReference.errors.txt +++ b/tests/baselines/reference/complicatedGenericRecursiveBaseClassReference.errors.txt @@ -1,11 +1,11 @@ -tests/cases/compiler/complicatedGenericRecursiveBaseClassReference.ts(1,7): error TS2310: Type 'S18' recursively references itself as a base type. +tests/cases/compiler/complicatedGenericRecursiveBaseClassReference.ts(1,7): error TS2506: 'S18' is referenced directly or indirectly in its own base expression. tests/cases/compiler/complicatedGenericRecursiveBaseClassReference.ts(4,2): error TS2346: Supplied parameters do not match any signature of call target. ==== tests/cases/compiler/complicatedGenericRecursiveBaseClassReference.ts (2 errors) ==== class S18 extends S18 ~~~ -!!! error TS2310: Type 'S18' recursively references itself as a base type. +!!! error TS2506: 'S18' is referenced directly or indirectly in its own base expression. { } (new S18(123)).S18 = 0; diff --git a/tests/baselines/reference/constraints0.errors.txt b/tests/baselines/reference/constraints0.errors.txt index 217a7408fbdc1..39cc7654e016e 100644 --- a/tests/baselines/reference/constraints0.errors.txt +++ b/tests/baselines/reference/constraints0.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/constraints0.ts(14,9): error TS2344: Type 'B' does not satisfy the constraint 'A'. +tests/cases/compiler/constraints0.ts(14,11): error TS2344: Type 'B' does not satisfy the constraint 'A'. Property 'a' is missing in type 'B'. @@ -17,7 +17,7 @@ tests/cases/compiler/constraints0.ts(14,9): error TS2344: Type 'B' does not sati var v1: C; // should work var v2: C; // should not work - ~~~~ + ~ !!! error TS2344: Type 'B' does not satisfy the constraint 'A'. !!! error TS2344: Property 'a' is missing in type 'B'. diff --git a/tests/baselines/reference/extBaseClass2.errors.txt b/tests/baselines/reference/extBaseClass2.errors.txt index 10c406b6ba0c4..b4d243c7ef2f3 100644 --- a/tests/baselines/reference/extBaseClass2.errors.txt +++ b/tests/baselines/reference/extBaseClass2.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/extBaseClass2.ts(2,31): error TS2305: Module 'M' has no exported member 'B'. +tests/cases/compiler/extBaseClass2.ts(2,31): error TS2339: Property 'B' does not exist on type 'typeof M'. tests/cases/compiler/extBaseClass2.ts(7,29): error TS2304: Cannot find name 'B'. @@ -6,7 +6,7 @@ tests/cases/compiler/extBaseClass2.ts(7,29): error TS2304: Cannot find name 'B'. module N { export class C4 extends M.B { ~ -!!! error TS2305: Module 'M' has no exported member 'B'. +!!! error TS2339: Property 'B' does not exist on type 'typeof M'. } } diff --git a/tests/baselines/reference/extendNonClassSymbol1.errors.txt b/tests/baselines/reference/extendNonClassSymbol1.errors.txt deleted file mode 100644 index 587ac3a5f042f..0000000000000 --- a/tests/baselines/reference/extendNonClassSymbol1.errors.txt +++ /dev/null @@ -1,9 +0,0 @@ -tests/cases/compiler/extendNonClassSymbol1.ts(3,17): error TS2304: Cannot find name 'x'. - - -==== tests/cases/compiler/extendNonClassSymbol1.ts (1 errors) ==== - class A { foo() { } } - var x = A; - class C extends x { } // error, could not find symbol xs - ~ -!!! error TS2304: Cannot find name 'x'. \ No newline at end of file diff --git a/tests/baselines/reference/extendNonClassSymbol2.errors.txt b/tests/baselines/reference/extendNonClassSymbol2.errors.txt index 1b54474ac39f5..882a8b447f8a6 100644 --- a/tests/baselines/reference/extendNonClassSymbol2.errors.txt +++ b/tests/baselines/reference/extendNonClassSymbol2.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/extendNonClassSymbol2.ts(5,17): error TS2304: Cannot find name 'Foo'. +tests/cases/compiler/extendNonClassSymbol2.ts(5,17): error TS2507: Base expression is not of a constructor function type. ==== tests/cases/compiler/extendNonClassSymbol2.ts (1 errors) ==== @@ -8,4 +8,4 @@ tests/cases/compiler/extendNonClassSymbol2.ts(5,17): error TS2304: Cannot find n var x = new Foo(); // legal, considered a constructor function class C extends Foo {} // error, could not find symbol Foo ~~~ -!!! error TS2304: Cannot find name 'Foo'. \ No newline at end of file +!!! error TS2507: Base expression is not of a constructor function type. \ No newline at end of file diff --git a/tests/baselines/reference/generatorTypeCheck40.errors.txt b/tests/baselines/reference/generatorTypeCheck40.errors.txt index 9d9676e5d281e..6341ec9ae0a05 100644 --- a/tests/baselines/reference/generatorTypeCheck40.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck40.errors.txt @@ -1,9 +1,12 @@ -tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck40.ts(2,21): error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. +tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck40.ts(2,21): error TS2507: Base expression is not of a constructor function type. +tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck40.ts(2,22): error TS1163: A 'yield' expression is only allowed in a generator body. -==== tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck40.ts (1 errors) ==== +==== tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck40.ts (2 errors) ==== function* g() { class C extends (yield 0) { } ~~~~~~~~~ -!!! error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. +!!! error TS2507: Base expression is not of a constructor function type. + ~~~~~ +!!! error TS1163: A 'yield' expression is only allowed in a generator body. } \ No newline at end of file diff --git a/tests/baselines/reference/generatorTypeCheck60.errors.txt b/tests/baselines/reference/generatorTypeCheck60.errors.txt index d8e5d640bb1ae..4d230a81b5b28 100644 --- a/tests/baselines/reference/generatorTypeCheck60.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck60.errors.txt @@ -1,9 +1,12 @@ -tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck60.ts(2,21): error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. +tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck60.ts(2,21): error TS2507: Base expression is not of a constructor function type. +tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck60.ts(2,22): error TS1163: A 'yield' expression is only allowed in a generator body. -==== tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck60.ts (1 errors) ==== +==== tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck60.ts (2 errors) ==== function* g() { class C extends (yield) {}; ~~~~~~~ -!!! error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. +!!! error TS2507: Base expression is not of a constructor function type. + ~~~~~ +!!! error TS1163: A 'yield' expression is only allowed in a generator body. } \ No newline at end of file diff --git a/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument.d.errors.txt b/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument.d.errors.txt index 5ae71fa2a89ad..2f6db48bf2fa4 100644 --- a/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument.d.errors.txt +++ b/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument.d.errors.txt @@ -8,7 +8,7 @@ tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenc tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument.d.ts(14,23): error TS2314: Generic type 'C' requires 1 type argument(s). tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument.d.ts(14,27): error TS2314: Generic type 'C' requires 1 type argument(s). tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument.d.ts(16,25): error TS2314: Generic type 'C' requires 1 type argument(s). -tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument.d.ts(22,28): error TS2305: Module 'M' has no exported member 'C'. +tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument.d.ts(22,28): error TS2339: Property 'C' does not exist on type 'typeof M'. tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument.d.ts(23,28): error TS2314: Generic type 'E' requires 1 type argument(s). tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument.d.ts(25,30): error TS2314: Generic type 'C' requires 1 type argument(s). tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument.d.ts(26,30): error TS2314: Generic type 'E' requires 1 type argument(s). @@ -58,7 +58,7 @@ tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenc declare class D2 extends M.C { } ~ -!!! error TS2305: Module 'M' has no exported member 'C'. +!!! error TS2339: Property 'C' does not exist on type 'typeof M'. declare class D3 { } ~~~ !!! error TS2314: Generic type 'E' requires 1 type argument(s). diff --git a/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument2.errors.txt b/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument2.errors.txt index 2949ce52ce041..e590ad42a7ddd 100644 --- a/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument2.errors.txt +++ b/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument2.errors.txt @@ -13,9 +13,9 @@ tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenc tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument2.ts(18,23): error TS2314: Generic type 'I' requires 1 type argument(s). tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument2.ts(18,27): error TS2314: Generic type 'I' requires 1 type argument(s). tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument2.ts(18,38): error TS2314: Generic type 'I' requires 1 type argument(s). -tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument2.ts(20,17): error TS2314: Generic type 'I' requires 1 type argument(s). +tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument2.ts(20,17): error TS2304: Cannot find name 'I'. tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument2.ts(23,21): error TS2314: Generic type 'I' requires 1 type argument(s). -tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument2.ts(29,20): error TS2305: Module 'M' has no exported member 'C'. +tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument2.ts(29,18): error TS2304: Cannot find name 'M'. tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument2.ts(30,24): error TS2314: Generic type 'E' requires 1 type argument(s). tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument2.ts(31,24): error TS2305: Module 'M' has no exported member 'C'. tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument2.ts(33,22): error TS2314: Generic type 'I' requires 1 type argument(s). @@ -76,7 +76,7 @@ tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenc class D extends I { ~ -!!! error TS2314: Generic type 'I' requires 1 type argument(s). +!!! error TS2304: Cannot find name 'I'. } interface U extends I {} @@ -88,8 +88,8 @@ tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenc } class D2 extends M.C { } - ~ -!!! error TS2305: Module 'M' has no exported member 'C'. + ~ +!!! error TS2304: Cannot find name 'M'. interface D3 { } ~~~ !!! error TS2314: Generic type 'E' requires 1 type argument(s). diff --git a/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument3.errors.txt b/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument3.errors.txt index c0e4137452795..95857c925be91 100644 --- a/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument3.errors.txt +++ b/tests/baselines/reference/genericTypeReferenceWithoutTypeArgument3.errors.txt @@ -8,7 +8,7 @@ tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenc tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument3.ts(14,23): error TS2314: Generic type 'C' requires 1 type argument(s). tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument3.ts(14,27): error TS2314: Generic type 'C' requires 1 type argument(s). tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument3.ts(16,25): error TS2314: Generic type 'C' requires 1 type argument(s). -tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument3.ts(22,28): error TS2305: Module 'M' has no exported member 'C'. +tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument3.ts(22,28): error TS2339: Property 'C' does not exist on type 'typeof M'. tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument3.ts(23,28): error TS2314: Generic type 'E' requires 1 type argument(s). tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument3.ts(25,30): error TS2314: Generic type 'C' requires 1 type argument(s). tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenceWithoutTypeArgument3.ts(26,30): error TS2314: Generic type 'E' requires 1 type argument(s). @@ -58,7 +58,7 @@ tests/cases/conformance/types/specifyingTypes/typeReferences/genericTypeReferenc declare class D2 extends M.C { } ~ -!!! error TS2305: Module 'M' has no exported member 'C'. +!!! error TS2339: Property 'C' does not exist on type 'typeof M'. declare class D3 { } ~~~ !!! error TS2314: Generic type 'E' requires 1 type argument(s). diff --git a/tests/baselines/reference/generics1.errors.txt b/tests/baselines/reference/generics1.errors.txt index 81d250a2ef4ff..6279c0dcd6332 100644 --- a/tests/baselines/reference/generics1.errors.txt +++ b/tests/baselines/reference/generics1.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/generics1.ts(10,9): error TS2344: Type 'A' does not satisfy the constraint 'B'. +tests/cases/compiler/generics1.ts(10,14): error TS2344: Type 'A' does not satisfy the constraint 'B'. Property 'b' is missing in type 'A'. tests/cases/compiler/generics1.ts(13,9): error TS2314: Generic type 'G' requires 2 type argument(s). tests/cases/compiler/generics1.ts(14,9): error TS2314: Generic type 'G' requires 2 type argument(s). @@ -15,7 +15,7 @@ tests/cases/compiler/generics1.ts(14,9): error TS2314: Generic type 'G' re var v1: G; // Ok var v2: G<{ a: string }, C>; // Ok, equivalent to G var v3: G; // Error, A not valid argument for U - ~~~~~~~ + ~ !!! error TS2344: Type 'A' does not satisfy the constraint 'B'. !!! error TS2344: Property 'b' is missing in type 'A'. var v4: G, C>; // Ok diff --git a/tests/baselines/reference/generics2.errors.txt b/tests/baselines/reference/generics2.errors.txt index a0380eee7536d..d44bc7baad8df 100644 --- a/tests/baselines/reference/generics2.errors.txt +++ b/tests/baselines/reference/generics2.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/generics2.ts(17,9): error TS2344: Type 'A' does not satisfy the constraint 'B'. +tests/cases/compiler/generics2.ts(17,14): error TS2344: Type 'A' does not satisfy the constraint 'B'. Property 'b' is missing in type 'A'. tests/cases/compiler/generics2.ts(20,9): error TS2314: Generic type 'G' requires 2 type argument(s). tests/cases/compiler/generics2.ts(21,9): error TS2314: Generic type 'G' requires 2 type argument(s). @@ -22,7 +22,7 @@ tests/cases/compiler/generics2.ts(21,9): error TS2314: Generic type 'G' re var v2: G<{ a: string }, C>; // Ok, equivalent to G var v3: G; // Error, A not valid argument for U - ~~~~~~~ + ~ !!! error TS2344: Type 'A' does not satisfy the constraint 'B'. !!! error TS2344: Property 'b' is missing in type 'A'. var v4: G, C>; // Ok diff --git a/tests/baselines/reference/generics5.errors.txt b/tests/baselines/reference/generics5.errors.txt index 17aeea63df2e0..fd21a70543645 100644 --- a/tests/baselines/reference/generics5.errors.txt +++ b/tests/baselines/reference/generics5.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/generics5.ts(10,9): error TS2344: Type 'A' does not satisfy the constraint 'B'. +tests/cases/compiler/generics5.ts(10,14): error TS2344: Type 'A' does not satisfy the constraint 'B'. Property 'b' is missing in type 'A'. @@ -13,7 +13,7 @@ tests/cases/compiler/generics5.ts(10,9): error TS2344: Type 'A' does not satisfy } var v3: G; // Error, A not valid argument for U - ~~~~~~~ + ~ !!! error TS2344: Type 'A' does not satisfy the constraint 'B'. !!! error TS2344: Property 'b' is missing in type 'A'. diff --git a/tests/baselines/reference/importAsBaseClass.errors.txt b/tests/baselines/reference/importAsBaseClass.errors.txt index f09eb55561bb2..4b923ea232391 100644 --- a/tests/baselines/reference/importAsBaseClass.errors.txt +++ b/tests/baselines/reference/importAsBaseClass.errors.txt @@ -1,11 +1,11 @@ -tests/cases/compiler/importAsBaseClass_1.ts(2,21): error TS2304: Cannot find name 'Greeter'. +tests/cases/compiler/importAsBaseClass_1.ts(2,21): error TS2507: Base expression is not of a constructor function type. ==== tests/cases/compiler/importAsBaseClass_1.ts (1 errors) ==== import Greeter = require("importAsBaseClass_0"); class Hello extends Greeter { } ~~~~~~~ -!!! error TS2304: Cannot find name 'Greeter'. +!!! error TS2507: Base expression is not of a constructor function type. ==== tests/cases/compiler/importAsBaseClass_0.ts (0 errors) ==== export class Greeter { diff --git a/tests/baselines/reference/importAsBaseClass.js b/tests/baselines/reference/importAsBaseClass.js index 24f7e0477d6b5..b40fd56373357 100644 --- a/tests/baselines/reference/importAsBaseClass.js +++ b/tests/baselines/reference/importAsBaseClass.js @@ -25,6 +25,7 @@ var __extends = (this && this.__extends) || function (d, b) { __.prototype = b.prototype; d.prototype = new __(); }; +var Greeter = require("importAsBaseClass_0"); var Hello = (function (_super) { __extends(Hello, _super); function Hello() { diff --git a/tests/baselines/reference/indirectSelfReference.errors.txt b/tests/baselines/reference/indirectSelfReference.errors.txt index e7c5a00d42156..3f7d3d47f12b3 100644 --- a/tests/baselines/reference/indirectSelfReference.errors.txt +++ b/tests/baselines/reference/indirectSelfReference.errors.txt @@ -1,8 +1,11 @@ -tests/cases/compiler/indirectSelfReference.ts(1,7): error TS2310: Type 'a' recursively references itself as a base type. +tests/cases/compiler/indirectSelfReference.ts(1,7): error TS2506: 'a' is referenced directly or indirectly in its own base expression. +tests/cases/compiler/indirectSelfReference.ts(2,7): error TS2506: 'b' is referenced directly or indirectly in its own base expression. -==== tests/cases/compiler/indirectSelfReference.ts (1 errors) ==== +==== tests/cases/compiler/indirectSelfReference.ts (2 errors) ==== class a extends b{ } ~ -!!! error TS2310: Type 'a' recursively references itself as a base type. - class b extends a{ } \ No newline at end of file +!!! error TS2506: 'a' is referenced directly or indirectly in its own base expression. + class b extends a{ } + ~ +!!! error TS2506: 'b' is referenced directly or indirectly in its own base expression. \ No newline at end of file diff --git a/tests/baselines/reference/indirectSelfReferenceGeneric.errors.txt b/tests/baselines/reference/indirectSelfReferenceGeneric.errors.txt index 765112f0e9912..5a6aeed5de1c1 100644 --- a/tests/baselines/reference/indirectSelfReferenceGeneric.errors.txt +++ b/tests/baselines/reference/indirectSelfReferenceGeneric.errors.txt @@ -1,8 +1,11 @@ -tests/cases/compiler/indirectSelfReferenceGeneric.ts(1,7): error TS2310: Type 'a' recursively references itself as a base type. +tests/cases/compiler/indirectSelfReferenceGeneric.ts(1,7): error TS2506: 'a' is referenced directly or indirectly in its own base expression. +tests/cases/compiler/indirectSelfReferenceGeneric.ts(2,7): error TS2506: 'b' is referenced directly or indirectly in its own base expression. -==== tests/cases/compiler/indirectSelfReferenceGeneric.ts (1 errors) ==== +==== tests/cases/compiler/indirectSelfReferenceGeneric.ts (2 errors) ==== class a extends b { } ~ -!!! error TS2310: Type 'a' recursively references itself as a base type. - class b extends a { } \ No newline at end of file +!!! error TS2506: 'a' is referenced directly or indirectly in its own base expression. + class b extends a { } + ~ +!!! error TS2506: 'b' is referenced directly or indirectly in its own base expression. \ No newline at end of file diff --git a/tests/baselines/reference/inheritFromGenericTypeParameter.errors.txt b/tests/baselines/reference/inheritFromGenericTypeParameter.errors.txt index a9b3cb4b68646..c043e37575c9a 100644 --- a/tests/baselines/reference/inheritFromGenericTypeParameter.errors.txt +++ b/tests/baselines/reference/inheritFromGenericTypeParameter.errors.txt @@ -1,11 +1,11 @@ -tests/cases/compiler/inheritFromGenericTypeParameter.ts(1,20): error TS2311: A class may only extend another class. +tests/cases/compiler/inheritFromGenericTypeParameter.ts(1,20): error TS2304: Cannot find name 'T'. tests/cases/compiler/inheritFromGenericTypeParameter.ts(2,24): error TS2312: An interface may only extend a class or another interface. ==== tests/cases/compiler/inheritFromGenericTypeParameter.ts (2 errors) ==== class C extends T { } ~ -!!! error TS2311: A class may only extend another class. +!!! error TS2304: Cannot find name 'T'. interface I extends T { } ~ !!! error TS2312: An interface may only extend a class or another interface. \ No newline at end of file diff --git a/tests/baselines/reference/overloadresolutionWithConstraintCheckingDeferred.errors.txt b/tests/baselines/reference/overloadresolutionWithConstraintCheckingDeferred.errors.txt index 35837d3233f7a..45c9f99b6918b 100644 --- a/tests/baselines/reference/overloadresolutionWithConstraintCheckingDeferred.errors.txt +++ b/tests/baselines/reference/overloadresolutionWithConstraintCheckingDeferred.errors.txt @@ -7,7 +7,7 @@ tests/cases/compiler/overloadresolutionWithConstraintCheckingDeferred.ts(18,27): Types of parameters 'x' and 'x' are incompatible. Type 'D' is not assignable to type 'B'. Property 'x' is missing in type 'D'. -tests/cases/compiler/overloadresolutionWithConstraintCheckingDeferred.ts(19,12): error TS2344: Type 'D' does not satisfy the constraint 'A'. +tests/cases/compiler/overloadresolutionWithConstraintCheckingDeferred.ts(19,14): error TS2344: Type 'D' does not satisfy the constraint 'A'. ==== tests/cases/compiler/overloadresolutionWithConstraintCheckingDeferred.ts (6 errors) ==== @@ -41,7 +41,7 @@ tests/cases/compiler/overloadresolutionWithConstraintCheckingDeferred.ts(19,12): ~~~~~~~~~~~~~~~~~~~~~~ var y: G; // error that D does not satisfy constraint, y is of type G, entire call to foo is an error ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - ~~~~~~~~~~~ + ~~~~~~~~ !!! error TS2344: Type 'D' does not satisfy the constraint 'A'. return y; ~~~~~~~~~~~~~ diff --git a/tests/baselines/reference/qualifiedName_entity-name-resolution-does-not-affect-class-heritage.errors.txt b/tests/baselines/reference/qualifiedName_entity-name-resolution-does-not-affect-class-heritage.errors.txt index 21bf243dfcbfc..3c67ff44fd3f2 100644 --- a/tests/baselines/reference/qualifiedName_entity-name-resolution-does-not-affect-class-heritage.errors.txt +++ b/tests/baselines/reference/qualifiedName_entity-name-resolution-does-not-affect-class-heritage.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/qualifiedName_entity-name-resolution-does-not-affect-class-heritage.ts(5,26): error TS2305: Module 'Alpha' has no exported member 'x'. +tests/cases/compiler/qualifiedName_entity-name-resolution-does-not-affect-class-heritage.ts(5,20): error TS2507: Base expression is not of a constructor function type. ==== tests/cases/compiler/qualifiedName_entity-name-resolution-does-not-affect-class-heritage.ts (1 errors) ==== @@ -7,6 +7,6 @@ tests/cases/compiler/qualifiedName_entity-name-resolution-does-not-affect-class- } class Beta extends Alpha.x { - ~ -!!! error TS2305: Module 'Alpha' has no exported member 'x'. + ~~~~~~~ +!!! error TS2507: Base expression is not of a constructor function type. } \ No newline at end of file diff --git a/tests/baselines/reference/recursiveBaseCheck.errors.txt b/tests/baselines/reference/recursiveBaseCheck.errors.txt index 06915b6b4304b..0ada6976a8390 100644 --- a/tests/baselines/reference/recursiveBaseCheck.errors.txt +++ b/tests/baselines/reference/recursiveBaseCheck.errors.txt @@ -1,19 +1,31 @@ -tests/cases/compiler/recursiveBaseCheck.ts(2,11): error TS2310: Type 'C' recursively references itself as a base type. +tests/cases/compiler/recursiveBaseCheck.ts(2,11): error TS2506: 'C' is referenced directly or indirectly in its own base expression. +tests/cases/compiler/recursiveBaseCheck.ts(4,18): error TS2506: 'B' is referenced directly or indirectly in its own base expression. +tests/cases/compiler/recursiveBaseCheck.ts(6,18): error TS2506: 'A' is referenced directly or indirectly in its own base expression. +tests/cases/compiler/recursiveBaseCheck.ts(8,18): error TS2506: 'AmChart' is referenced directly or indirectly in its own base expression. +tests/cases/compiler/recursiveBaseCheck.ts(10,18): error TS2506: 'D' is referenced directly or indirectly in its own base expression. -==== tests/cases/compiler/recursiveBaseCheck.ts (1 errors) ==== +==== tests/cases/compiler/recursiveBaseCheck.ts (5 errors) ==== declare module Module { class C extends D { ~ -!!! error TS2310: Type 'C' recursively references itself as a base type. +!!! error TS2506: 'C' is referenced directly or indirectly in its own base expression. } export class B extends Module.C { + ~ +!!! error TS2506: 'B' is referenced directly or indirectly in its own base expression. } export class A extends Module.B { + ~ +!!! error TS2506: 'A' is referenced directly or indirectly in its own base expression. } export class AmChart extends Module.A { + ~~~~~~~ +!!! error TS2506: 'AmChart' is referenced directly or indirectly in its own base expression. } export class D extends AmChart { + ~ +!!! error TS2506: 'D' is referenced directly or indirectly in its own base expression. } export class E extends Module.D { } diff --git a/tests/baselines/reference/recursiveBaseCheck2.errors.txt b/tests/baselines/reference/recursiveBaseCheck2.errors.txt index 1a39f81191275..31eb110400301 100644 --- a/tests/baselines/reference/recursiveBaseCheck2.errors.txt +++ b/tests/baselines/reference/recursiveBaseCheck2.errors.txt @@ -1,13 +1,16 @@ -tests/cases/compiler/recursiveBaseCheck2.ts(2,18): error TS2310: Type 'b2CircleShape' recursively references itself as a base type. +tests/cases/compiler/recursiveBaseCheck2.ts(2,18): error TS2506: 'b2CircleShape' is referenced directly or indirectly in its own base expression. +tests/cases/compiler/recursiveBaseCheck2.ts(4,18): error TS2506: 'b2Shape' is referenced directly or indirectly in its own base expression. -==== tests/cases/compiler/recursiveBaseCheck2.ts (1 errors) ==== +==== tests/cases/compiler/recursiveBaseCheck2.ts (2 errors) ==== declare module Box2D.Collision.Shapes { export class b2CircleShape extends b2Shape { ~~~~~~~~~~~~~ -!!! error TS2310: Type 'b2CircleShape' recursively references itself as a base type. +!!! error TS2506: 'b2CircleShape' is referenced directly or indirectly in its own base expression. } export class b2Shape extends Box2D.Collision.Shapes.b2CircleShape { + ~~~~~~~ +!!! error TS2506: 'b2Shape' is referenced directly or indirectly in its own base expression. } } declare module Box2D.Dynamics { diff --git a/tests/baselines/reference/recursiveBaseCheck3.errors.txt b/tests/baselines/reference/recursiveBaseCheck3.errors.txt index fe955b420ee46..97f7cadc3d6c6 100644 --- a/tests/baselines/reference/recursiveBaseCheck3.errors.txt +++ b/tests/baselines/reference/recursiveBaseCheck3.errors.txt @@ -1,12 +1,15 @@ -tests/cases/compiler/recursiveBaseCheck3.ts(1,7): error TS2310: Type 'A' recursively references itself as a base type. +tests/cases/compiler/recursiveBaseCheck3.ts(1,7): error TS2506: 'A' is referenced directly or indirectly in its own base expression. +tests/cases/compiler/recursiveBaseCheck3.ts(2,7): error TS2506: 'C' is referenced directly or indirectly in its own base expression. tests/cases/compiler/recursiveBaseCheck3.ts(4,9): error TS2339: Property 'blah' does not exist on type 'C<{}>'. -==== tests/cases/compiler/recursiveBaseCheck3.ts (2 errors) ==== +==== tests/cases/compiler/recursiveBaseCheck3.ts (3 errors) ==== class A extends C { } ~ -!!! error TS2310: Type 'A' recursively references itself as a base type. +!!! error TS2506: 'A' is referenced directly or indirectly in its own base expression. class C extends A { } + ~ +!!! error TS2506: 'C' is referenced directly or indirectly in its own base expression. (new C).blah; ~~~~ diff --git a/tests/baselines/reference/recursiveBaseCheck4.errors.txt b/tests/baselines/reference/recursiveBaseCheck4.errors.txt index 4417b998871d0..5616523d14e06 100644 --- a/tests/baselines/reference/recursiveBaseCheck4.errors.txt +++ b/tests/baselines/reference/recursiveBaseCheck4.errors.txt @@ -1,11 +1,11 @@ -tests/cases/compiler/recursiveBaseCheck4.ts(1,7): error TS2310: Type 'M' recursively references itself as a base type. +tests/cases/compiler/recursiveBaseCheck4.ts(1,7): error TS2506: 'M' is referenced directly or indirectly in its own base expression. tests/cases/compiler/recursiveBaseCheck4.ts(2,9): error TS2339: Property 'blah' does not exist on type 'M<{}>'. ==== tests/cases/compiler/recursiveBaseCheck4.ts (2 errors) ==== class M extends M { } ~ -!!! error TS2310: Type 'M' recursively references itself as a base type. +!!! error TS2506: 'M' is referenced directly or indirectly in its own base expression. (new M).blah; ~~~~ !!! error TS2339: Property 'blah' does not exist on type 'M<{}>'. \ No newline at end of file diff --git a/tests/baselines/reference/recursiveBaseCheck6.errors.txt b/tests/baselines/reference/recursiveBaseCheck6.errors.txt index 280f50b7a77c9..6d453da425fb1 100644 --- a/tests/baselines/reference/recursiveBaseCheck6.errors.txt +++ b/tests/baselines/reference/recursiveBaseCheck6.errors.txt @@ -1,11 +1,11 @@ -tests/cases/compiler/recursiveBaseCheck6.ts(1,7): error TS2310: Type 'S18' recursively references itself as a base type. +tests/cases/compiler/recursiveBaseCheck6.ts(1,7): error TS2506: 'S18' is referenced directly or indirectly in its own base expression. tests/cases/compiler/recursiveBaseCheck6.ts(2,13): error TS2339: Property 'blah' does not exist on type 'S18<{}>'. ==== tests/cases/compiler/recursiveBaseCheck6.ts (2 errors) ==== class S18 extends S18<{ S19: A; }>{ } ~~~ -!!! error TS2310: Type 'S18' recursively references itself as a base type. +!!! error TS2506: 'S18' is referenced directly or indirectly in its own base expression. (new S18()).blah; ~~~~ !!! error TS2339: Property 'blah' does not exist on type 'S18<{}>'. \ No newline at end of file diff --git a/tests/baselines/reference/strictModeReservedWordInClassDeclaration.errors.txt b/tests/baselines/reference/strictModeReservedWordInClassDeclaration.errors.txt index 43222495b9f9e..ebbd197eece96 100644 --- a/tests/baselines/reference/strictModeReservedWordInClassDeclaration.errors.txt +++ b/tests/baselines/reference/strictModeReservedWordInClassDeclaration.errors.txt @@ -20,11 +20,10 @@ tests/cases/compiler/strictModeReservedWordInClassDeclaration.ts(26,21): error T tests/cases/compiler/strictModeReservedWordInClassDeclaration.ts(26,21): error TS2503: Cannot find namespace 'public'. tests/cases/compiler/strictModeReservedWordInClassDeclaration.ts(27,17): error TS1213: Identifier expected. 'package' is a reserved word in strict mode. Class definitions are automatically in strict mode. tests/cases/compiler/strictModeReservedWordInClassDeclaration.ts(27,17): error TS2304: Cannot find name 'package'. -tests/cases/compiler/strictModeReservedWordInClassDeclaration.ts(28,17): error TS1213: Identifier expected. 'package' is a reserved word in strict mode. Class definitions are automatically in strict mode. -tests/cases/compiler/strictModeReservedWordInClassDeclaration.ts(28,17): error TS2503: Cannot find namespace 'package'. +tests/cases/compiler/strictModeReservedWordInClassDeclaration.ts(28,17): error TS2304: Cannot find name 'package'. -==== tests/cases/compiler/strictModeReservedWordInClassDeclaration.ts (24 errors) ==== +==== tests/cases/compiler/strictModeReservedWordInClassDeclaration.ts (23 errors) ==== interface public { } class Foo { @@ -98,6 +97,4 @@ tests/cases/compiler/strictModeReservedWordInClassDeclaration.ts(28,17): error T !!! error TS2304: Cannot find name 'package'. class H extends package.A { } ~~~~~~~ -!!! error TS1213: Identifier expected. 'package' is a reserved word in strict mode. Class definitions are automatically in strict mode. - ~~~~~~~ -!!! error TS2503: Cannot find namespace 'package'. \ No newline at end of file +!!! error TS2304: Cannot find name 'package'. \ No newline at end of file diff --git a/tests/baselines/reference/subtypingWithNumericIndexer2.errors.txt b/tests/baselines/reference/subtypingWithNumericIndexer2.errors.txt index 01b581b7306d0..318b64d933170 100644 --- a/tests/baselines/reference/subtypingWithNumericIndexer2.errors.txt +++ b/tests/baselines/reference/subtypingWithNumericIndexer2.errors.txt @@ -2,7 +2,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW Index signatures are incompatible. Type 'Base' is not assignable to type 'Derived'. Property 'bar' is missing in type 'Base'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithNumericIndexer2.ts(24,25): error TS2344: Type 'Base' does not satisfy the constraint 'Derived'. +tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithNumericIndexer2.ts(24,27): error TS2344: Type 'Base' does not satisfy the constraint 'Derived'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithNumericIndexer2.ts(32,15): error TS2430: Interface 'B3' incorrectly extends interface 'A'. Index signatures are incompatible. Type 'Base' is not assignable to type 'T'. @@ -44,7 +44,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW } interface B extends A { - ~~~~~~~ + ~~~~ !!! error TS2344: Type 'Base' does not satisfy the constraint 'Derived'. [x: number]: Derived; // error } diff --git a/tests/baselines/reference/subtypingWithNumericIndexer3.errors.txt b/tests/baselines/reference/subtypingWithNumericIndexer3.errors.txt index 4da8bc0290ac0..6f2684ae93b7e 100644 --- a/tests/baselines/reference/subtypingWithNumericIndexer3.errors.txt +++ b/tests/baselines/reference/subtypingWithNumericIndexer3.errors.txt @@ -2,7 +2,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW Index signatures are incompatible. Type 'Base' is not assignable to type 'Derived'. Property 'bar' is missing in type 'Base'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithNumericIndexer3.ts(24,21): error TS2344: Type 'Base' does not satisfy the constraint 'Derived'. +tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithNumericIndexer3.ts(24,23): error TS2344: Type 'Base' does not satisfy the constraint 'Derived'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithNumericIndexer3.ts(32,11): error TS2415: Class 'B3' incorrectly extends base class 'A'. Index signatures are incompatible. Type 'Base' is not assignable to type 'T'. @@ -44,7 +44,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW } class B extends A { - ~~~~~~~ + ~~~~ !!! error TS2344: Type 'Base' does not satisfy the constraint 'Derived'. [x: number]: Derived; // error } diff --git a/tests/baselines/reference/subtypingWithNumericIndexer4.errors.txt b/tests/baselines/reference/subtypingWithNumericIndexer4.errors.txt index f3c9cc25a1058..5dd39e0ad639f 100644 --- a/tests/baselines/reference/subtypingWithNumericIndexer4.errors.txt +++ b/tests/baselines/reference/subtypingWithNumericIndexer4.errors.txt @@ -6,7 +6,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW Index signatures are incompatible. Type 'string' is not assignable to type 'Base'. Property 'foo' is missing in type 'String'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithNumericIndexer4.ts(20,21): error TS2344: Type 'Base' does not satisfy the constraint 'Derived'. +tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithNumericIndexer4.ts(20,23): error TS2344: Type 'Base' does not satisfy the constraint 'Derived'. Property 'bar' is missing in type 'Base'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithNumericIndexer4.ts(24,11): error TS2415: Class 'B3' incorrectly extends base class 'A'. Index signatures are incompatible. @@ -44,7 +44,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2415: Index signatures are incompatible. !!! error TS2415: Type 'string' is not assignable to type 'Base'. !!! error TS2415: Property 'foo' is missing in type 'String'. - ~~~~~~~ + ~~~~ !!! error TS2344: Type 'Base' does not satisfy the constraint 'Derived'. !!! error TS2344: Property 'bar' is missing in type 'Base'. [x: number]: string; // error diff --git a/tests/baselines/reference/subtypingWithStringIndexer2.errors.txt b/tests/baselines/reference/subtypingWithStringIndexer2.errors.txt index cfe8f2b8e1d10..82f6229b20c6a 100644 --- a/tests/baselines/reference/subtypingWithStringIndexer2.errors.txt +++ b/tests/baselines/reference/subtypingWithStringIndexer2.errors.txt @@ -2,7 +2,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW Index signatures are incompatible. Type 'Base' is not assignable to type 'Derived'. Property 'bar' is missing in type 'Base'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithStringIndexer2.ts(24,25): error TS2344: Type 'Base' does not satisfy the constraint 'Derived'. +tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithStringIndexer2.ts(24,27): error TS2344: Type 'Base' does not satisfy the constraint 'Derived'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithStringIndexer2.ts(32,15): error TS2430: Interface 'B3' incorrectly extends interface 'A'. Index signatures are incompatible. Type 'Base' is not assignable to type 'T'. @@ -44,7 +44,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW } interface B extends A { - ~~~~~~~ + ~~~~ !!! error TS2344: Type 'Base' does not satisfy the constraint 'Derived'. [x: string]: Derived; // error } diff --git a/tests/baselines/reference/subtypingWithStringIndexer3.errors.txt b/tests/baselines/reference/subtypingWithStringIndexer3.errors.txt index 91c9f7fd47ea9..205ecf780cb7e 100644 --- a/tests/baselines/reference/subtypingWithStringIndexer3.errors.txt +++ b/tests/baselines/reference/subtypingWithStringIndexer3.errors.txt @@ -2,7 +2,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW Index signatures are incompatible. Type 'Base' is not assignable to type 'Derived'. Property 'bar' is missing in type 'Base'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithStringIndexer3.ts(24,21): error TS2344: Type 'Base' does not satisfy the constraint 'Derived'. +tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithStringIndexer3.ts(24,23): error TS2344: Type 'Base' does not satisfy the constraint 'Derived'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithStringIndexer3.ts(32,11): error TS2415: Class 'B3' incorrectly extends base class 'A'. Index signatures are incompatible. Type 'Base' is not assignable to type 'T'. @@ -44,7 +44,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW } class B extends A { - ~~~~~~~ + ~~~~ !!! error TS2344: Type 'Base' does not satisfy the constraint 'Derived'. [x: string]: Derived; // error } diff --git a/tests/baselines/reference/subtypingWithStringIndexer4.errors.txt b/tests/baselines/reference/subtypingWithStringIndexer4.errors.txt index 6df716791c2f0..4aa889444e5c3 100644 --- a/tests/baselines/reference/subtypingWithStringIndexer4.errors.txt +++ b/tests/baselines/reference/subtypingWithStringIndexer4.errors.txt @@ -6,7 +6,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW Index signatures are incompatible. Type 'string' is not assignable to type 'Base'. Property 'foo' is missing in type 'String'. -tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithStringIndexer4.ts(20,21): error TS2344: Type 'Base' does not satisfy the constraint 'Derived'. +tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithStringIndexer4.ts(20,23): error TS2344: Type 'Base' does not satisfy the constraint 'Derived'. Property 'bar' is missing in type 'Base'. tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingWithStringIndexer4.ts(24,11): error TS2415: Class 'B3' incorrectly extends base class 'A'. Index signatures are incompatible. @@ -44,7 +44,7 @@ tests/cases/conformance/types/typeRelationships/subtypesAndSuperTypes/subtypingW !!! error TS2415: Index signatures are incompatible. !!! error TS2415: Type 'string' is not assignable to type 'Base'. !!! error TS2415: Property 'foo' is missing in type 'String'. - ~~~~~~~ + ~~~~ !!! error TS2344: Type 'Base' does not satisfy the constraint 'Derived'. !!! error TS2344: Property 'bar' is missing in type 'Base'. [x: string]: string; // error diff --git a/tests/baselines/reference/thisInInvalidContexts.errors.txt b/tests/baselines/reference/thisInInvalidContexts.errors.txt index 055e0770dea8f..9cb554ab5dfc6 100644 --- a/tests/baselines/reference/thisInInvalidContexts.errors.txt +++ b/tests/baselines/reference/thisInInvalidContexts.errors.txt @@ -1,7 +1,7 @@ tests/cases/conformance/expressions/thisKeyword/thisInInvalidContexts.ts(3,16): error TS2334: 'this' cannot be referenced in a static property initializer. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContexts.ts(22,15): error TS2332: 'this' cannot be referenced in current location. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContexts.ts(28,13): error TS2331: 'this' cannot be referenced in a module or namespace body. -tests/cases/conformance/expressions/thisKeyword/thisInInvalidContexts.ts(38,25): error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. +tests/cases/conformance/expressions/thisKeyword/thisInInvalidContexts.ts(38,25): error TS2507: Base expression is not of a constructor function type. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContexts.ts(44,9): error TS2332: 'this' cannot be referenced in current location. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContexts.ts(45,9): error TS2332: 'this' cannot be referenced in current location. @@ -52,7 +52,7 @@ tests/cases/conformance/expressions/thisKeyword/thisInInvalidContexts.ts(45,9): class ErrClass3 extends this { ~~~~ -!!! error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. +!!! error TS2507: Base expression is not of a constructor function type. } diff --git a/tests/baselines/reference/thisInInvalidContextsExternalModule.errors.txt b/tests/baselines/reference/thisInInvalidContextsExternalModule.errors.txt index 03c494cad4561..96fab807f5e9d 100644 --- a/tests/baselines/reference/thisInInvalidContextsExternalModule.errors.txt +++ b/tests/baselines/reference/thisInInvalidContextsExternalModule.errors.txt @@ -1,7 +1,7 @@ tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalModule.ts(3,16): error TS2334: 'this' cannot be referenced in a static property initializer. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalModule.ts(22,15): error TS2332: 'this' cannot be referenced in current location. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalModule.ts(28,13): error TS2331: 'this' cannot be referenced in a module or namespace body. -tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalModule.ts(38,25): error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. +tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalModule.ts(38,25): error TS2507: Base expression is not of a constructor function type. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalModule.ts(44,9): error TS2332: 'this' cannot be referenced in current location. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalModule.ts(45,9): error TS2332: 'this' cannot be referenced in current location. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalModule.ts(48,1): error TS1148: Cannot compile modules unless the '--module' flag is provided. @@ -53,7 +53,7 @@ tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalMod class ErrClass3 extends this { ~~~~ -!!! error TS9002: Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses. +!!! error TS2507: Base expression is not of a constructor function type. } diff --git a/tests/baselines/reference/typeParameterAsBaseClass.errors.txt b/tests/baselines/reference/typeParameterAsBaseClass.errors.txt index 5602bf69f5775..dec7f7f2a4a24 100644 --- a/tests/baselines/reference/typeParameterAsBaseClass.errors.txt +++ b/tests/baselines/reference/typeParameterAsBaseClass.errors.txt @@ -1,11 +1,11 @@ -tests/cases/compiler/typeParameterAsBaseClass.ts(1,20): error TS2311: A class may only extend another class. +tests/cases/compiler/typeParameterAsBaseClass.ts(1,20): error TS2304: Cannot find name 'T'. tests/cases/compiler/typeParameterAsBaseClass.ts(2,24): error TS2422: A class may only implement another class or interface. ==== tests/cases/compiler/typeParameterAsBaseClass.ts (2 errors) ==== class C extends T {} ~ -!!! error TS2311: A class may only extend another class. +!!! error TS2304: Cannot find name 'T'. class C2 implements T {} ~ !!! error TS2422: A class may only implement another class or interface. \ No newline at end of file diff --git a/tests/baselines/reference/typeParameterAsBaseType.errors.txt b/tests/baselines/reference/typeParameterAsBaseType.errors.txt index b945dcdd987c2..835b236994867 100644 --- a/tests/baselines/reference/typeParameterAsBaseType.errors.txt +++ b/tests/baselines/reference/typeParameterAsBaseType.errors.txt @@ -1,5 +1,5 @@ -tests/cases/conformance/types/typeParameters/typeParameterAsBaseType.ts(4,20): error TS2311: A class may only extend another class. -tests/cases/conformance/types/typeParameters/typeParameterAsBaseType.ts(5,24): error TS2311: A class may only extend another class. +tests/cases/conformance/types/typeParameters/typeParameterAsBaseType.ts(4,20): error TS2304: Cannot find name 'T'. +tests/cases/conformance/types/typeParameters/typeParameterAsBaseType.ts(5,24): error TS2304: Cannot find name 'U'. tests/cases/conformance/types/typeParameters/typeParameterAsBaseType.ts(7,24): error TS2312: An interface may only extend a class or another interface. tests/cases/conformance/types/typeParameters/typeParameterAsBaseType.ts(8,28): error TS2312: An interface may only extend a class or another interface. @@ -10,10 +10,10 @@ tests/cases/conformance/types/typeParameters/typeParameterAsBaseType.ts(8,28): e class C extends T { } ~ -!!! error TS2311: A class may only extend another class. +!!! error TS2304: Cannot find name 'T'. class C2 extends U { } ~ -!!! error TS2311: A class may only extend another class. +!!! error TS2304: Cannot find name 'U'. interface I extends T { } ~ diff --git a/tests/baselines/reference/undeclaredBase.errors.txt b/tests/baselines/reference/undeclaredBase.errors.txt index 5a6d838284c26..25d550572d48e 100644 --- a/tests/baselines/reference/undeclaredBase.errors.txt +++ b/tests/baselines/reference/undeclaredBase.errors.txt @@ -1,9 +1,9 @@ -tests/cases/compiler/undeclaredBase.ts(1,37): error TS2305: Module 'M' has no exported member 'I'. +tests/cases/compiler/undeclaredBase.ts(1,37): error TS2339: Property 'I' does not exist on type 'typeof M'. ==== tests/cases/compiler/undeclaredBase.ts (1 errors) ==== module M { export class C extends M.I { } } ~ -!!! error TS2305: Module 'M' has no exported member 'I'. +!!! error TS2339: Property 'I' does not exist on type 'typeof M'. \ No newline at end of file diff --git a/tests/baselines/reference/untypedFunctionCallsWithTypeParameters1.errors.txt b/tests/baselines/reference/untypedFunctionCallsWithTypeParameters1.errors.txt index 624d53f95d359..c6cd96578b4be 100644 --- a/tests/baselines/reference/untypedFunctionCallsWithTypeParameters1.errors.txt +++ b/tests/baselines/reference/untypedFunctionCallsWithTypeParameters1.errors.txt @@ -4,14 +4,13 @@ tests/cases/compiler/untypedFunctionCallsWithTypeParameters1.ts(8,10): error TS2 tests/cases/compiler/untypedFunctionCallsWithTypeParameters1.ts(10,7): error TS2420: Class 'C' incorrectly implements interface 'Function'. Property 'apply' is missing in type 'C'. tests/cases/compiler/untypedFunctionCallsWithTypeParameters1.ts(18,10): error TS2349: Cannot invoke an expression whose type lacks a call signature. -tests/cases/compiler/untypedFunctionCallsWithTypeParameters1.ts(20,18): error TS2311: A class may only extend another class. -tests/cases/compiler/untypedFunctionCallsWithTypeParameters1.ts(22,10): error TS2349: Cannot invoke an expression whose type lacks a call signature. +tests/cases/compiler/untypedFunctionCallsWithTypeParameters1.ts(22,10): error TS2347: Untyped function calls may not accept type arguments. tests/cases/compiler/untypedFunctionCallsWithTypeParameters1.ts(28,10): error TS2346: Supplied parameters do not match any signature of call target. tests/cases/compiler/untypedFunctionCallsWithTypeParameters1.ts(35,1): error TS2346: Supplied parameters do not match any signature of call target. tests/cases/compiler/untypedFunctionCallsWithTypeParameters1.ts(41,1): error TS2346: Supplied parameters do not match any signature of call target. -==== tests/cases/compiler/untypedFunctionCallsWithTypeParameters1.ts (10 errors) ==== +==== tests/cases/compiler/untypedFunctionCallsWithTypeParameters1.ts (9 errors) ==== // none of these function calls should be allowed var x = function () { return; }; var r1 = x(); @@ -43,12 +42,10 @@ tests/cases/compiler/untypedFunctionCallsWithTypeParameters1.ts(41,1): error TS2 !!! error TS2349: Cannot invoke an expression whose type lacks a call signature. class C2 extends Function { } // error - ~~~~~~~~ -!!! error TS2311: A class may only extend another class. var c3: C2; var r5 = c3(); // error ~~~~~~~~~~~~ -!!! error TS2349: Cannot invoke an expression whose type lacks a call signature. +!!! error TS2347: Untyped function calls may not accept type arguments. interface I { (number): number; From cc81cc77f902cb986a38911f20d0ab0b17a9ceb3 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Mon, 15 Jun 2015 15:44:43 -0700 Subject: [PATCH 04/16] Check that base constructor return types are identical Treat class extends clause as expression position in services.ts --- src/compiler/checker.ts | 17 +++++++++++++---- .../diagnosticInformationMap.generated.ts | 1 + src/compiler/diagnosticMessages.json | 4 ++++ src/compiler/utilities.ts | 13 ++++++++++--- src/services/services.ts | 3 ++- 5 files changed, 30 insertions(+), 8 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 13235f64b9e9d..8395fc04626b5 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2642,7 +2642,7 @@ module ts { return type.baseConstructorType = unknownType; } if (baseConstructorType !== unknownType && baseConstructorType !== nullType && !isConstructorType(baseConstructorType)) { - error(baseTypeNode, Diagnostics.Base_expression_is_not_of_a_constructor_function_type); + error(baseTypeNode.expression, Diagnostics.Base_expression_is_not_of_a_constructor_function_type); return type.baseConstructorType = unknownType; } type.baseConstructorType = baseConstructorType; @@ -2680,7 +2680,7 @@ module ts { else { let constructors = getInstantiatedConstructorsForTypeArguments(baseContructorType, baseTypeNode.typeArguments); if (!constructors.length) { - error(baseTypeNode, Diagnostics.No_base_constructor_has_the_specified_number_of_type_arguments); + error(baseTypeNode.expression, Diagnostics.No_base_constructor_has_the_specified_number_of_type_arguments); return; } baseType = getReturnTypeOfSignature(constructors[0]); @@ -2689,7 +2689,7 @@ module ts { return; } if (!(getTargetType(baseType).flags & (TypeFlags.Class | TypeFlags.Interface))) { - error(baseTypeNode, Diagnostics.Base_constructor_does_not_return_a_class_or_interface_type); + error(baseTypeNode.expression, Diagnostics.Base_constructor_does_not_return_a_class_or_interface_type); return; } if (type === baseType || hasBaseType(baseType, type)) { @@ -10638,7 +10638,6 @@ module ts { let baseTypeNode = getClassExtendsHeritageClauseElement(node); if (baseTypeNode) { emitExtends = emitExtends || !isInAmbientContext(node); - // !!! checkExpressionWithTypeArguments(baseTypeNode); let baseTypes = getBaseTypes(type); if (baseTypes.length && produceDiagnostics) { let baseType = baseTypes[0]; @@ -10650,6 +10649,12 @@ module ts { checkTypeAssignableTo(type, baseType, node.name || node, Diagnostics.Class_0_incorrectly_extends_base_class_1); checkTypeAssignableTo(staticType, getTypeWithoutSignatures(staticBaseType), node.name || node, Diagnostics.Class_static_side_0_incorrectly_extends_base_class_static_side_1); + if (!(staticBaseType.symbol && staticBaseType.symbol.flags & SymbolFlags.Class)) { + let constructors = getInstantiatedConstructorsForTypeArguments(staticBaseType, baseTypeNode.typeArguments); + if (forEach(constructors, sig => getReturnTypeOfSignature(sig) !== baseType)) { + error(baseTypeNode.expression, Diagnostics.Base_constructors_must_all_have_the_same_return_type); + } + } checkKindsOfPropertyMemberOverrides(type, baseType); } } @@ -11997,6 +12002,10 @@ module ts { return unknownType; } + if (isClassExtendsExpressionWithTypeArguments(node)) { + return getBaseTypes(getDeclaredTypeOfSymbol(getSymbolOfNode(node.parent.parent)))[0]; + } + if (isTypeNode(node)) { return getTypeFromTypeNode(node); } diff --git a/src/compiler/diagnosticInformationMap.generated.ts b/src/compiler/diagnosticInformationMap.generated.ts index 3c75f388a3e9e..7d61a4bb6cdf7 100644 --- a/src/compiler/diagnosticInformationMap.generated.ts +++ b/src/compiler/diagnosticInformationMap.generated.ts @@ -383,6 +383,7 @@ module ts { Base_expression_is_not_of_a_constructor_function_type: { code: 2507, category: DiagnosticCategory.Error, key: "Base expression is not of a constructor function type." }, No_base_constructor_has_the_specified_number_of_type_arguments: { code: 2508, category: DiagnosticCategory.Error, key: "No base constructor has the specified number of type arguments." }, Base_constructor_does_not_return_a_class_or_interface_type: { code: 2509, category: DiagnosticCategory.Error, key: "Base constructor does not return a class or interface type." }, + Base_constructors_must_all_have_the_same_return_type: { code: 2510, category: DiagnosticCategory.Error, key: "Base constructors must all have the same return type." }, Import_declaration_0_is_using_private_name_1: { code: 4000, category: DiagnosticCategory.Error, key: "Import declaration '{0}' is using private name '{1}'." }, Type_parameter_0_of_exported_class_has_or_is_using_private_name_1: { code: 4002, category: DiagnosticCategory.Error, key: "Type parameter '{0}' of exported class has or is using private name '{1}'." }, Type_parameter_0_of_exported_interface_has_or_is_using_private_name_1: { code: 4004, category: DiagnosticCategory.Error, key: "Type parameter '{0}' of exported interface has or is using private name '{1}'." }, diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index db062b759f38e..89171ca175312 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -1521,6 +1521,10 @@ "category": "Error", "code": 2509 }, + "Base constructors must all have the same return type.": { + "category": "Error", + "code": 2510 + }, "Import declaration '{0}' is using private name '{1}'.": { "category": "Error", diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index 6c0943f22fd89..799f9efb44d00 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -426,7 +426,7 @@ module ts { // Specialized signatures can have string literals as their parameters' type names return node.parent.kind === SyntaxKind.Parameter; case SyntaxKind.ExpressionWithTypeArguments: - return true; + return !isClassExtendsExpressionWithTypeArguments(node); // Identifiers and qualified names may be type nodes, depending on their context. Climb // above them to find the lowest container @@ -460,7 +460,7 @@ module ts { } switch (parent.kind) { case SyntaxKind.ExpressionWithTypeArguments: - return true; + return !isClassExtendsExpressionWithTypeArguments(parent); case SyntaxKind.TypeParameter: return node === (parent).constraint; case SyntaxKind.PropertyDeclaration: @@ -872,7 +872,6 @@ module ts { while (node.parent.kind === SyntaxKind.QualifiedName) { node = node.parent; } - return node.parent.kind === SyntaxKind.TypeQuery; case SyntaxKind.Identifier: if (node.parent.kind === SyntaxKind.TypeQuery) { @@ -920,6 +919,8 @@ module ts { return node === (parent).expression; case SyntaxKind.Decorator: return true; + case SyntaxKind.ExpressionWithTypeArguments: + return isClassExtendsExpressionWithTypeArguments(parent); default: if (isExpression(parent)) { return true; @@ -1878,6 +1879,12 @@ module ts { return token >= SyntaxKind.FirstAssignment && token <= SyntaxKind.LastAssignment; } + export function isClassExtendsExpressionWithTypeArguments(node: Node): boolean { + return node.kind === SyntaxKind.ExpressionWithTypeArguments && + (node.parent).token === SyntaxKind.ExtendsKeyword && + node.parent.parent.kind === SyntaxKind.ClassDeclaration; + } + // Returns false if this heritage clause element's expression contains something unsupported // (i.e. not a name or dotted name). export function isSupportedExpressionWithTypeArguments(node: ExpressionWithTypeArguments): boolean { diff --git a/src/services/services.ts b/src/services/services.ts index 5f030bf320ea4..0ed67f322ac34 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -5811,7 +5811,8 @@ module ts { node = node.parent; } - return node.parent.kind === SyntaxKind.TypeReference || node.parent.kind === SyntaxKind.ExpressionWithTypeArguments; + return node.parent.kind === SyntaxKind.TypeReference || + (node.parent.kind === SyntaxKind.ExpressionWithTypeArguments && !isClassExtendsExpressionWithTypeArguments(node.parent)); } function isNamespaceReference(node: Node): boolean { From 367e257928b9c7a80f02e859c1843ba9de5ce228 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Mon, 15 Jun 2015 15:46:29 -0700 Subject: [PATCH 05/16] Accepting new baselines --- ...assHeritageListMemberTypeAnnotations.types | 2 +- ...essibleTypeInTypeParameterConstraint.types | 2 +- .../accessOverriddenBaseClassMember1.types | 2 +- .../aliasUsageInAccessorsOfClass.types | 4 +- .../reference/aliasUsageInArray.types | 4 +- .../aliasUsageInFunctionExpression.types | 4 +- .../aliasUsageInGenericFunction.types | 4 +- .../aliasUsageInIndexerOfClass.types | 4 +- .../reference/aliasUsageInObjectLiteral.types | 4 +- .../reference/aliasUsageInOrExpression.types | 4 +- ...asUsageInTypeArgumentOfExtendsClause.types | 6 +- .../reference/aliasUsageInVarAssignment.types | 4 +- .../ambientClassDeclarationWithExtends.types | 2 +- ...oduleWithClassDeclarationWithExtends.types | 2 +- .../ambiguousOverloadResolution.types | 2 +- .../reference/arrayBestCommonTypes.types | 4 +- .../reference/arrayLiteralTypeInference.types | 4 +- tests/baselines/reference/arrayLiterals.types | 4 +- .../arrayLiteralsWithRecursiveGenerics.types | 2 +- .../assignmentCompatWithCallSignatures3.types | 6 +- .../assignmentCompatWithCallSignatures5.types | 6 +- .../assignmentCompatWithCallSignatures6.types | 6 +- ...gnmentCompatWithConstructSignatures3.types | 6 +- ...gnmentCompatWithConstructSignatures5.types | 6 +- ...gnmentCompatWithConstructSignatures6.types | 6 +- .../baseIndexSignatureResolution.types | 2 +- .../reference/baseTypeOrderChecking.types | 4 +- .../baseTypeWrappingInstantiationChain.types | 4 +- ...stCommonTypeOfConditionalExpressions.types | 4 +- .../reference/bestCommonTypeOfTuple2.types | 4 +- ...SignatureAssignabilityInInheritance2.types | 6 +- ...SignatureAssignabilityInInheritance4.types | 6 +- ...SignatureAssignabilityInInheritance5.types | 6 +- ...SignatureAssignabilityInInheritance6.types | 6 +- .../baselines/reference/callWithSpread.types | 2 +- .../reference/callWithSpreadES6.types | 2 +- .../reference/captureThisInSuperCall.types | 2 +- .../reference/checkForObjectTooStrict.types | 6 +- .../reference/circularImportAlias.types | 4 +- ...sConstructorParametersAccessibility3.types | 2 +- ...rationMergedInModuleWithContinuation.types | 4 +- .../classDoesNotDependOnBaseTypes.types | 2 +- .../reference/classExtendingClass.types | 4 +- .../classExtendingQualifiedName2.types | 4 +- .../reference/classImplementsClass3.types | 2 +- tests/baselines/reference/classOrder2.types | 2 +- tests/baselines/reference/classOrderBug.types | 2 +- .../reference/classSideInheritance2.types | 2 +- .../classWithProtectedProperty.types | 2 +- .../reference/commentOnAmbientClass1.types | 2 +- .../reference/commentOnAmbientModule.types | 4 +- .../reference/commentsInheritance.types | 4 +- ...mparisonOperatorWithIdenticalObjects.types | 4 +- ...atorWithSubtypeObjectOnCallSignature.types | 2 +- ...hSubtypeObjectOnConstructorSignature.types | 2 +- ...torWithSubtypeObjectOnIndexSignature.types | 2 +- ...ypeObjectOnInstantiatedCallSignature.types | 2 +- ...ctOnInstantiatedConstructorSignature.types | 2 +- ...nOperatorWithSubtypeObjectOnProperty.types | 4 +- .../reference/complexClassRelationships.types | 2 +- .../computedPropertyNames25_ES5.types | 2 +- .../computedPropertyNames25_ES6.types | 2 +- .../computedPropertyNames28_ES5.types | 2 +- .../computedPropertyNames28_ES6.types | 2 +- .../computedPropertyNames31_ES5.types | 2 +- .../computedPropertyNames31_ES6.types | 2 +- .../conditionalOperatorWithIdenticalBCT.types | 4 +- .../reference/constantOverloadFunction.types | 6 +- ...raintCheckInGenericBaseTypeReference.types | 2 +- ...SignatureAssignabilityInInheritance2.types | 6 +- ...SignatureAssignabilityInInheritance4.types | 6 +- ...SignatureAssignabilityInInheritance5.types | 6 +- ...SignatureAssignabilityInInheritance6.types | 6 +- .../baselines/reference/constructorArgs.types | 2 +- ...orFunctionTypeIsAssignableToBaseType.types | 4 +- ...rFunctionTypeIsAssignableToBaseType2.types | 4 +- .../constructorHasPrototypeProperty.types | 4 +- .../reference/constructorOverloads2.types | 2 +- .../contextualTypingArrayOfLambdas.types | 4 +- ...textualTypingOfConditionalExpression.types | 4 +- .../declFileAliasUseBeforeDeclaration2.types | 2 +- ...clFileForFunctionTypeAsTypeParameter.types | 2 +- ...GenericClassWithGenericExtendedClass.types | 2 +- .../reference/declFileGenericType.types | 4 +- .../reference/declFileGenericType2.types | 8 +- ...tingWithClassReferredByExtendsClause.types | 8 +- ...lauseThatHasItsContainerNameConflict.types | 2 +- .../declarationEmit_nameConflicts3.types | 2 +- .../declarationEmit_protectedMembers.types | 4 +- .../reference/declareDottedExtend.types | 8 +- ...sIndexersWithAssignmentCompatibility.types | 4 +- ...erivedClassOverridesProtectedMembers.types | 2 +- ...rivedClassOverridesProtectedMembers2.types | 4 +- .../derivedClassOverridesWithoutSubtype.types | 4 +- .../baselines/reference/derivedClasses.types | 4 +- ...HiddenBaseCallViaSuperPropertyAccess.types | 2 +- ...rivedTypeDoesNotRequireExtendsClause.types | 2 +- ...ionWithExtensionAndTypeArgumentInES6.types | 4 +- ...itClassDeclarationWithExtensionInES6.types | 4 +- ...clarationWithPropertyAssignmentInES6.types | 4 +- ...lassDeclarationWithSuperMethodCall01.types | 2 +- .../reference/es6ClassSuperCodegenBug.types | 2 +- tests/baselines/reference/es6ClassTest7.types | 4 +- .../exportAssignmentOfGenericType1.types | 2 +- tests/baselines/reference/extBaseClass1.types | 8 +- .../extendAndImplementTheSameBaseType.types | 2 +- .../extendBaseClassBeforeItsDeclared.types | 2 +- .../reference/extendNonClassSymbol1.symbols | 12 ++ .../reference/extendNonClassSymbol1.types | 13 ++ ...ndingClassFromAliasAndUsageInIndexer.types | 8 +- .../reference/functionImplementations.types | 4 +- .../functionSubtypingOfVarArgs.types | 2 +- .../functionSubtypingOfVarArgs2.types | 2 +- .../reference/generatedContextualTyping.types | 4 +- .../reference/generatorTypeCheck17.types | 2 +- .../reference/generatorTypeCheck19.types | 2 +- .../genericBaseClassLiteralProperty.types | 2 +- .../genericBaseClassLiteralProperty2.types | 2 +- ...WithConstraintsTypeArgumentInference.types | 4 +- .../genericCallWithObjectTypeArgs2.types | 4 +- ...allWithObjectTypeArgsAndConstraints2.types | 2 +- .../genericCallbacksAndClassHierarchy.types | 2 +- ...heritsConstructorFromNonGenericClass.types | 4 +- ...assPropertyInheritanceSpecialization.types | 4 +- .../reference/genericClassStaticMethod.types | 2 +- .../baselines/reference/genericClasses3.types | 2 +- ...ericConstraintOnExtendedBuiltinTypes.types | 2 +- ...ricConstraintOnExtendedBuiltinTypes2.types | 2 +- .../reference/genericPrototypeProperty2.types | 4 +- .../reference/genericPrototypeProperty3.types | 4 +- ...cRecursiveImplicitConstructorErrors2.types | 2 +- ...nericWithIndexerOfTypeParameterType2.types | 4 +- .../heterogeneousArrayLiterals.types | 4 +- .../reference/ifDoWhileStatements.types | 2 +- .../reference/importShadowsGlobalName.types | 2 +- .../reference/importUsedInExtendsList1.types | 4 +- ...finitelyExpandingTypesNonGenericBase.types | 2 +- ...eNamePrivatePropertiesFromSameOrigin.types | 4 +- ...nheritanceMemberFuncOverridingMethod.types | 2 +- ...anceMemberPropertyOverridingProperty.types | 2 +- ...heritanceOfGenericConstructorMethod1.types | 2 +- ...heritanceOfGenericConstructorMethod2.types | 8 +- ...nheritanceStaticFuncOverridingMethod.types | 2 +- ...aticFuncOverridingPropertyOfFuncType.types | 2 +- ...icFunctionOverridingInstanceProperty.types | 2 +- .../inheritanceStaticMembersCompatible.types | 2 +- ...anceStaticPropertyOverridingProperty.types | 2 +- ...instantiatedReturnTypeContravariance.types | 2 +- .../reference/interfaceExtendsClass1.types | 6 +- .../reference/iterableArrayPattern11.types | 2 +- .../reference/iterableArrayPattern12.types | 2 +- .../reference/iterableArrayPattern13.types | 2 +- .../reference/iterableArrayPattern3.types | 2 +- .../reference/iterableArrayPattern4.types | 2 +- .../reference/iterableArrayPattern9.types | 2 +- tests/baselines/reference/localTypes1.types | 4 +- tests/baselines/reference/m7Bugs.types | 2 +- ...oduleImportedForTypeArgumentPosition.types | 2 +- .../moduleWithStatementsOfEveryKind.types | 8 +- .../mutuallyRecursiveGenericBaseTypes2.types | 2 +- tests/baselines/reference/noEmitHelpers.types | 2 +- ...ricClassExtendingGenericClassWithAny.types | 2 +- .../reference/numericIndexerConstraint3.types | 2 +- .../reference/numericIndexerConstraint4.types | 2 +- ...ectTypesIdentityWithNumericIndexers1.types | 4 +- ...ectTypesIdentityWithNumericIndexers2.types | 6 +- ...ectTypesIdentityWithNumericIndexers3.types | 4 +- .../objectTypesIdentityWithPrivates.types | 4 +- .../objectTypesIdentityWithPrivates2.types | 2 +- ...bjectTypesIdentityWithStringIndexers.types | 4 +- ...jectTypesIdentityWithStringIndexers2.types | 6 +- .../optionalConstructorArgInSuper.types | 2 +- .../reference/optionalParamInOverride.types | 2 +- .../overloadOnConstConstraintChecks1.types | 6 +- .../overloadOnConstConstraintChecks2.types | 4 +- .../overloadOnConstConstraintChecks3.types | 4 +- tests/baselines/reference/privacyClass.types | 48 ++--- .../baselines/reference/privacyGloClass.types | 20 +- ...ccessOnTypeParameterWithConstraints2.types | 2 +- ...lassPropertyAccessibleWithinSubclass.types | 2 +- .../recursiveBaseConstructorCreation1.types | 2 +- .../recursiveBaseConstructorCreation2.types | 4 +- ...nstantiationsWithDefaultConstructors.types | 2 +- .../recursiveComplicatedClasses.types | 6 +- ...elySpecializedConstructorDeclaration.types | 2 +- ...sDeclarationWhenInBaseTypeResolution.types | 188 +++++++++--------- .../reference/returnStatements.types | 2 +- ...thDefaultConstructorAndExtendsClause.types | 2 +- .../specializedInheritedConstructors1.types | 2 +- .../baselines/reference/staticFactory1.types | 2 +- .../reference/staticInheritance.types | 2 +- .../staticMemberAccessOffDerivedType1.types | 2 +- .../reference/subtypingTransitivity.types | 4 +- .../subtypingWithCallSignatures2.types | 6 +- .../subtypingWithCallSignatures3.types | 6 +- .../subtypingWithCallSignatures4.types | 6 +- .../subtypingWithConstructSignatures2.types | 6 +- .../subtypingWithConstructSignatures3.types | 6 +- .../subtypingWithConstructSignatures4.types | 6 +- .../subtypingWithConstructSignatures5.types | 6 +- .../subtypingWithConstructSignatures6.types | 6 +- .../subtypingWithObjectMembers4.types | 8 +- tests/baselines/reference/super2.types | 8 +- .../reference/superAccessInFatArrow1.types | 2 +- ...FromClassThatDerivesFromGenericType1.types | 2 +- ...FromClassThatDerivesFromGenericType2.types | 2 +- .../superCallParameterContextualTyping1.types | 2 +- .../superCallParameterContextualTyping3.types | 2 +- tests/baselines/reference/superCalls.types | 4 +- .../reference/superInCatchBlock1.types | 2 +- .../superWithGenericSpecialization.types | 2 +- .../reference/superWithGenerics.types | 2 +- .../reference/switchStatements.types | 2 +- .../reference/symbolProperty26.types | 2 +- .../reference/symbolProperty27.types | 2 +- .../reference/symbolProperty28.types | 2 +- .../reference/typeGuardFunction.types | 2 +- .../reference/typeGuardFunctionGenerics.types | 2 +- .../reference/typeGuardOfFormInstanceOf.types | 2 +- .../reference/typeGuardOfFormIsType.types | 2 +- .../baselines/reference/typeOfSuperCall.types | 2 +- .../typeParameterExtendingUnion1.types | 4 +- .../typeParameterExtendingUnion2.types | 4 +- tests/baselines/reference/typeofClass2.types | 2 +- .../typesWithSpecializedCallSignatures.types | 4 +- ...esWithSpecializedConstructSignatures.types | 4 +- .../undefinedIsSubtypeOfEverything.types | 44 ++-- .../reference/underscoreMapFirst.types | 2 +- .../reference/unionTypeFromArrayLiteral.types | 4 +- .../reference/validUseOfThisInSuper.types | 2 +- .../reference/varArgsOnConstructorTypes.types | 2 +- 231 files changed, 553 insertions(+), 528 deletions(-) create mode 100644 tests/baselines/reference/extendNonClassSymbol1.symbols create mode 100644 tests/baselines/reference/extendNonClassSymbol1.types diff --git a/tests/baselines/reference/ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.types b/tests/baselines/reference/ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.types index a5cefcc521ebf..91c1ea573ec3f 100644 --- a/tests/baselines/reference/ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.types +++ b/tests/baselines/reference/ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.types @@ -23,7 +23,7 @@ module A { export class Point3d extends Point { >Point3d : Point3d ->Point : Point +>Point : typeof Point z: number; >z : number diff --git a/tests/baselines/reference/ExportClassWithInaccessibleTypeInTypeParameterConstraint.types b/tests/baselines/reference/ExportClassWithInaccessibleTypeInTypeParameterConstraint.types index ba174d9bbba55..e1764ef1c2055 100644 --- a/tests/baselines/reference/ExportClassWithInaccessibleTypeInTypeParameterConstraint.types +++ b/tests/baselines/reference/ExportClassWithInaccessibleTypeInTypeParameterConstraint.types @@ -23,7 +23,7 @@ module A { export class Point3d extends Point { >Point3d : Point3d ->Point : Point +>Point : typeof Point z: number; >z : number diff --git a/tests/baselines/reference/accessOverriddenBaseClassMember1.types b/tests/baselines/reference/accessOverriddenBaseClassMember1.types index 2aeb541d7239d..91b84981fc1d8 100644 --- a/tests/baselines/reference/accessOverriddenBaseClassMember1.types +++ b/tests/baselines/reference/accessOverriddenBaseClassMember1.types @@ -25,7 +25,7 @@ class Point { } class ColoredPoint extends Point { >ColoredPoint : ColoredPoint ->Point : Point +>Point : typeof Point constructor(x: number, y: number, public color: string) { >x : number diff --git a/tests/baselines/reference/aliasUsageInAccessorsOfClass.types b/tests/baselines/reference/aliasUsageInAccessorsOfClass.types index eccdbc8528cda..df91e254c65af 100644 --- a/tests/baselines/reference/aliasUsageInAccessorsOfClass.types +++ b/tests/baselines/reference/aliasUsageInAccessorsOfClass.types @@ -53,9 +53,9 @@ import Backbone = require("aliasUsage1_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone.Model : any +>Backbone.Model : typeof Backbone.Model >Backbone : typeof Backbone ->Model : Backbone.Model +>Model : typeof Backbone.Model // interesting stuff here } diff --git a/tests/baselines/reference/aliasUsageInArray.types b/tests/baselines/reference/aliasUsageInArray.types index ee54300e7d959..9410d4362bb4a 100644 --- a/tests/baselines/reference/aliasUsageInArray.types +++ b/tests/baselines/reference/aliasUsageInArray.types @@ -41,9 +41,9 @@ import Backbone = require("aliasUsageInArray_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone.Model : any +>Backbone.Model : typeof Backbone.Model >Backbone : typeof Backbone ->Model : Backbone.Model +>Model : typeof Backbone.Model // interesting stuff here } diff --git a/tests/baselines/reference/aliasUsageInFunctionExpression.types b/tests/baselines/reference/aliasUsageInFunctionExpression.types index 17994dcab52ab..9b2244f9ff877 100644 --- a/tests/baselines/reference/aliasUsageInFunctionExpression.types +++ b/tests/baselines/reference/aliasUsageInFunctionExpression.types @@ -42,9 +42,9 @@ import Backbone = require("aliasUsageInFunctionExpression_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone.Model : any +>Backbone.Model : typeof Backbone.Model >Backbone : typeof Backbone ->Model : Backbone.Model +>Model : typeof Backbone.Model // interesting stuff here } diff --git a/tests/baselines/reference/aliasUsageInGenericFunction.types b/tests/baselines/reference/aliasUsageInGenericFunction.types index 0821732f5fcf4..8fdc39d3c6ac7 100644 --- a/tests/baselines/reference/aliasUsageInGenericFunction.types +++ b/tests/baselines/reference/aliasUsageInGenericFunction.types @@ -57,9 +57,9 @@ import Backbone = require("aliasUsageInGenericFunction_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone.Model : any +>Backbone.Model : typeof Backbone.Model >Backbone : typeof Backbone ->Model : Backbone.Model +>Model : typeof Backbone.Model // interesting stuff here } diff --git a/tests/baselines/reference/aliasUsageInIndexerOfClass.types b/tests/baselines/reference/aliasUsageInIndexerOfClass.types index fe67655d4f56a..ce9c598df4d15 100644 --- a/tests/baselines/reference/aliasUsageInIndexerOfClass.types +++ b/tests/baselines/reference/aliasUsageInIndexerOfClass.types @@ -50,9 +50,9 @@ import Backbone = require("aliasUsageInIndexerOfClass_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone.Model : any +>Backbone.Model : typeof Backbone.Model >Backbone : typeof Backbone ->Model : Backbone.Model +>Model : typeof Backbone.Model // interesting stuff here } diff --git a/tests/baselines/reference/aliasUsageInObjectLiteral.types b/tests/baselines/reference/aliasUsageInObjectLiteral.types index 32a78d555b122..58db02d1bf017 100644 --- a/tests/baselines/reference/aliasUsageInObjectLiteral.types +++ b/tests/baselines/reference/aliasUsageInObjectLiteral.types @@ -55,9 +55,9 @@ import Backbone = require("aliasUsageInObjectLiteral_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone.Model : any +>Backbone.Model : typeof Backbone.Model >Backbone : typeof Backbone ->Model : Backbone.Model +>Model : typeof Backbone.Model // interesting stuff here } diff --git a/tests/baselines/reference/aliasUsageInOrExpression.types b/tests/baselines/reference/aliasUsageInOrExpression.types index 8d3163d481b17..2c86e51841f64 100644 --- a/tests/baselines/reference/aliasUsageInOrExpression.types +++ b/tests/baselines/reference/aliasUsageInOrExpression.types @@ -79,9 +79,9 @@ import Backbone = require("aliasUsageInOrExpression_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone.Model : any +>Backbone.Model : typeof Backbone.Model >Backbone : typeof Backbone ->Model : Backbone.Model +>Model : typeof Backbone.Model // interesting stuff here } diff --git a/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.types b/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.types index 460b422a2a411..58fac086fd3e0 100644 --- a/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.types +++ b/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.types @@ -25,7 +25,7 @@ class C { } class D extends C { >D : D ->C : C +>C : typeof C >IHasVisualizationModel : IHasVisualizationModel x = moduleA; @@ -46,9 +46,9 @@ import Backbone = require("aliasUsageInTypeArgumentOfExtendsClause_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone.Model : any +>Backbone.Model : typeof Backbone.Model >Backbone : typeof Backbone ->Model : Backbone.Model +>Model : typeof Backbone.Model // interesting stuff here } diff --git a/tests/baselines/reference/aliasUsageInVarAssignment.types b/tests/baselines/reference/aliasUsageInVarAssignment.types index b5d20a1b37228..945fd16899ffc 100644 --- a/tests/baselines/reference/aliasUsageInVarAssignment.types +++ b/tests/baselines/reference/aliasUsageInVarAssignment.types @@ -37,9 +37,9 @@ import Backbone = require("aliasUsageInVarAssignment_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone.Model : any +>Backbone.Model : typeof Backbone.Model >Backbone : typeof Backbone ->Model : Backbone.Model +>Model : typeof Backbone.Model // interesting stuff here } diff --git a/tests/baselines/reference/ambientClassDeclarationWithExtends.types b/tests/baselines/reference/ambientClassDeclarationWithExtends.types index 7609856882bed..fc60ddcea860b 100644 --- a/tests/baselines/reference/ambientClassDeclarationWithExtends.types +++ b/tests/baselines/reference/ambientClassDeclarationWithExtends.types @@ -4,5 +4,5 @@ declare class A { } declare class B extends A { } >B : B ->A : A +>A : typeof A diff --git a/tests/baselines/reference/ambientModuleWithClassDeclarationWithExtends.types b/tests/baselines/reference/ambientModuleWithClassDeclarationWithExtends.types index 2708946518f58..875fd034e03e5 100644 --- a/tests/baselines/reference/ambientModuleWithClassDeclarationWithExtends.types +++ b/tests/baselines/reference/ambientModuleWithClassDeclarationWithExtends.types @@ -7,5 +7,5 @@ declare module foo { class B extends A { } >B : B ->A : A +>A : typeof A } diff --git a/tests/baselines/reference/ambiguousOverloadResolution.types b/tests/baselines/reference/ambiguousOverloadResolution.types index dd42b44d7c302..f01c53c29418d 100644 --- a/tests/baselines/reference/ambiguousOverloadResolution.types +++ b/tests/baselines/reference/ambiguousOverloadResolution.types @@ -4,7 +4,7 @@ class A { } class B extends A { x: number; } >B : B ->A : A +>A : typeof A >x : number declare function f(p: A, q: B): number; diff --git a/tests/baselines/reference/arrayBestCommonTypes.types b/tests/baselines/reference/arrayBestCommonTypes.types index 5650efc9ae77d..b240eebd7983d 100644 --- a/tests/baselines/reference/arrayBestCommonTypes.types +++ b/tests/baselines/reference/arrayBestCommonTypes.types @@ -15,7 +15,7 @@ module EmptyTypes { class derived extends base { } >derived : derived ->base : base +>base : typeof base class f { @@ -417,7 +417,7 @@ module NonEmptyTypes { class derived extends base { a: string; } >derived : derived ->base : base +>base : typeof base >a : string diff --git a/tests/baselines/reference/arrayLiteralTypeInference.types b/tests/baselines/reference/arrayLiteralTypeInference.types index 660592fceb896..853db63b5389b 100644 --- a/tests/baselines/reference/arrayLiteralTypeInference.types +++ b/tests/baselines/reference/arrayLiteralTypeInference.types @@ -8,7 +8,7 @@ class Action { class ActionA extends Action { >ActionA : ActionA ->Action : Action +>Action : typeof Action value: string; >value : string @@ -16,7 +16,7 @@ class ActionA extends Action { class ActionB extends Action { >ActionB : ActionB ->Action : Action +>Action : typeof Action trueNess: boolean; >trueNess : boolean diff --git a/tests/baselines/reference/arrayLiterals.types b/tests/baselines/reference/arrayLiterals.types index e103241dd0b92..756ed7145e398 100644 --- a/tests/baselines/reference/arrayLiterals.types +++ b/tests/baselines/reference/arrayLiterals.types @@ -123,12 +123,12 @@ class Base { private p; } class Derived1 extends Base { private m }; >Derived1 : Derived1 ->Base : Base +>Base : typeof Base >m : any class Derived2 extends Base { private n }; >Derived2 : Derived2 ->Base : Base +>Base : typeof Base >n : any var context3: Base[] = [new Derived1(), new Derived2()]; diff --git a/tests/baselines/reference/arrayLiteralsWithRecursiveGenerics.types b/tests/baselines/reference/arrayLiteralsWithRecursiveGenerics.types index 9b2abf25c2d82..598ccfe9ca582 100644 --- a/tests/baselines/reference/arrayLiteralsWithRecursiveGenerics.types +++ b/tests/baselines/reference/arrayLiteralsWithRecursiveGenerics.types @@ -17,7 +17,7 @@ class List { class DerivedList extends List { >DerivedList : DerivedList >U : U ->List : List +>List : typeof List >U : U foo: U; diff --git a/tests/baselines/reference/assignmentCompatWithCallSignatures3.types b/tests/baselines/reference/assignmentCompatWithCallSignatures3.types index 72cceae84fff7..9fa591812ee1d 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignatures3.types +++ b/tests/baselines/reference/assignmentCompatWithCallSignatures3.types @@ -7,17 +7,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : Base +>Base : typeof Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : Derived +>Derived : typeof Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : Base +>Base : typeof Base >bing : string var a: (x: number) => number[]; diff --git a/tests/baselines/reference/assignmentCompatWithCallSignatures5.types b/tests/baselines/reference/assignmentCompatWithCallSignatures5.types index 2652a2a4e689d..8ed785b0044bb 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignatures5.types +++ b/tests/baselines/reference/assignmentCompatWithCallSignatures5.types @@ -7,17 +7,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : Base +>Base : typeof Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : Derived +>Derived : typeof Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : Base +>Base : typeof Base >bing : string var a: (x: T) => T[]; diff --git a/tests/baselines/reference/assignmentCompatWithCallSignatures6.types b/tests/baselines/reference/assignmentCompatWithCallSignatures6.types index b45f335794233..309834e5974ca 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignatures6.types +++ b/tests/baselines/reference/assignmentCompatWithCallSignatures6.types @@ -7,17 +7,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : Base +>Base : typeof Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : Derived +>Derived : typeof Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : Base +>Base : typeof Base >bing : string interface A { diff --git a/tests/baselines/reference/assignmentCompatWithConstructSignatures3.types b/tests/baselines/reference/assignmentCompatWithConstructSignatures3.types index 807f31b0e6e54..25200f7988f97 100644 --- a/tests/baselines/reference/assignmentCompatWithConstructSignatures3.types +++ b/tests/baselines/reference/assignmentCompatWithConstructSignatures3.types @@ -7,17 +7,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : Base +>Base : typeof Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : Derived +>Derived : typeof Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : Base +>Base : typeof Base >bing : string var a: new (x: number) => number[]; diff --git a/tests/baselines/reference/assignmentCompatWithConstructSignatures5.types b/tests/baselines/reference/assignmentCompatWithConstructSignatures5.types index 6e6a1457a7614..276ba7f694096 100644 --- a/tests/baselines/reference/assignmentCompatWithConstructSignatures5.types +++ b/tests/baselines/reference/assignmentCompatWithConstructSignatures5.types @@ -7,17 +7,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : Base +>Base : typeof Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : Derived +>Derived : typeof Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : Base +>Base : typeof Base >bing : string var a: new (x: T) => T[]; diff --git a/tests/baselines/reference/assignmentCompatWithConstructSignatures6.types b/tests/baselines/reference/assignmentCompatWithConstructSignatures6.types index 74a20b9b21e94..49b26118fa3c2 100644 --- a/tests/baselines/reference/assignmentCompatWithConstructSignatures6.types +++ b/tests/baselines/reference/assignmentCompatWithConstructSignatures6.types @@ -7,17 +7,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : Base +>Base : typeof Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : Derived +>Derived : typeof Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : Base +>Base : typeof Base >bing : string interface A { diff --git a/tests/baselines/reference/baseIndexSignatureResolution.types b/tests/baselines/reference/baseIndexSignatureResolution.types index 90d143155fb28..6a57d4b9805b9 100644 --- a/tests/baselines/reference/baseIndexSignatureResolution.types +++ b/tests/baselines/reference/baseIndexSignatureResolution.types @@ -5,7 +5,7 @@ class Base { private a: string; } class Derived extends Base { private b: string; } >Derived : Derived ->Base : Base +>Base : typeof Base >b : string // Note - commmenting "extends Foo" prevents the error diff --git a/tests/baselines/reference/baseTypeOrderChecking.types b/tests/baselines/reference/baseTypeOrderChecking.types index 4193f255f36c0..32f3325e85cb3 100644 --- a/tests/baselines/reference/baseTypeOrderChecking.types +++ b/tests/baselines/reference/baseTypeOrderChecking.types @@ -17,7 +17,7 @@ class Class1 class Class2 extends Class1 >Class2 : Class2 ->Class1 : Class1 +>Class1 : typeof Class1 { @@ -42,7 +42,7 @@ class Class3 class Class4 extends Class3 >Class4 : Class4 >T : T ->Class3 : Class3 +>Class3 : typeof Class3 >T : T { diff --git a/tests/baselines/reference/baseTypeWrappingInstantiationChain.types b/tests/baselines/reference/baseTypeWrappingInstantiationChain.types index 61919bad212c6..bce18aa359eea 100644 --- a/tests/baselines/reference/baseTypeWrappingInstantiationChain.types +++ b/tests/baselines/reference/baseTypeWrappingInstantiationChain.types @@ -2,7 +2,7 @@ class C extends CBase { >C : C >T1 : T1 ->CBase : CBase +>CBase : typeof CBase >T1 : T1 public works() { @@ -35,7 +35,7 @@ class C extends CBase { class CBase extends CBaseBase> { >CBase : CBase >T2 : T2 ->CBaseBase : CBaseBase +>CBaseBase : typeof CBaseBase >Wrapper : Wrapper >T2 : T2 diff --git a/tests/baselines/reference/bestCommonTypeOfConditionalExpressions.types b/tests/baselines/reference/bestCommonTypeOfConditionalExpressions.types index 2a5ee6a2fe230..72510bfc324dc 100644 --- a/tests/baselines/reference/bestCommonTypeOfConditionalExpressions.types +++ b/tests/baselines/reference/bestCommonTypeOfConditionalExpressions.types @@ -18,12 +18,12 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : Base +>Base : typeof Base >bar : string class Derived2 extends Base { baz: string; } >Derived2 : Derived2 ->Base : Base +>Base : typeof Base >baz : string var base: Base; diff --git a/tests/baselines/reference/bestCommonTypeOfTuple2.types b/tests/baselines/reference/bestCommonTypeOfTuple2.types index 32196fdf66854..ceb15c45cba73 100644 --- a/tests/baselines/reference/bestCommonTypeOfTuple2.types +++ b/tests/baselines/reference/bestCommonTypeOfTuple2.types @@ -23,7 +23,7 @@ class E implements base { e } class F extends C { f } >F : F ->C : C +>C : typeof C >f : any class C1 implements base1 { i = "foo"; c } @@ -35,7 +35,7 @@ class C1 implements base1 { i = "foo"; c } class D1 extends C1 { i = "bar"; d } >D1 : D1 ->C1 : C1 +>C1 : typeof C1 >i : string >"bar" : string >d : any diff --git a/tests/baselines/reference/callSignatureAssignabilityInInheritance2.types b/tests/baselines/reference/callSignatureAssignabilityInInheritance2.types index 335413cd73ed2..b98cd8d36c9f4 100644 --- a/tests/baselines/reference/callSignatureAssignabilityInInheritance2.types +++ b/tests/baselines/reference/callSignatureAssignabilityInInheritance2.types @@ -7,17 +7,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : Base +>Base : typeof Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : Derived +>Derived : typeof Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : Base +>Base : typeof Base >bing : string interface A { // T diff --git a/tests/baselines/reference/callSignatureAssignabilityInInheritance4.types b/tests/baselines/reference/callSignatureAssignabilityInInheritance4.types index 0575d1332cec0..c7f573fe9df35 100644 --- a/tests/baselines/reference/callSignatureAssignabilityInInheritance4.types +++ b/tests/baselines/reference/callSignatureAssignabilityInInheritance4.types @@ -7,17 +7,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : Base +>Base : typeof Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : Derived +>Derived : typeof Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : Base +>Base : typeof Base >bing : string interface A { // T diff --git a/tests/baselines/reference/callSignatureAssignabilityInInheritance5.types b/tests/baselines/reference/callSignatureAssignabilityInInheritance5.types index 0ffc8257a569e..14325053248bb 100644 --- a/tests/baselines/reference/callSignatureAssignabilityInInheritance5.types +++ b/tests/baselines/reference/callSignatureAssignabilityInInheritance5.types @@ -8,17 +8,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : Base +>Base : typeof Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : Derived +>Derived : typeof Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : Base +>Base : typeof Base >bing : string interface A { // T diff --git a/tests/baselines/reference/callSignatureAssignabilityInInheritance6.types b/tests/baselines/reference/callSignatureAssignabilityInInheritance6.types index 721b691be7071..67f43b9990a9c 100644 --- a/tests/baselines/reference/callSignatureAssignabilityInInheritance6.types +++ b/tests/baselines/reference/callSignatureAssignabilityInInheritance6.types @@ -9,17 +9,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : Base +>Base : typeof Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : Derived +>Derived : typeof Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : Base +>Base : typeof Base >bing : string interface A { // T diff --git a/tests/baselines/reference/callWithSpread.types b/tests/baselines/reference/callWithSpread.types index f7097727204ff..68c738f18328d 100644 --- a/tests/baselines/reference/callWithSpread.types +++ b/tests/baselines/reference/callWithSpread.types @@ -205,7 +205,7 @@ class C { class D extends C { >D : D ->C : C +>C : typeof C constructor() { super(1, 2); diff --git a/tests/baselines/reference/callWithSpreadES6.types b/tests/baselines/reference/callWithSpreadES6.types index ba638207e8a28..ecbfba54e9f60 100644 --- a/tests/baselines/reference/callWithSpreadES6.types +++ b/tests/baselines/reference/callWithSpreadES6.types @@ -206,7 +206,7 @@ class C { class D extends C { >D : D ->C : C +>C : typeof C constructor() { super(1, 2); diff --git a/tests/baselines/reference/captureThisInSuperCall.types b/tests/baselines/reference/captureThisInSuperCall.types index faa7d2ad97e56..b67307e4f83be 100644 --- a/tests/baselines/reference/captureThisInSuperCall.types +++ b/tests/baselines/reference/captureThisInSuperCall.types @@ -8,7 +8,7 @@ class A { class B extends A { >B : B ->A : A +>A : typeof A constructor() { super({ test: () => this.someMethod()}); } >super({ test: () => this.someMethod()}) : void diff --git a/tests/baselines/reference/checkForObjectTooStrict.types b/tests/baselines/reference/checkForObjectTooStrict.types index 3dd47c79743d0..a6cd5194f0285 100644 --- a/tests/baselines/reference/checkForObjectTooStrict.types +++ b/tests/baselines/reference/checkForObjectTooStrict.types @@ -13,9 +13,9 @@ module Foo { class Bar extends Foo.Object { // should work >Bar : Bar ->Foo.Object : any +>Foo.Object : typeof Foo.Object >Foo : typeof Foo ->Object : Foo.Object +>Object : typeof Foo.Object constructor () { @@ -30,7 +30,7 @@ class Bar extends Foo.Object { // should work class Baz extends Object { >Baz : Baz ->Object : Object +>Object : ObjectConstructor constructor () { // ERROR, as expected diff --git a/tests/baselines/reference/circularImportAlias.types b/tests/baselines/reference/circularImportAlias.types index 3ab41f6187bc9..436ad56ddf820 100644 --- a/tests/baselines/reference/circularImportAlias.types +++ b/tests/baselines/reference/circularImportAlias.types @@ -10,9 +10,9 @@ module B { export class D extends a.C { >D : D ->a.C : any +>a.C : typeof a.C >a : typeof a ->C : a.C +>C : typeof a.C id: number; >id : number diff --git a/tests/baselines/reference/classConstructorParametersAccessibility3.types b/tests/baselines/reference/classConstructorParametersAccessibility3.types index 3372044569cad..5df83005ad97c 100644 --- a/tests/baselines/reference/classConstructorParametersAccessibility3.types +++ b/tests/baselines/reference/classConstructorParametersAccessibility3.types @@ -8,7 +8,7 @@ class Base { class Derived extends Base { >Derived : Derived ->Base : Base +>Base : typeof Base constructor(public p: number) { >p : number diff --git a/tests/baselines/reference/classDeclarationMergedInModuleWithContinuation.types b/tests/baselines/reference/classDeclarationMergedInModuleWithContinuation.types index f1be8e6d26815..ddf8b10d1a12e 100644 --- a/tests/baselines/reference/classDeclarationMergedInModuleWithContinuation.types +++ b/tests/baselines/reference/classDeclarationMergedInModuleWithContinuation.types @@ -19,8 +19,8 @@ module M { export class O extends M.N { >O : O ->M.N : any +>M.N : typeof N >M : typeof M ->N : N +>N : typeof N } } diff --git a/tests/baselines/reference/classDoesNotDependOnBaseTypes.types b/tests/baselines/reference/classDoesNotDependOnBaseTypes.types index c342f0ea002cd..5ea05baf35e43 100644 --- a/tests/baselines/reference/classDoesNotDependOnBaseTypes.types +++ b/tests/baselines/reference/classDoesNotDependOnBaseTypes.types @@ -39,5 +39,5 @@ class StringTreeCollectionBase { class StringTreeCollection extends StringTreeCollectionBase { } >StringTreeCollection : StringTreeCollection ->StringTreeCollectionBase : StringTreeCollectionBase +>StringTreeCollectionBase : typeof StringTreeCollectionBase diff --git a/tests/baselines/reference/classExtendingClass.types b/tests/baselines/reference/classExtendingClass.types index f91493e97fdf5..b72463ae2d72a 100644 --- a/tests/baselines/reference/classExtendingClass.types +++ b/tests/baselines/reference/classExtendingClass.types @@ -14,7 +14,7 @@ class C { class D extends C { >D : D ->C : C +>C : typeof C bar: string; >bar : string @@ -73,7 +73,7 @@ class C2 { class D2 extends C2 { >D2 : D2 >T : T ->C2 : C2 +>C2 : typeof C2 >T : T bar: string; diff --git a/tests/baselines/reference/classExtendingQualifiedName2.types b/tests/baselines/reference/classExtendingQualifiedName2.types index 9f0c03db17d89..35a41203c0d5c 100644 --- a/tests/baselines/reference/classExtendingQualifiedName2.types +++ b/tests/baselines/reference/classExtendingQualifiedName2.types @@ -8,8 +8,8 @@ module M { class D extends M.C { >D : D ->M.C : any +>M.C : typeof C >M : typeof M ->C : C +>C : typeof C } } diff --git a/tests/baselines/reference/classImplementsClass3.types b/tests/baselines/reference/classImplementsClass3.types index 6f97a96a56e48..0d8696721c194 100644 --- a/tests/baselines/reference/classImplementsClass3.types +++ b/tests/baselines/reference/classImplementsClass3.types @@ -18,7 +18,7 @@ class C implements A { class C2 extends A {} >C2 : C2 ->A : A +>A : typeof A // no errors var c: C; diff --git a/tests/baselines/reference/classOrder2.types b/tests/baselines/reference/classOrder2.types index 07bd6ba45a571..82422dda46f0a 100644 --- a/tests/baselines/reference/classOrder2.types +++ b/tests/baselines/reference/classOrder2.types @@ -2,7 +2,7 @@ class A extends B { >A : A ->B : B +>B : typeof B foo() { this.bar(); } >foo : () => void diff --git a/tests/baselines/reference/classOrderBug.types b/tests/baselines/reference/classOrderBug.types index 979b65b8008c2..c30836e661fa1 100644 --- a/tests/baselines/reference/classOrderBug.types +++ b/tests/baselines/reference/classOrderBug.types @@ -25,7 +25,7 @@ class baz {} class foo extends baz {} >foo : foo ->baz : baz +>baz : typeof baz diff --git a/tests/baselines/reference/classSideInheritance2.types b/tests/baselines/reference/classSideInheritance2.types index 9c2d632ebbb18..90f3b79481467 100644 --- a/tests/baselines/reference/classSideInheritance2.types +++ b/tests/baselines/reference/classSideInheritance2.types @@ -11,7 +11,7 @@ interface TextSpan {} class SubText extends TextBase { >SubText : SubText ->TextBase : TextBase +>TextBase : typeof TextBase constructor(text: IText, span: TextSpan) { >text : IText diff --git a/tests/baselines/reference/classWithProtectedProperty.types b/tests/baselines/reference/classWithProtectedProperty.types index 1f53ea2aad9b4..b3e3afc27366f 100644 --- a/tests/baselines/reference/classWithProtectedProperty.types +++ b/tests/baselines/reference/classWithProtectedProperty.types @@ -39,7 +39,7 @@ class C { class D extends C { >D : D ->C : C +>C : typeof C method() { >method : () => void diff --git a/tests/baselines/reference/commentOnAmbientClass1.types b/tests/baselines/reference/commentOnAmbientClass1.types index 44c0334ef6cde..28b0c7e19feb5 100644 --- a/tests/baselines/reference/commentOnAmbientClass1.types +++ b/tests/baselines/reference/commentOnAmbientClass1.types @@ -2,7 +2,7 @@ /// declare class E extends C { >E : E ->C : C +>C : typeof C } === tests/cases/compiler/a.ts === /*! Keep this pinned comment */ diff --git a/tests/baselines/reference/commentOnAmbientModule.types b/tests/baselines/reference/commentOnAmbientModule.types index 13d35cddcea3d..f64845cae5d16 100644 --- a/tests/baselines/reference/commentOnAmbientModule.types +++ b/tests/baselines/reference/commentOnAmbientModule.types @@ -5,9 +5,9 @@ declare module E { class foobar extends D.bar { >foobar : foobar ->D.bar : any +>D.bar : typeof D.bar >D : typeof D ->bar : D.bar +>bar : typeof D.bar foo(); >foo : () => any diff --git a/tests/baselines/reference/commentsInheritance.types b/tests/baselines/reference/commentsInheritance.types index 1c25f13937bfc..b6778ca40fc42 100644 --- a/tests/baselines/reference/commentsInheritance.types +++ b/tests/baselines/reference/commentsInheritance.types @@ -177,7 +177,7 @@ class c2 { } class c3 extends c2 { >c3 : c3 ->c2 : c2 +>c2 : typeof c2 constructor() { super(10); @@ -232,7 +232,7 @@ c2_i = c3_i; class c4 extends c2 { >c4 : c4 ->c2 : c2 +>c2 : typeof c2 } var c4_i = new c4(10); >c4_i : c4 diff --git a/tests/baselines/reference/comparisonOperatorWithIdenticalObjects.types b/tests/baselines/reference/comparisonOperatorWithIdenticalObjects.types index 7f202c38d3a39..adf4b2a1d1337 100644 --- a/tests/baselines/reference/comparisonOperatorWithIdenticalObjects.types +++ b/tests/baselines/reference/comparisonOperatorWithIdenticalObjects.types @@ -70,11 +70,11 @@ class Base { } class A2 extends Base { } >A2 : A2 ->Base : Base +>Base : typeof Base class B2 extends Base { } >B2 : B2 ->Base : Base +>Base : typeof Base interface A3 { f(a: number): string; } >A3 : A3 diff --git a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnCallSignature.types b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnCallSignature.types index b3a972958b3e6..b6425439a20af 100644 --- a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnCallSignature.types +++ b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnCallSignature.types @@ -8,7 +8,7 @@ class Base { class Derived extends Base { >Derived : Derived ->Base : Base +>Base : typeof Base public b: string; >b : string diff --git a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnConstructorSignature.types b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnConstructorSignature.types index 737c13f183cb1..0afc38dba263f 100644 --- a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnConstructorSignature.types +++ b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnConstructorSignature.types @@ -8,7 +8,7 @@ class Base { class Derived extends Base { >Derived : Derived ->Base : Base +>Base : typeof Base public b: string; >b : string diff --git a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnIndexSignature.types b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnIndexSignature.types index 657fdccbda0a7..00bb5611a564c 100644 --- a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnIndexSignature.types +++ b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnIndexSignature.types @@ -8,7 +8,7 @@ class Base { class Derived extends Base { >Derived : Derived ->Base : Base +>Base : typeof Base public b: string; >b : string diff --git a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.types b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.types index c3f0d96e83959..7d612407d512c 100644 --- a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.types +++ b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.types @@ -8,7 +8,7 @@ class Base { class Derived extends Base { >Derived : Derived ->Base : Base +>Base : typeof Base public b: string; >b : string diff --git a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.types b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.types index 29d92c25726eb..0c6ea7c0d9ff5 100644 --- a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.types +++ b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.types @@ -8,7 +8,7 @@ class Base { class Derived extends Base { >Derived : Derived ->Base : Base +>Base : typeof Base public b: string; >b : string diff --git a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnProperty.types b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnProperty.types index d604115e16126..efcf6a3ff5d5d 100644 --- a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnProperty.types +++ b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnProperty.types @@ -8,7 +8,7 @@ class Base { class Derived extends Base { >Derived : Derived ->Base : Base +>Base : typeof Base public b: string; >b : string @@ -47,7 +47,7 @@ class A2 { class B2 extends A2 { >B2 : B2 ->A2 : A2 +>A2 : typeof A2 private b; >b : any diff --git a/tests/baselines/reference/complexClassRelationships.types b/tests/baselines/reference/complexClassRelationships.types index 43d0232e30a8a..5c86d8eba2b41 100644 --- a/tests/baselines/reference/complexClassRelationships.types +++ b/tests/baselines/reference/complexClassRelationships.types @@ -2,7 +2,7 @@ // There should be no errors in this file class Derived extends Base { >Derived : Derived ->Base : Base +>Base : typeof Base public static createEmpty(): Derived { >createEmpty : () => Derived diff --git a/tests/baselines/reference/computedPropertyNames25_ES5.types b/tests/baselines/reference/computedPropertyNames25_ES5.types index 6ca67cce4107b..f1f4239085cf2 100644 --- a/tests/baselines/reference/computedPropertyNames25_ES5.types +++ b/tests/baselines/reference/computedPropertyNames25_ES5.types @@ -11,7 +11,7 @@ class Base { } class C extends Base { >C : C ->Base : Base +>Base : typeof Base foo() { >foo : () => number diff --git a/tests/baselines/reference/computedPropertyNames25_ES6.types b/tests/baselines/reference/computedPropertyNames25_ES6.types index 1c093ebc59f6f..50a1a29938192 100644 --- a/tests/baselines/reference/computedPropertyNames25_ES6.types +++ b/tests/baselines/reference/computedPropertyNames25_ES6.types @@ -11,7 +11,7 @@ class Base { } class C extends Base { >C : C ->Base : Base +>Base : typeof Base foo() { >foo : () => number diff --git a/tests/baselines/reference/computedPropertyNames28_ES5.types b/tests/baselines/reference/computedPropertyNames28_ES5.types index 273dcd426d82f..1457903edf788 100644 --- a/tests/baselines/reference/computedPropertyNames28_ES5.types +++ b/tests/baselines/reference/computedPropertyNames28_ES5.types @@ -4,7 +4,7 @@ class Base { } class C extends Base { >C : C ->Base : Base +>Base : typeof Base constructor() { super(); diff --git a/tests/baselines/reference/computedPropertyNames28_ES6.types b/tests/baselines/reference/computedPropertyNames28_ES6.types index a34fb33f6c7d7..dd1840fe5ef83 100644 --- a/tests/baselines/reference/computedPropertyNames28_ES6.types +++ b/tests/baselines/reference/computedPropertyNames28_ES6.types @@ -4,7 +4,7 @@ class Base { } class C extends Base { >C : C ->Base : Base +>Base : typeof Base constructor() { super(); diff --git a/tests/baselines/reference/computedPropertyNames31_ES5.types b/tests/baselines/reference/computedPropertyNames31_ES5.types index 6c0f2572a0680..063b98141bae4 100644 --- a/tests/baselines/reference/computedPropertyNames31_ES5.types +++ b/tests/baselines/reference/computedPropertyNames31_ES5.types @@ -11,7 +11,7 @@ class Base { } class C extends Base { >C : C ->Base : Base +>Base : typeof Base foo() { >foo : () => number diff --git a/tests/baselines/reference/computedPropertyNames31_ES6.types b/tests/baselines/reference/computedPropertyNames31_ES6.types index eaddc0368126f..b99d364bb3d38 100644 --- a/tests/baselines/reference/computedPropertyNames31_ES6.types +++ b/tests/baselines/reference/computedPropertyNames31_ES6.types @@ -11,7 +11,7 @@ class Base { } class C extends Base { >C : C ->Base : Base +>Base : typeof Base foo() { >foo : () => number diff --git a/tests/baselines/reference/conditionalOperatorWithIdenticalBCT.types b/tests/baselines/reference/conditionalOperatorWithIdenticalBCT.types index 722ec13c68439..68745ed7874ba 100644 --- a/tests/baselines/reference/conditionalOperatorWithIdenticalBCT.types +++ b/tests/baselines/reference/conditionalOperatorWithIdenticalBCT.types @@ -8,12 +8,12 @@ class X { propertyX: any; propertyX1: number; propertyX2: string }; class A extends X { propertyA: number }; >A : A ->X : X +>X : typeof X >propertyA : number class B extends X { propertyB: string }; >B : B ->X : X +>X : typeof X >propertyB : string var x: X; diff --git a/tests/baselines/reference/constantOverloadFunction.types b/tests/baselines/reference/constantOverloadFunction.types index d643d3a726d9a..18de11823dbc4 100644 --- a/tests/baselines/reference/constantOverloadFunction.types +++ b/tests/baselines/reference/constantOverloadFunction.types @@ -5,17 +5,17 @@ class Base { foo() { } } class Derived1 extends Base { bar() { } } >Derived1 : Derived1 ->Base : Base +>Base : typeof Base >bar : () => void class Derived2 extends Base { baz() { } } >Derived2 : Derived2 ->Base : Base +>Base : typeof Base >baz : () => void class Derived3 extends Base { biz() { } } >Derived3 : Derived3 ->Base : Base +>Base : typeof Base >biz : () => void function foo(tagName: 'canvas'): Derived1; diff --git a/tests/baselines/reference/constraintCheckInGenericBaseTypeReference.types b/tests/baselines/reference/constraintCheckInGenericBaseTypeReference.types index 1d94a5e464c26..602ad444a5c62 100644 --- a/tests/baselines/reference/constraintCheckInGenericBaseTypeReference.types +++ b/tests/baselines/reference/constraintCheckInGenericBaseTypeReference.types @@ -16,7 +16,7 @@ class GenericBase { } class Derived extends GenericBase { >Derived : Derived ->GenericBase : GenericBase +>GenericBase : typeof GenericBase >TypeArg : TypeArg } diff --git a/tests/baselines/reference/constructSignatureAssignabilityInInheritance2.types b/tests/baselines/reference/constructSignatureAssignabilityInInheritance2.types index 7ab221024ca95..7b24ecdab19e5 100644 --- a/tests/baselines/reference/constructSignatureAssignabilityInInheritance2.types +++ b/tests/baselines/reference/constructSignatureAssignabilityInInheritance2.types @@ -7,17 +7,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : Base +>Base : typeof Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : Derived +>Derived : typeof Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : Base +>Base : typeof Base >bing : string interface A { // T diff --git a/tests/baselines/reference/constructSignatureAssignabilityInInheritance4.types b/tests/baselines/reference/constructSignatureAssignabilityInInheritance4.types index 7782389d69a7a..d0f28468df4e5 100644 --- a/tests/baselines/reference/constructSignatureAssignabilityInInheritance4.types +++ b/tests/baselines/reference/constructSignatureAssignabilityInInheritance4.types @@ -7,17 +7,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : Base +>Base : typeof Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : Derived +>Derived : typeof Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : Base +>Base : typeof Base >bing : string interface A { // T diff --git a/tests/baselines/reference/constructSignatureAssignabilityInInheritance5.types b/tests/baselines/reference/constructSignatureAssignabilityInInheritance5.types index dea9478b37231..417ad4bba098f 100644 --- a/tests/baselines/reference/constructSignatureAssignabilityInInheritance5.types +++ b/tests/baselines/reference/constructSignatureAssignabilityInInheritance5.types @@ -8,17 +8,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : Base +>Base : typeof Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : Derived +>Derived : typeof Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : Base +>Base : typeof Base >bing : string interface A { // T diff --git a/tests/baselines/reference/constructSignatureAssignabilityInInheritance6.types b/tests/baselines/reference/constructSignatureAssignabilityInInheritance6.types index 193a19a5f2c2d..9fa64f6baadfd 100644 --- a/tests/baselines/reference/constructSignatureAssignabilityInInheritance6.types +++ b/tests/baselines/reference/constructSignatureAssignabilityInInheritance6.types @@ -9,17 +9,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : Base +>Base : typeof Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : Derived +>Derived : typeof Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : Base +>Base : typeof Base >bing : string interface A { // T diff --git a/tests/baselines/reference/constructorArgs.types b/tests/baselines/reference/constructorArgs.types index ccd23c22f5de3..5c0b3e78d7ba5 100644 --- a/tests/baselines/reference/constructorArgs.types +++ b/tests/baselines/reference/constructorArgs.types @@ -16,7 +16,7 @@ class Super { class Sub extends Super { >Sub : Sub ->Super : Super +>Super : typeof Super constructor(public options:Options) { >options : Options diff --git a/tests/baselines/reference/constructorFunctionTypeIsAssignableToBaseType.types b/tests/baselines/reference/constructorFunctionTypeIsAssignableToBaseType.types index 3702be4f2dcf9..89f1662a9df0f 100644 --- a/tests/baselines/reference/constructorFunctionTypeIsAssignableToBaseType.types +++ b/tests/baselines/reference/constructorFunctionTypeIsAssignableToBaseType.types @@ -13,7 +13,7 @@ class Base { class Derived extends Base { >Derived : Derived ->Base : Base +>Base : typeof Base // ok static foo: { @@ -26,7 +26,7 @@ class Derived extends Base { class Derived2 extends Base { >Derived2 : Derived2 ->Base : Base +>Base : typeof Base // ok, use assignability here static foo: { diff --git a/tests/baselines/reference/constructorFunctionTypeIsAssignableToBaseType2.types b/tests/baselines/reference/constructorFunctionTypeIsAssignableToBaseType2.types index e0e86df4a2612..39dac2804e0e1 100644 --- a/tests/baselines/reference/constructorFunctionTypeIsAssignableToBaseType2.types +++ b/tests/baselines/reference/constructorFunctionTypeIsAssignableToBaseType2.types @@ -19,7 +19,7 @@ class Base { class Derived extends Base { >Derived : Derived ->Base : Base +>Base : typeof Base // ok static foo: { @@ -41,7 +41,7 @@ class Derived extends Base { class Derived2 extends Base { >Derived2 : Derived2 ->Base : Base +>Base : typeof Base static foo: { >foo : { bar: number; } diff --git a/tests/baselines/reference/constructorHasPrototypeProperty.types b/tests/baselines/reference/constructorHasPrototypeProperty.types index 24dedb254eb23..b8d1265f504e4 100644 --- a/tests/baselines/reference/constructorHasPrototypeProperty.types +++ b/tests/baselines/reference/constructorHasPrototypeProperty.types @@ -11,7 +11,7 @@ module NonGeneric { class D extends C { >D : D ->C : C +>C : typeof C bar: string; >bar : string @@ -61,7 +61,7 @@ module Generic { >D : D >T : T >U : U ->C : C +>C : typeof C >T : T >U : U diff --git a/tests/baselines/reference/constructorOverloads2.types b/tests/baselines/reference/constructorOverloads2.types index dde032c0fd29e..27e16d1fd4605 100644 --- a/tests/baselines/reference/constructorOverloads2.types +++ b/tests/baselines/reference/constructorOverloads2.types @@ -17,7 +17,7 @@ class FooBase { class Foo extends FooBase { >Foo : Foo ->FooBase : FooBase +>FooBase : typeof FooBase constructor(s: string); >s : string diff --git a/tests/baselines/reference/contextualTypingArrayOfLambdas.types b/tests/baselines/reference/contextualTypingArrayOfLambdas.types index d3e5b9942e37a..08259aaa36c22 100644 --- a/tests/baselines/reference/contextualTypingArrayOfLambdas.types +++ b/tests/baselines/reference/contextualTypingArrayOfLambdas.types @@ -8,7 +8,7 @@ class A { class B extends A { >B : B ->A : A +>A : typeof A bar: string; >bar : string @@ -16,7 +16,7 @@ class B extends A { class C extends A { >C : C ->A : A +>A : typeof A baz: string; >baz : string diff --git a/tests/baselines/reference/contextualTypingOfConditionalExpression.types b/tests/baselines/reference/contextualTypingOfConditionalExpression.types index a2e29a0e66b4f..b12b40022f2c1 100644 --- a/tests/baselines/reference/contextualTypingOfConditionalExpression.types +++ b/tests/baselines/reference/contextualTypingOfConditionalExpression.types @@ -25,14 +25,14 @@ class A { } class B extends A { >B : B ->A : A +>A : typeof A bar: number; >bar : number } class C extends A { >C : C ->A : A +>A : typeof A baz: number; >baz : number diff --git a/tests/baselines/reference/declFileAliasUseBeforeDeclaration2.types b/tests/baselines/reference/declFileAliasUseBeforeDeclaration2.types index 362dd031e092e..15073c3eb0145 100644 --- a/tests/baselines/reference/declFileAliasUseBeforeDeclaration2.types +++ b/tests/baselines/reference/declFileAliasUseBeforeDeclaration2.types @@ -10,7 +10,7 @@ declare module "test" { } class B extends E { >B : B ->E : E +>E : typeof E } import E = A.C; >E : typeof E diff --git a/tests/baselines/reference/declFileForFunctionTypeAsTypeParameter.types b/tests/baselines/reference/declFileForFunctionTypeAsTypeParameter.types index 5f759fb423f80..508deef385da9 100644 --- a/tests/baselines/reference/declFileForFunctionTypeAsTypeParameter.types +++ b/tests/baselines/reference/declFileForFunctionTypeAsTypeParameter.types @@ -6,7 +6,7 @@ class X { } class C extends X<() => number> { >C : C ->X : X +>X : typeof X } interface I extends X<() => number> { >I : I diff --git a/tests/baselines/reference/declFileGenericClassWithGenericExtendedClass.types b/tests/baselines/reference/declFileGenericClassWithGenericExtendedClass.types index 27fed37c21b99..7cef23491ae3a 100644 --- a/tests/baselines/reference/declFileGenericClassWithGenericExtendedClass.types +++ b/tests/baselines/reference/declFileGenericClassWithGenericExtendedClass.types @@ -13,7 +13,7 @@ class Base { } class Derived extends Base { } >Derived : Derived >T : T ->Base : Base +>Base : typeof Base >T : T interface IBar { diff --git a/tests/baselines/reference/declFileGenericType.types b/tests/baselines/reference/declFileGenericType.types index 7aa201878907f..71c65ab0c1075 100644 --- a/tests/baselines/reference/declFileGenericType.types +++ b/tests/baselines/reference/declFileGenericType.types @@ -153,9 +153,9 @@ export var g = C.F5>(); export class h extends C.A{ } >h : h ->C.A : any +>C.A : typeof C.A >C : typeof C ->A : C.A +>A : typeof C.A >C : any >B : C.B diff --git a/tests/baselines/reference/declFileGenericType2.types b/tests/baselines/reference/declFileGenericType2.types index e1e1aa0bbfb3e..d14915fcad4a3 100644 --- a/tests/baselines/reference/declFileGenericType2.types +++ b/tests/baselines/reference/declFileGenericType2.types @@ -86,11 +86,11 @@ module templa.dom.mvc { >templa : any >mvc : any >IModel : templa.mvc.IModel ->templa.mvc.AbstractController : any +>templa.mvc.AbstractController : typeof templa.mvc.AbstractController >templa.mvc : typeof templa.mvc >templa : typeof templa >mvc : typeof templa.mvc ->AbstractController : templa.mvc.AbstractController +>AbstractController : typeof templa.mvc.AbstractController >ModelType : ModelType >IElementController : IElementController >ModelType : ModelType @@ -116,13 +116,13 @@ module templa.dom.mvc.composite { >mvc : any >composite : any >ICompositeControllerModel : templa.mvc.composite.ICompositeControllerModel ->templa.dom.mvc.AbstractElementController : any +>templa.dom.mvc.AbstractElementController : typeof AbstractElementController >templa.dom.mvc : typeof mvc >templa.dom : typeof dom >templa : typeof templa >dom : typeof dom >mvc : typeof mvc ->AbstractElementController : AbstractElementController +>AbstractElementController : typeof AbstractElementController >ModelType : ModelType public _controllers: templa.mvc.IController[]; diff --git a/tests/baselines/reference/declFileWithClassNameConflictingWithClassReferredByExtendsClause.types b/tests/baselines/reference/declFileWithClassNameConflictingWithClassReferredByExtendsClause.types index 56e1d07d0ecf2..bec86debf3aea 100644 --- a/tests/baselines/reference/declFileWithClassNameConflictingWithClassReferredByExtendsClause.types +++ b/tests/baselines/reference/declFileWithClassNameConflictingWithClassReferredByExtendsClause.types @@ -19,13 +19,13 @@ module X.Y.base { export class W extends A.B.Base.W { >W : W ->A.B.Base.W : any +>A.B.Base.W : typeof A.B.Base.W >A.B.Base : typeof A.B.Base >A.B : typeof A.B >A : typeof A >B : typeof A.B >Base : typeof A.B.Base ->W : A.B.Base.W +>W : typeof A.B.Base.W name: string; >name : string @@ -41,13 +41,13 @@ module X.Y.base.Z { export class W extends X.Y.base.W { >W : W >TValue : TValue ->X.Y.base.W : any +>X.Y.base.W : typeof base.W >X.Y.base : typeof base >X.Y : typeof Y >X : typeof X >Y : typeof Y >base : typeof base ->W : base.W +>W : typeof base.W value: boolean; >value : boolean diff --git a/tests/baselines/reference/declFileWithExtendsClauseThatHasItsContainerNameConflict.types b/tests/baselines/reference/declFileWithExtendsClauseThatHasItsContainerNameConflict.types index 4dae0d42c53ec..f5918630a4c64 100644 --- a/tests/baselines/reference/declFileWithExtendsClauseThatHasItsContainerNameConflict.types +++ b/tests/baselines/reference/declFileWithExtendsClauseThatHasItsContainerNameConflict.types @@ -30,7 +30,7 @@ module A.B.C { export class ContextMenu extends EventManager { >ContextMenu : ContextMenu ->EventManager : EventManager +>EventManager : typeof EventManager name: string; >name : string diff --git a/tests/baselines/reference/declarationEmit_nameConflicts3.types b/tests/baselines/reference/declarationEmit_nameConflicts3.types index 8d52bda68f5d4..5f2e32120b7ac 100644 --- a/tests/baselines/reference/declarationEmit_nameConflicts3.types +++ b/tests/baselines/reference/declarationEmit_nameConflicts3.types @@ -37,7 +37,7 @@ module M.P { } export class E extends C { } >E : E ->C : C +>C : typeof C export enum D { >D : D diff --git a/tests/baselines/reference/declarationEmit_protectedMembers.types b/tests/baselines/reference/declarationEmit_protectedMembers.types index 89aa3f5633229..c3f191f9247f7 100644 --- a/tests/baselines/reference/declarationEmit_protectedMembers.types +++ b/tests/baselines/reference/declarationEmit_protectedMembers.types @@ -48,7 +48,7 @@ class C1 { // Derived class overriding protected members class C2 extends C1 { >C2 : C2 ->C1 : C1 +>C1 : typeof C1 protected f() { >f : () => number @@ -81,7 +81,7 @@ class C2 extends C1 { // Derived class making protected members public class C3 extends C2 { >C3 : C3 ->C2 : C2 +>C2 : typeof C2 x: number; >x : number diff --git a/tests/baselines/reference/declareDottedExtend.types b/tests/baselines/reference/declareDottedExtend.types index 7df6c9ecb7c99..10380d0b86465 100644 --- a/tests/baselines/reference/declareDottedExtend.types +++ b/tests/baselines/reference/declareDottedExtend.types @@ -14,15 +14,15 @@ import ab = A.B; class D extends ab.C{ } >D : D ->ab.C : any +>ab.C : typeof ab.C >ab : typeof ab ->C : ab.C +>C : typeof ab.C class E extends A.B.C{ } >E : E ->A.B.C : any +>A.B.C : typeof ab.C >A.B : typeof ab >A : typeof A >B : typeof ab ->C : ab.C +>C : typeof ab.C diff --git a/tests/baselines/reference/derivedClassOverridesIndexersWithAssignmentCompatibility.types b/tests/baselines/reference/derivedClassOverridesIndexersWithAssignmentCompatibility.types index 97940edc6e72e..fa60f03d295d7 100644 --- a/tests/baselines/reference/derivedClassOverridesIndexersWithAssignmentCompatibility.types +++ b/tests/baselines/reference/derivedClassOverridesIndexersWithAssignmentCompatibility.types @@ -10,7 +10,7 @@ class Base { // ok, use assignment compatibility class Derived extends Base { >Derived : Derived ->Base : Base +>Base : typeof Base [x: string]: any; >x : string @@ -27,7 +27,7 @@ class Base2 { // ok, use assignment compatibility class Derived2 extends Base2 { >Derived2 : Derived2 ->Base2 : Base2 +>Base2 : typeof Base2 [x: number]: any; >x : number diff --git a/tests/baselines/reference/derivedClassOverridesProtectedMembers.types b/tests/baselines/reference/derivedClassOverridesProtectedMembers.types index 2695cbabe3461..1e672636d143f 100644 --- a/tests/baselines/reference/derivedClassOverridesProtectedMembers.types +++ b/tests/baselines/reference/derivedClassOverridesProtectedMembers.types @@ -65,7 +65,7 @@ class Base { class Derived extends Base { >Derived : Derived ->Base : Base +>Base : typeof Base protected a: typeof y; >a : { foo: string; bar: string; } diff --git a/tests/baselines/reference/derivedClassOverridesProtectedMembers2.types b/tests/baselines/reference/derivedClassOverridesProtectedMembers2.types index 2799555a3a2b6..b99be02adab43 100644 --- a/tests/baselines/reference/derivedClassOverridesProtectedMembers2.types +++ b/tests/baselines/reference/derivedClassOverridesProtectedMembers2.types @@ -65,7 +65,7 @@ constructor(a: typeof x) { } // Increase visibility of all protected members to public class Derived extends Base { >Derived : Derived ->Base : Base +>Base : typeof Base a: typeof y; >a : { foo: string; bar: string; } @@ -208,7 +208,7 @@ class Base2 { class Derived2 extends Base2 { >Derived2 : Derived2 ->Base2 : Base2 +>Base2 : typeof Base2 [i: string]: typeof x; >i : string diff --git a/tests/baselines/reference/derivedClassOverridesWithoutSubtype.types b/tests/baselines/reference/derivedClassOverridesWithoutSubtype.types index a46c8efa408ba..d46039d850894 100644 --- a/tests/baselines/reference/derivedClassOverridesWithoutSubtype.types +++ b/tests/baselines/reference/derivedClassOverridesWithoutSubtype.types @@ -12,7 +12,7 @@ class Base { class Derived extends Base { >Derived : Derived ->Base : Base +>Base : typeof Base x: { >x : { foo: any; } @@ -35,7 +35,7 @@ class Base2 { class Derived2 extends Base2 { >Derived2 : Derived2 ->Base2 : Base2 +>Base2 : typeof Base2 static y: { >y : { foo: any; } diff --git a/tests/baselines/reference/derivedClasses.types b/tests/baselines/reference/derivedClasses.types index 906cfb2741c7c..5cabca324632b 100644 --- a/tests/baselines/reference/derivedClasses.types +++ b/tests/baselines/reference/derivedClasses.types @@ -1,7 +1,7 @@ === tests/cases/compiler/derivedClasses.ts === class Red extends Color { >Red : Red ->Color : Color +>Color : typeof Color public shade() { >shade : () => string @@ -36,7 +36,7 @@ class Color { class Blue extends Color { >Blue : Blue ->Color : Color +>Color : typeof Color public shade() { >shade : () => string diff --git a/tests/baselines/reference/derivedTypeAccessesHiddenBaseCallViaSuperPropertyAccess.types b/tests/baselines/reference/derivedTypeAccessesHiddenBaseCallViaSuperPropertyAccess.types index d8d9f657255af..8421e6a082027 100644 --- a/tests/baselines/reference/derivedTypeAccessesHiddenBaseCallViaSuperPropertyAccess.types +++ b/tests/baselines/reference/derivedTypeAccessesHiddenBaseCallViaSuperPropertyAccess.types @@ -15,7 +15,7 @@ class Base { class Derived extends Base { >Derived : Derived ->Base : Base +>Base : typeof Base foo(x: { a: number; b: number }): { a: number; b: number } { >foo : (x: { a: number; b: number; }) => { a: number; b: number; } diff --git a/tests/baselines/reference/derivedTypeDoesNotRequireExtendsClause.types b/tests/baselines/reference/derivedTypeDoesNotRequireExtendsClause.types index 36b85d7950c6e..f34220eda8fbc 100644 --- a/tests/baselines/reference/derivedTypeDoesNotRequireExtendsClause.types +++ b/tests/baselines/reference/derivedTypeDoesNotRequireExtendsClause.types @@ -18,7 +18,7 @@ class Derived { class Derived2 extends Base { >Derived2 : Derived2 ->Base : Base +>Base : typeof Base bar: string; >bar : string diff --git a/tests/baselines/reference/emitClassDeclarationWithExtensionAndTypeArgumentInES6.types b/tests/baselines/reference/emitClassDeclarationWithExtensionAndTypeArgumentInES6.types index 0f546fa7b8620..eba51d0997d73 100644 --- a/tests/baselines/reference/emitClassDeclarationWithExtensionAndTypeArgumentInES6.types +++ b/tests/baselines/reference/emitClassDeclarationWithExtensionAndTypeArgumentInES6.types @@ -9,11 +9,11 @@ class B { } class C extends B { } >C : C ->B : B +>B : typeof B class D extends B { >D : D ->B : B +>B : typeof B constructor(a: any) >a : any diff --git a/tests/baselines/reference/emitClassDeclarationWithExtensionInES6.types b/tests/baselines/reference/emitClassDeclarationWithExtensionInES6.types index 7267af2fde057..073e4ebf5ec78 100644 --- a/tests/baselines/reference/emitClassDeclarationWithExtensionInES6.types +++ b/tests/baselines/reference/emitClassDeclarationWithExtensionInES6.types @@ -10,7 +10,7 @@ class B { } class C extends B { >C : C ->B : B +>B : typeof B foo() { } >foo : () => void @@ -31,7 +31,7 @@ class C extends B { } class D extends C { >D : D ->C : C +>C : typeof C constructor() { super(); diff --git a/tests/baselines/reference/emitClassDeclarationWithPropertyAssignmentInES6.types b/tests/baselines/reference/emitClassDeclarationWithPropertyAssignmentInES6.types index f3504d655edbf..8157c2243a578 100644 --- a/tests/baselines/reference/emitClassDeclarationWithPropertyAssignmentInES6.types +++ b/tests/baselines/reference/emitClassDeclarationWithPropertyAssignmentInES6.types @@ -29,7 +29,7 @@ class D { class E extends D{ >E : E ->D : D +>D : typeof D z: boolean = true; >z : boolean @@ -38,7 +38,7 @@ class E extends D{ class F extends D{ >F : F ->D : D +>D : typeof D z: boolean = true; >z : boolean diff --git a/tests/baselines/reference/emitClassDeclarationWithSuperMethodCall01.types b/tests/baselines/reference/emitClassDeclarationWithSuperMethodCall01.types index 8b68af897acfa..a61c40696fc37 100644 --- a/tests/baselines/reference/emitClassDeclarationWithSuperMethodCall01.types +++ b/tests/baselines/reference/emitClassDeclarationWithSuperMethodCall01.types @@ -10,7 +10,7 @@ class Parent { class Foo extends Parent { >Foo : Foo ->Parent : Parent +>Parent : typeof Parent foo() { >foo : () => void diff --git a/tests/baselines/reference/es6ClassSuperCodegenBug.types b/tests/baselines/reference/es6ClassSuperCodegenBug.types index bdf8ebde8f23e..09b79d345b5d5 100644 --- a/tests/baselines/reference/es6ClassSuperCodegenBug.types +++ b/tests/baselines/reference/es6ClassSuperCodegenBug.types @@ -8,7 +8,7 @@ class A { } class B extends A { >B : B ->A : A +>A : typeof A constructor() { if (true) { diff --git a/tests/baselines/reference/es6ClassTest7.types b/tests/baselines/reference/es6ClassTest7.types index f92ddad6e827c..83f03ed4076a2 100644 --- a/tests/baselines/reference/es6ClassTest7.types +++ b/tests/baselines/reference/es6ClassTest7.types @@ -9,8 +9,8 @@ declare module M { class Bar extends M.Foo { >Bar : Bar ->M.Foo : any +>M.Foo : typeof M.Foo >M : typeof M ->Foo : M.Foo +>Foo : typeof M.Foo } diff --git a/tests/baselines/reference/exportAssignmentOfGenericType1.types b/tests/baselines/reference/exportAssignmentOfGenericType1.types index 1bf3e7454a704..e06b4fb527ab3 100644 --- a/tests/baselines/reference/exportAssignmentOfGenericType1.types +++ b/tests/baselines/reference/exportAssignmentOfGenericType1.types @@ -5,7 +5,7 @@ import q = require("exportAssignmentOfGenericType1_0"); class M extends q { } >M : M ->q : q +>q : typeof q var m: M; >m : M diff --git a/tests/baselines/reference/extBaseClass1.types b/tests/baselines/reference/extBaseClass1.types index b476e1b420688..a2c5d5a6bc69c 100644 --- a/tests/baselines/reference/extBaseClass1.types +++ b/tests/baselines/reference/extBaseClass1.types @@ -12,7 +12,7 @@ module M { export class C extends B { >C : C ->B : B +>B : typeof B } } @@ -21,7 +21,7 @@ module M { export class C2 extends B { >C2 : C2 ->B : B +>B : typeof B } } @@ -30,9 +30,9 @@ module N { export class C3 extends M.B { >C3 : C3 ->M.B : any +>M.B : typeof M.B >M : typeof M ->B : M.B +>B : typeof M.B } } diff --git a/tests/baselines/reference/extendAndImplementTheSameBaseType.types b/tests/baselines/reference/extendAndImplementTheSameBaseType.types index 136308b3887a9..da14105f398a3 100644 --- a/tests/baselines/reference/extendAndImplementTheSameBaseType.types +++ b/tests/baselines/reference/extendAndImplementTheSameBaseType.types @@ -10,7 +10,7 @@ class C { } class D extends C implements C { >D : D ->C : C +>C : typeof C >C : C baz() { } diff --git a/tests/baselines/reference/extendBaseClassBeforeItsDeclared.types b/tests/baselines/reference/extendBaseClassBeforeItsDeclared.types index a9ad130d4749a..b386e494bd750 100644 --- a/tests/baselines/reference/extendBaseClassBeforeItsDeclared.types +++ b/tests/baselines/reference/extendBaseClassBeforeItsDeclared.types @@ -1,7 +1,7 @@ === tests/cases/compiler/extendBaseClassBeforeItsDeclared.ts === class derived extends base { } >derived : derived ->base : base +>base : typeof base class base { constructor (public n: number) { } } >base : base diff --git a/tests/baselines/reference/extendNonClassSymbol1.symbols b/tests/baselines/reference/extendNonClassSymbol1.symbols new file mode 100644 index 0000000000000..02291ebb181bf --- /dev/null +++ b/tests/baselines/reference/extendNonClassSymbol1.symbols @@ -0,0 +1,12 @@ +=== tests/cases/compiler/extendNonClassSymbol1.ts === +class A { foo() { } } +>A : Symbol(A, Decl(extendNonClassSymbol1.ts, 0, 0)) +>foo : Symbol(foo, Decl(extendNonClassSymbol1.ts, 0, 9)) + +var x = A; +>x : Symbol(x, Decl(extendNonClassSymbol1.ts, 1, 3)) +>A : Symbol(A, Decl(extendNonClassSymbol1.ts, 0, 0)) + +class C extends x { } // error, could not find symbol xs +>C : Symbol(C, Decl(extendNonClassSymbol1.ts, 1, 10)) + diff --git a/tests/baselines/reference/extendNonClassSymbol1.types b/tests/baselines/reference/extendNonClassSymbol1.types new file mode 100644 index 0000000000000..1c627656ce0c0 --- /dev/null +++ b/tests/baselines/reference/extendNonClassSymbol1.types @@ -0,0 +1,13 @@ +=== tests/cases/compiler/extendNonClassSymbol1.ts === +class A { foo() { } } +>A : A +>foo : () => void + +var x = A; +>x : typeof A +>A : typeof A + +class C extends x { } // error, could not find symbol xs +>C : C +>x : typeof A + diff --git a/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.types b/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.types index 5b9154516c57f..8bc97eb26d895 100644 --- a/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.types +++ b/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.types @@ -61,9 +61,9 @@ import Backbone = require("extendingClassFromAliasAndUsageInIndexer_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone.Model : any +>Backbone.Model : typeof Backbone.Model >Backbone : typeof Backbone ->Model : Backbone.Model +>Model : typeof Backbone.Model // interesting stuff here } @@ -74,9 +74,9 @@ import Backbone = require("extendingClassFromAliasAndUsageInIndexer_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone.Model : any +>Backbone.Model : typeof Backbone.Model >Backbone : typeof Backbone ->Model : Backbone.Model +>Model : typeof Backbone.Model // different interesting stuff here } diff --git a/tests/baselines/reference/functionImplementations.types b/tests/baselines/reference/functionImplementations.types index f277821d69628..674c111e34105 100644 --- a/tests/baselines/reference/functionImplementations.types +++ b/tests/baselines/reference/functionImplementations.types @@ -190,7 +190,7 @@ class Base { private m; } class Derived extends Base { private q; } >Derived : Derived ->Base : Base +>Base : typeof Base >q : any var b: Base; @@ -311,7 +311,7 @@ function f6(): number { class Derived2 extends Base { private r: string; } >Derived2 : Derived2 ->Base : Base +>Base : typeof Base >r : string class AnotherClass { private x } diff --git a/tests/baselines/reference/functionSubtypingOfVarArgs.types b/tests/baselines/reference/functionSubtypingOfVarArgs.types index ebd706e94cfb9..48f8b272560bd 100644 --- a/tests/baselines/reference/functionSubtypingOfVarArgs.types +++ b/tests/baselines/reference/functionSubtypingOfVarArgs.types @@ -24,7 +24,7 @@ class EventBase { class StringEvent extends EventBase { // should work >StringEvent : StringEvent ->EventBase : EventBase +>EventBase : typeof EventBase add(listener: (items: string) => void ) { // valid, items is subtype of args >add : (listener: (items: string) => void) => void diff --git a/tests/baselines/reference/functionSubtypingOfVarArgs2.types b/tests/baselines/reference/functionSubtypingOfVarArgs2.types index 5e2b14ffc7a67..e2d344dabca12 100644 --- a/tests/baselines/reference/functionSubtypingOfVarArgs2.types +++ b/tests/baselines/reference/functionSubtypingOfVarArgs2.types @@ -25,7 +25,7 @@ class EventBase { class StringEvent extends EventBase { >StringEvent : StringEvent ->EventBase : EventBase +>EventBase : typeof EventBase add(listener: (items: string, moreitems: number) => void ) { >add : (listener: (items: string, moreitems: number) => void) => void diff --git a/tests/baselines/reference/generatedContextualTyping.types b/tests/baselines/reference/generatedContextualTyping.types index e8f434d31a88c..9b6a332a63e81 100644 --- a/tests/baselines/reference/generatedContextualTyping.types +++ b/tests/baselines/reference/generatedContextualTyping.types @@ -5,12 +5,12 @@ class Base { private p; } class Derived1 extends Base { private m; } >Derived1 : Derived1 ->Base : Base +>Base : typeof Base >m : any class Derived2 extends Base { private n; } >Derived2 : Derived2 ->Base : Base +>Base : typeof Base >n : any interface Genric { func(n: T[]); } diff --git a/tests/baselines/reference/generatorTypeCheck17.types b/tests/baselines/reference/generatorTypeCheck17.types index 0ea7212040b72..2768176c43107 100644 --- a/tests/baselines/reference/generatorTypeCheck17.types +++ b/tests/baselines/reference/generatorTypeCheck17.types @@ -5,7 +5,7 @@ class Foo { x: number } class Bar extends Foo { y: string } >Bar : Bar ->Foo : Foo +>Foo : typeof Foo >y : string function* g(): IterableIterator { diff --git a/tests/baselines/reference/generatorTypeCheck19.types b/tests/baselines/reference/generatorTypeCheck19.types index 2b4f1396c2eb8..6877934ff0c9f 100644 --- a/tests/baselines/reference/generatorTypeCheck19.types +++ b/tests/baselines/reference/generatorTypeCheck19.types @@ -5,7 +5,7 @@ class Foo { x: number } class Bar extends Foo { y: string } >Bar : Bar ->Foo : Foo +>Foo : typeof Foo >y : string function* g(): IterableIterator { diff --git a/tests/baselines/reference/genericBaseClassLiteralProperty.types b/tests/baselines/reference/genericBaseClassLiteralProperty.types index 51246348ded95..399e7f603afbc 100644 --- a/tests/baselines/reference/genericBaseClassLiteralProperty.types +++ b/tests/baselines/reference/genericBaseClassLiteralProperty.types @@ -14,7 +14,7 @@ class BaseClass { class SubClass extends BaseClass { >SubClass : SubClass ->BaseClass : BaseClass +>BaseClass : typeof BaseClass public Error(): void { >Error : () => void diff --git a/tests/baselines/reference/genericBaseClassLiteralProperty2.types b/tests/baselines/reference/genericBaseClassLiteralProperty2.types index 4576ffb05dedf..db89f73db480b 100644 --- a/tests/baselines/reference/genericBaseClassLiteralProperty2.types +++ b/tests/baselines/reference/genericBaseClassLiteralProperty2.types @@ -24,7 +24,7 @@ class BaseCollection2 { class DataView2 extends BaseCollection2 { >DataView2 : DataView2 ->BaseCollection2 : BaseCollection2 +>BaseCollection2 : typeof BaseCollection2 >CollectionItem2 : CollectionItem2 fillItems(item: CollectionItem2) { diff --git a/tests/baselines/reference/genericCallWithConstraintsTypeArgumentInference.types b/tests/baselines/reference/genericCallWithConstraintsTypeArgumentInference.types index dcff9ef8a1698..29b41e12ee663 100644 --- a/tests/baselines/reference/genericCallWithConstraintsTypeArgumentInference.types +++ b/tests/baselines/reference/genericCallWithConstraintsTypeArgumentInference.types @@ -7,12 +7,12 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : Base +>Base : typeof Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : Derived +>Derived : typeof Derived >baz : string var b: Base; diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgs2.types b/tests/baselines/reference/genericCallWithObjectTypeArgs2.types index 08bce90b5de5c..7178caaef4f1c 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgs2.types +++ b/tests/baselines/reference/genericCallWithObjectTypeArgs2.types @@ -7,14 +7,14 @@ class Base { } class Derived extends Base { >Derived : Derived ->Base : Base +>Base : typeof Base y: string; >y : string } class Derived2 extends Base { >Derived2 : Derived2 ->Base : Base +>Base : typeof Base z: string; >z : string diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints2.types b/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints2.types index 8ffa07252bc9c..a870a02420a3e 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints2.types +++ b/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints2.types @@ -10,7 +10,7 @@ class Base { } class Derived extends Base { >Derived : Derived ->Base : Base +>Base : typeof Base y: string; >y : string diff --git a/tests/baselines/reference/genericCallbacksAndClassHierarchy.types b/tests/baselines/reference/genericCallbacksAndClassHierarchy.types index 97e584dca3fd8..419ec87485902 100644 --- a/tests/baselines/reference/genericCallbacksAndClassHierarchy.types +++ b/tests/baselines/reference/genericCallbacksAndClassHierarchy.types @@ -31,7 +31,7 @@ module M { export class B extends C1> { } >B : B >T : T ->C1 : C1 +>C1 : typeof C1 >A : A >T : T diff --git a/tests/baselines/reference/genericClassInheritsConstructorFromNonGenericClass.types b/tests/baselines/reference/genericClassInheritsConstructorFromNonGenericClass.types index 800b215f123c0..74ad65993e4e5 100644 --- a/tests/baselines/reference/genericClassInheritsConstructorFromNonGenericClass.types +++ b/tests/baselines/reference/genericClassInheritsConstructorFromNonGenericClass.types @@ -1,12 +1,12 @@ === tests/cases/compiler/genericClassInheritsConstructorFromNonGenericClass.ts === class A extends B { } >A : A ->B : B +>B : typeof B class B extends C { } >B : B >U : U ->C : C +>C : typeof C class C { >C : C diff --git a/tests/baselines/reference/genericClassPropertyInheritanceSpecialization.types b/tests/baselines/reference/genericClassPropertyInheritanceSpecialization.types index 6ba27a66399fb..ce93a483415d5 100644 --- a/tests/baselines/reference/genericClassPropertyInheritanceSpecialization.types +++ b/tests/baselines/reference/genericClassPropertyInheritanceSpecialization.types @@ -192,13 +192,13 @@ module PortalFx.ViewModels.Controls.Validators { export class Validator extends Portal.Controls.Validators.Validator { >Validator : Validator >TValue : TValue ->Portal.Controls.Validators.Validator : any +>Portal.Controls.Validators.Validator : typeof Portal.Controls.Validators.Validator >Portal.Controls.Validators : typeof Portal.Controls.Validators >Portal.Controls : typeof Portal.Controls >Portal : typeof Portal >Controls : typeof Portal.Controls >Validators : typeof Portal.Controls.Validators ->Validator : Portal.Controls.Validators.Validator +>Validator : typeof Portal.Controls.Validators.Validator >TValue : TValue constructor(message?: string) { diff --git a/tests/baselines/reference/genericClassStaticMethod.types b/tests/baselines/reference/genericClassStaticMethod.types index 3d4c02317d637..fb38898d8a534 100644 --- a/tests/baselines/reference/genericClassStaticMethod.types +++ b/tests/baselines/reference/genericClassStaticMethod.types @@ -11,7 +11,7 @@ class Foo { class Bar extends Foo { >Bar : Bar >T : T ->Foo : Foo +>Foo : typeof Foo >T : T static getFoo() { diff --git a/tests/baselines/reference/genericClasses3.types b/tests/baselines/reference/genericClasses3.types index ea0ebcd2cc732..6bf78807e89d4 100644 --- a/tests/baselines/reference/genericClasses3.types +++ b/tests/baselines/reference/genericClasses3.types @@ -15,7 +15,7 @@ class B { class C extends B { >C : C >T : T ->B : B +>B : typeof B >T : T public x: T; diff --git a/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes.types b/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes.types index f1041cfa80fae..2b870347f3c04 100644 --- a/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes.types +++ b/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes.types @@ -53,7 +53,7 @@ module EndGate.Tweening { export class NumberTween extends Tween{ >NumberTween : NumberTween ->Tween : Tween +>Tween : typeof Tween constructor(from: number) { >from : number diff --git a/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes2.types b/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes2.types index 92ffa7c5c0359..4e8a3f094d9d4 100644 --- a/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes2.types +++ b/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes2.types @@ -52,7 +52,7 @@ module EndGate.Tweening { export class NumberTween extends Tween{ >NumberTween : NumberTween ->Tween : Tween +>Tween : typeof Tween >Number : Number constructor(from: number) { diff --git a/tests/baselines/reference/genericPrototypeProperty2.types b/tests/baselines/reference/genericPrototypeProperty2.types index 1c95041b65035..2e3594f6a22e3 100644 --- a/tests/baselines/reference/genericPrototypeProperty2.types +++ b/tests/baselines/reference/genericPrototypeProperty2.types @@ -15,7 +15,7 @@ class MyEvent extends BaseEvent { >MyEvent : MyEvent >T : T >EventTarget : EventTarget ->BaseEvent : BaseEvent +>BaseEvent : typeof BaseEvent target: T; >target : T @@ -31,7 +31,7 @@ class BaseEventWrapper { class MyEventWrapper extends BaseEventWrapper { >MyEventWrapper : MyEventWrapper ->BaseEventWrapper : BaseEventWrapper +>BaseEventWrapper : typeof BaseEventWrapper t: MyEvent; // any satisfies constraint and passes assignability check between 'target' properties >t : MyEvent diff --git a/tests/baselines/reference/genericPrototypeProperty3.types b/tests/baselines/reference/genericPrototypeProperty3.types index 5a19016464224..aaa319f8dcca9 100644 --- a/tests/baselines/reference/genericPrototypeProperty3.types +++ b/tests/baselines/reference/genericPrototypeProperty3.types @@ -9,7 +9,7 @@ class BaseEvent { class MyEvent extends BaseEvent { // T is instantiated to any in the prototype, which is assignable to {} >MyEvent : MyEvent >T : T ->BaseEvent : BaseEvent +>BaseEvent : typeof BaseEvent target: T; >target : T @@ -25,7 +25,7 @@ class BaseEventWrapper { class MyEventWrapper extends BaseEventWrapper { >MyEventWrapper : MyEventWrapper ->BaseEventWrapper : BaseEventWrapper +>BaseEventWrapper : typeof BaseEventWrapper t: MyEvent; >t : MyEvent diff --git a/tests/baselines/reference/genericRecursiveImplicitConstructorErrors2.types b/tests/baselines/reference/genericRecursiveImplicitConstructorErrors2.types index 2f62a20c41521..52ec7e4c5bc4d 100644 --- a/tests/baselines/reference/genericRecursiveImplicitConstructorErrors2.types +++ b/tests/baselines/reference/genericRecursiveImplicitConstructorErrors2.types @@ -62,7 +62,7 @@ module TypeScript2 { >A : A >B : B >C : C ->PullSymbol : PullSymbol +>PullSymbol : typeof PullSymbol } } diff --git a/tests/baselines/reference/genericWithIndexerOfTypeParameterType2.types b/tests/baselines/reference/genericWithIndexerOfTypeParameterType2.types index e1cdfa85f1304..c30eda7f9ee83 100644 --- a/tests/baselines/reference/genericWithIndexerOfTypeParameterType2.types +++ b/tests/baselines/reference/genericWithIndexerOfTypeParameterType2.types @@ -12,7 +12,7 @@ export class Collection { export class List extends Collection{ >List : List ->Collection : Collection +>Collection : typeof Collection >ListItem : ListItem Bar() {} @@ -24,7 +24,7 @@ export class CollectionItem {} export class ListItem extends CollectionItem { >ListItem : ListItem ->CollectionItem : CollectionItem +>CollectionItem : typeof CollectionItem __isNew: boolean; >__isNew : boolean diff --git a/tests/baselines/reference/heterogeneousArrayLiterals.types b/tests/baselines/reference/heterogeneousArrayLiterals.types index ecfbf75e864c4..8585ef5931628 100644 --- a/tests/baselines/reference/heterogeneousArrayLiterals.types +++ b/tests/baselines/reference/heterogeneousArrayLiterals.types @@ -121,12 +121,12 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : Base +>Base : typeof Base >bar : string class Derived2 extends Base { baz: string; } >Derived2 : Derived2 ->Base : Base +>Base : typeof Base >baz : string var base: Base; diff --git a/tests/baselines/reference/ifDoWhileStatements.types b/tests/baselines/reference/ifDoWhileStatements.types index 92a9df6a4dd7f..42668f96f2264 100644 --- a/tests/baselines/reference/ifDoWhileStatements.types +++ b/tests/baselines/reference/ifDoWhileStatements.types @@ -19,7 +19,7 @@ class C implements I { class C2 extends C { >C2 : C2 ->C : C +>C : typeof C valid: boolean; >valid : boolean diff --git a/tests/baselines/reference/importShadowsGlobalName.types b/tests/baselines/reference/importShadowsGlobalName.types index a1f1106f1b828..973f81287c836 100644 --- a/tests/baselines/reference/importShadowsGlobalName.types +++ b/tests/baselines/reference/importShadowsGlobalName.types @@ -4,7 +4,7 @@ import Error = require('Foo'); class Bar extends Error {} >Bar : Bar ->Error : Error +>Error : typeof Error export = Bar; >Bar : Bar diff --git a/tests/baselines/reference/importUsedInExtendsList1.types b/tests/baselines/reference/importUsedInExtendsList1.types index 74737c4db96cc..120f5a3144419 100644 --- a/tests/baselines/reference/importUsedInExtendsList1.types +++ b/tests/baselines/reference/importUsedInExtendsList1.types @@ -5,9 +5,9 @@ import foo = require('importUsedInExtendsList1_require'); class Sub extends foo.Super { } >Sub : Sub ->foo.Super : any +>foo.Super : typeof foo.Super >foo : typeof foo ->Super : foo.Super +>Super : typeof foo.Super var s: Sub; >s : Sub diff --git a/tests/baselines/reference/infinitelyExpandingTypesNonGenericBase.types b/tests/baselines/reference/infinitelyExpandingTypesNonGenericBase.types index 9190ef15779ab..a09c8b0f44804 100644 --- a/tests/baselines/reference/infinitelyExpandingTypesNonGenericBase.types +++ b/tests/baselines/reference/infinitelyExpandingTypesNonGenericBase.types @@ -16,7 +16,7 @@ class Base { class A extends Base { >A : A >T : T ->Base : Base +>Base : typeof Base options: Options[]>; >options : Options[]> diff --git a/tests/baselines/reference/inheritSameNamePrivatePropertiesFromSameOrigin.types b/tests/baselines/reference/inheritSameNamePrivatePropertiesFromSameOrigin.types index e8f05ca474d37..086f5a20c6119 100644 --- a/tests/baselines/reference/inheritSameNamePrivatePropertiesFromSameOrigin.types +++ b/tests/baselines/reference/inheritSameNamePrivatePropertiesFromSameOrigin.types @@ -7,11 +7,11 @@ class B { } class C extends B { } >C : C ->B : B +>B : typeof B class C2 extends B { } >C2 : C2 ->B : B +>B : typeof B interface A extends C, C2 { // ok >A : A diff --git a/tests/baselines/reference/inheritanceMemberFuncOverridingMethod.types b/tests/baselines/reference/inheritanceMemberFuncOverridingMethod.types index 3f170d1a6ece6..44b0e7db93709 100644 --- a/tests/baselines/reference/inheritanceMemberFuncOverridingMethod.types +++ b/tests/baselines/reference/inheritanceMemberFuncOverridingMethod.types @@ -12,7 +12,7 @@ class a { class b extends a { >b : b ->a : a +>a : typeof a x() { >x : () => string diff --git a/tests/baselines/reference/inheritanceMemberPropertyOverridingProperty.types b/tests/baselines/reference/inheritanceMemberPropertyOverridingProperty.types index d5f846187f8c7..a2709758a5cf7 100644 --- a/tests/baselines/reference/inheritanceMemberPropertyOverridingProperty.types +++ b/tests/baselines/reference/inheritanceMemberPropertyOverridingProperty.types @@ -8,7 +8,7 @@ class a { class b extends a { >b : b ->a : a +>a : typeof a x: () => string; >x : () => string diff --git a/tests/baselines/reference/inheritanceOfGenericConstructorMethod1.types b/tests/baselines/reference/inheritanceOfGenericConstructorMethod1.types index d18b02ec8d0c0..3005a22871ff4 100644 --- a/tests/baselines/reference/inheritanceOfGenericConstructorMethod1.types +++ b/tests/baselines/reference/inheritanceOfGenericConstructorMethod1.types @@ -6,7 +6,7 @@ class A { } class B extends A {} >B : B >T : T ->A : A +>A : typeof A >T : T var a = new A(); diff --git a/tests/baselines/reference/inheritanceOfGenericConstructorMethod2.types b/tests/baselines/reference/inheritanceOfGenericConstructorMethod2.types index 119b6a19046e8..d77e5b55e49f5 100644 --- a/tests/baselines/reference/inheritanceOfGenericConstructorMethod2.types +++ b/tests/baselines/reference/inheritanceOfGenericConstructorMethod2.types @@ -14,16 +14,16 @@ module N { export class D1 extends M.C1 { } >D1 : D1 ->M.C1 : any +>M.C1 : typeof M.C1 >M : typeof M ->C1 : M.C1 +>C1 : typeof M.C1 export class D2 extends M.C2 { } >D2 : D2 >T : T ->M.C2 : any +>M.C2 : typeof M.C2 >M : typeof M ->C2 : M.C2 +>C2 : typeof M.C2 >T : T } diff --git a/tests/baselines/reference/inheritanceStaticFuncOverridingMethod.types b/tests/baselines/reference/inheritanceStaticFuncOverridingMethod.types index 22fa0a6660f14..e2ddfcb2254a5 100644 --- a/tests/baselines/reference/inheritanceStaticFuncOverridingMethod.types +++ b/tests/baselines/reference/inheritanceStaticFuncOverridingMethod.types @@ -12,7 +12,7 @@ class a { class b extends a { >b : b ->a : a +>a : typeof a static x() { >x : () => string diff --git a/tests/baselines/reference/inheritanceStaticFuncOverridingPropertyOfFuncType.types b/tests/baselines/reference/inheritanceStaticFuncOverridingPropertyOfFuncType.types index a7df20382ec42..9e7372f25d05e 100644 --- a/tests/baselines/reference/inheritanceStaticFuncOverridingPropertyOfFuncType.types +++ b/tests/baselines/reference/inheritanceStaticFuncOverridingPropertyOfFuncType.types @@ -8,7 +8,7 @@ class a { class b extends a { >b : b ->a : a +>a : typeof a static x() { >x : () => string diff --git a/tests/baselines/reference/inheritanceStaticFunctionOverridingInstanceProperty.types b/tests/baselines/reference/inheritanceStaticFunctionOverridingInstanceProperty.types index 4742dde63f6bf..624ea629e33d7 100644 --- a/tests/baselines/reference/inheritanceStaticFunctionOverridingInstanceProperty.types +++ b/tests/baselines/reference/inheritanceStaticFunctionOverridingInstanceProperty.types @@ -8,7 +8,7 @@ class a { class b extends a { >b : b ->a : a +>a : typeof a static x() { >x : () => string diff --git a/tests/baselines/reference/inheritanceStaticMembersCompatible.types b/tests/baselines/reference/inheritanceStaticMembersCompatible.types index cab8be9378552..5bec0707b0448 100644 --- a/tests/baselines/reference/inheritanceStaticMembersCompatible.types +++ b/tests/baselines/reference/inheritanceStaticMembersCompatible.types @@ -9,7 +9,7 @@ class a { class b extends a { >b : b ->a : a +>a : typeof a static x: b; >x : b diff --git a/tests/baselines/reference/inheritanceStaticPropertyOverridingProperty.types b/tests/baselines/reference/inheritanceStaticPropertyOverridingProperty.types index 958fb6723ccfa..5d627af6788e3 100644 --- a/tests/baselines/reference/inheritanceStaticPropertyOverridingProperty.types +++ b/tests/baselines/reference/inheritanceStaticPropertyOverridingProperty.types @@ -8,7 +8,7 @@ class a { class b extends a { >b : b ->a : a +>a : typeof a static x: () => string; >x : () => string diff --git a/tests/baselines/reference/instantiatedReturnTypeContravariance.types b/tests/baselines/reference/instantiatedReturnTypeContravariance.types index 1de1b8b7151e7..de4199d835cf6 100644 --- a/tests/baselines/reference/instantiatedReturnTypeContravariance.types +++ b/tests/baselines/reference/instantiatedReturnTypeContravariance.types @@ -28,7 +28,7 @@ return null; class d extends c { >d : d ->c : c +>c : typeof c foo(): B { >foo : () => B diff --git a/tests/baselines/reference/interfaceExtendsClass1.types b/tests/baselines/reference/interfaceExtendsClass1.types index c2370f7fe7fa0..06c46488942ca 100644 --- a/tests/baselines/reference/interfaceExtendsClass1.types +++ b/tests/baselines/reference/interfaceExtendsClass1.types @@ -14,21 +14,21 @@ interface SelectableControl extends Control { } class Button extends Control { >Button : Button ->Control : Control +>Control : typeof Control select() { } >select : () => void } class TextBox extends Control { >TextBox : TextBox ->Control : Control +>Control : typeof Control select() { } >select : () => void } class Image extends Control { >Image : Image ->Control : Control +>Control : typeof Control } class Location { >Location : Location diff --git a/tests/baselines/reference/iterableArrayPattern11.types b/tests/baselines/reference/iterableArrayPattern11.types index 3118e748d6f12..819743bad5941 100644 --- a/tests/baselines/reference/iterableArrayPattern11.types +++ b/tests/baselines/reference/iterableArrayPattern11.types @@ -18,7 +18,7 @@ class Bar { x } class Foo extends Bar { y } >Foo : Foo ->Bar : Bar +>Bar : typeof Bar >y : any class FooIterator { diff --git a/tests/baselines/reference/iterableArrayPattern12.types b/tests/baselines/reference/iterableArrayPattern12.types index b32c2ff7dc82d..2f468dc89ca7c 100644 --- a/tests/baselines/reference/iterableArrayPattern12.types +++ b/tests/baselines/reference/iterableArrayPattern12.types @@ -18,7 +18,7 @@ class Bar { x } class Foo extends Bar { y } >Foo : Foo ->Bar : Bar +>Bar : typeof Bar >y : any class FooIterator { diff --git a/tests/baselines/reference/iterableArrayPattern13.types b/tests/baselines/reference/iterableArrayPattern13.types index 556a871f5a862..cc3a15d85d419 100644 --- a/tests/baselines/reference/iterableArrayPattern13.types +++ b/tests/baselines/reference/iterableArrayPattern13.types @@ -16,7 +16,7 @@ class Bar { x } class Foo extends Bar { y } >Foo : Foo ->Bar : Bar +>Bar : typeof Bar >y : any class FooIterator { diff --git a/tests/baselines/reference/iterableArrayPattern3.types b/tests/baselines/reference/iterableArrayPattern3.types index fed5c7f07d373..91b359b4d685c 100644 --- a/tests/baselines/reference/iterableArrayPattern3.types +++ b/tests/baselines/reference/iterableArrayPattern3.types @@ -19,7 +19,7 @@ class Bar { x } class Foo extends Bar { y } >Foo : Foo ->Bar : Bar +>Bar : typeof Bar >y : any class FooIterator { diff --git a/tests/baselines/reference/iterableArrayPattern4.types b/tests/baselines/reference/iterableArrayPattern4.types index 8f05a454b5346..d4f697fe432e0 100644 --- a/tests/baselines/reference/iterableArrayPattern4.types +++ b/tests/baselines/reference/iterableArrayPattern4.types @@ -20,7 +20,7 @@ class Bar { x } class Foo extends Bar { y } >Foo : Foo ->Bar : Bar +>Bar : typeof Bar >y : any class FooIterator { diff --git a/tests/baselines/reference/iterableArrayPattern9.types b/tests/baselines/reference/iterableArrayPattern9.types index 03cfa31b621af..c58f87fcfdd73 100644 --- a/tests/baselines/reference/iterableArrayPattern9.types +++ b/tests/baselines/reference/iterableArrayPattern9.types @@ -12,7 +12,7 @@ class Bar { x } class Foo extends Bar { y } >Foo : Foo ->Bar : Bar +>Bar : typeof Bar >y : any class FooIterator { diff --git a/tests/baselines/reference/localTypes1.types b/tests/baselines/reference/localTypes1.types index 1770a36edb7cc..cfab2a2f9b466 100644 --- a/tests/baselines/reference/localTypes1.types +++ b/tests/baselines/reference/localTypes1.types @@ -340,7 +340,7 @@ function f6() { class B extends A { >B : B ->A : A +>A : typeof A b: string; >b : string @@ -350,7 +350,7 @@ function f6() { class C extends B { >C : C ->B : B +>B : typeof B c: string; >c : string diff --git a/tests/baselines/reference/m7Bugs.types b/tests/baselines/reference/m7Bugs.types index fa627f20cf72b..1c676f00e97d6 100644 --- a/tests/baselines/reference/m7Bugs.types +++ b/tests/baselines/reference/m7Bugs.types @@ -41,7 +41,7 @@ class C1 { class C2 extends C1 {} >C2 : C2 ->C1 : C1 +>C1 : typeof C1 var y1: C1 = new C2(); >y1 : C1 diff --git a/tests/baselines/reference/moduleImportedForTypeArgumentPosition.types b/tests/baselines/reference/moduleImportedForTypeArgumentPosition.types index 0a85e6e0002cd..3e3a6b5cc1de0 100644 --- a/tests/baselines/reference/moduleImportedForTypeArgumentPosition.types +++ b/tests/baselines/reference/moduleImportedForTypeArgumentPosition.types @@ -9,7 +9,7 @@ class C1{ } class Test1 extends C1 { >Test1 : Test1 ->C1 : C1 +>C1 : typeof C1 >M2 : any >M2C : M2.M2C } diff --git a/tests/baselines/reference/moduleWithStatementsOfEveryKind.types b/tests/baselines/reference/moduleWithStatementsOfEveryKind.types index 9475d9cfdcbdc..e2d2ef16773fb 100644 --- a/tests/baselines/reference/moduleWithStatementsOfEveryKind.types +++ b/tests/baselines/reference/moduleWithStatementsOfEveryKind.types @@ -18,14 +18,14 @@ module A { class B extends AA implements I { id: number } >B : B ->AA : AA +>AA : typeof AA >I : I >id : number class BB extends A { >BB : BB >T : T ->A : A +>A : typeof A id: number; >id : number @@ -106,14 +106,14 @@ module Y { export class B extends AA implements I { id: number } >B : B ->AA : AA +>AA : typeof AA >I : I >id : number export class BB extends A { >BB : BB >T : T ->A : A +>A : typeof A id: number; >id : number diff --git a/tests/baselines/reference/mutuallyRecursiveGenericBaseTypes2.types b/tests/baselines/reference/mutuallyRecursiveGenericBaseTypes2.types index ac722f8a063af..fd0f50344886a 100644 --- a/tests/baselines/reference/mutuallyRecursiveGenericBaseTypes2.types +++ b/tests/baselines/reference/mutuallyRecursiveGenericBaseTypes2.types @@ -13,7 +13,7 @@ class foo class foo2 extends foo { >foo2 : foo2 >T : T ->foo : foo +>foo : typeof foo >T : T } diff --git a/tests/baselines/reference/noEmitHelpers.types b/tests/baselines/reference/noEmitHelpers.types index 01c5d5acb3dc9..07c16def25d16 100644 --- a/tests/baselines/reference/noEmitHelpers.types +++ b/tests/baselines/reference/noEmitHelpers.types @@ -5,5 +5,5 @@ class A { } class B extends A { } >B : B ->A : A +>A : typeof A diff --git a/tests/baselines/reference/nonGenericClassExtendingGenericClassWithAny.types b/tests/baselines/reference/nonGenericClassExtendingGenericClassWithAny.types index 177becac64391..2dfbe2e6ffcee 100644 --- a/tests/baselines/reference/nonGenericClassExtendingGenericClassWithAny.types +++ b/tests/baselines/reference/nonGenericClassExtendingGenericClassWithAny.types @@ -10,5 +10,5 @@ class Foo { class Bar extends Foo { } // Valid >Bar : Bar ->Foo : Foo +>Foo : typeof Foo diff --git a/tests/baselines/reference/numericIndexerConstraint3.types b/tests/baselines/reference/numericIndexerConstraint3.types index 2e249c89b8c84..dfb58408bb5a2 100644 --- a/tests/baselines/reference/numericIndexerConstraint3.types +++ b/tests/baselines/reference/numericIndexerConstraint3.types @@ -8,7 +8,7 @@ class A { class B extends A { >B : B ->A : A +>A : typeof A bar: string; >bar : string diff --git a/tests/baselines/reference/numericIndexerConstraint4.types b/tests/baselines/reference/numericIndexerConstraint4.types index 97e72b5088d93..e174b6718a12c 100644 --- a/tests/baselines/reference/numericIndexerConstraint4.types +++ b/tests/baselines/reference/numericIndexerConstraint4.types @@ -8,7 +8,7 @@ class A { class B extends A { >B : B ->A : A +>A : typeof A bar: string; >bar : string diff --git a/tests/baselines/reference/objectTypesIdentityWithNumericIndexers1.types b/tests/baselines/reference/objectTypesIdentityWithNumericIndexers1.types index 2284d06ffbd0f..f933c3a9e81e0 100644 --- a/tests/baselines/reference/objectTypesIdentityWithNumericIndexers1.types +++ b/tests/baselines/reference/objectTypesIdentityWithNumericIndexers1.types @@ -33,12 +33,12 @@ interface I { class PA extends A { >PA : PA ->A : A +>A : typeof A } class PB extends B { >PB : PB ->B : B +>B : typeof B } var a: { diff --git a/tests/baselines/reference/objectTypesIdentityWithNumericIndexers2.types b/tests/baselines/reference/objectTypesIdentityWithNumericIndexers2.types index 1a580297b1b3e..d6de1fa313be1 100644 --- a/tests/baselines/reference/objectTypesIdentityWithNumericIndexers2.types +++ b/tests/baselines/reference/objectTypesIdentityWithNumericIndexers2.types @@ -7,7 +7,7 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : Base +>Base : typeof Base >bar : string class A { @@ -45,12 +45,12 @@ interface I { class PA extends A { >PA : PA ->A : A +>A : typeof A } class PB extends B { >PB : PB ->B : B +>B : typeof B } var a: { diff --git a/tests/baselines/reference/objectTypesIdentityWithNumericIndexers3.types b/tests/baselines/reference/objectTypesIdentityWithNumericIndexers3.types index ae384bbb4db36..3a80a2420dfc1 100644 --- a/tests/baselines/reference/objectTypesIdentityWithNumericIndexers3.types +++ b/tests/baselines/reference/objectTypesIdentityWithNumericIndexers3.types @@ -33,12 +33,12 @@ interface I { class PA extends A { >PA : PA ->A : A +>A : typeof A } class PB extends B { >PB : PB ->B : B +>B : typeof B } var a: { diff --git a/tests/baselines/reference/objectTypesIdentityWithPrivates.types b/tests/baselines/reference/objectTypesIdentityWithPrivates.types index c828f45ac5ab2..cea0c3a155956 100644 --- a/tests/baselines/reference/objectTypesIdentityWithPrivates.types +++ b/tests/baselines/reference/objectTypesIdentityWithPrivates.types @@ -33,12 +33,12 @@ interface I { class PA extends A { >PA : PA ->A : A +>A : typeof A } class PB extends B { >PB : PB ->B : B +>B : typeof B } var a: { foo: string; } diff --git a/tests/baselines/reference/objectTypesIdentityWithPrivates2.types b/tests/baselines/reference/objectTypesIdentityWithPrivates2.types index a29edc751624a..ea04e50fb0d2c 100644 --- a/tests/baselines/reference/objectTypesIdentityWithPrivates2.types +++ b/tests/baselines/reference/objectTypesIdentityWithPrivates2.types @@ -13,7 +13,7 @@ class C { class D extends C { >D : D >T : T ->C : C +>C : typeof C >T : T } diff --git a/tests/baselines/reference/objectTypesIdentityWithStringIndexers.types b/tests/baselines/reference/objectTypesIdentityWithStringIndexers.types index a7eeb67250477..ed4ba4f3d36f4 100644 --- a/tests/baselines/reference/objectTypesIdentityWithStringIndexers.types +++ b/tests/baselines/reference/objectTypesIdentityWithStringIndexers.types @@ -33,12 +33,12 @@ interface I { class PA extends A { >PA : PA ->A : A +>A : typeof A } class PB extends B { >PB : PB ->B : B +>B : typeof B } var a: { diff --git a/tests/baselines/reference/objectTypesIdentityWithStringIndexers2.types b/tests/baselines/reference/objectTypesIdentityWithStringIndexers2.types index d13942521170d..e0de7d5a94d17 100644 --- a/tests/baselines/reference/objectTypesIdentityWithStringIndexers2.types +++ b/tests/baselines/reference/objectTypesIdentityWithStringIndexers2.types @@ -7,7 +7,7 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : Base +>Base : typeof Base >bar : string class A { @@ -45,12 +45,12 @@ interface I { class PA extends A { >PA : PA ->A : A +>A : typeof A } class PB extends B { >PB : PB ->B : B +>B : typeof B } var a: { diff --git a/tests/baselines/reference/optionalConstructorArgInSuper.types b/tests/baselines/reference/optionalConstructorArgInSuper.types index 26d4fcb9abb74..91c12e3421792 100644 --- a/tests/baselines/reference/optionalConstructorArgInSuper.types +++ b/tests/baselines/reference/optionalConstructorArgInSuper.types @@ -11,7 +11,7 @@ class Base { } class Derived extends Base { >Derived : Derived ->Base : Base +>Base : typeof Base } var d = new Derived(); // bug caused an error here, couldn't select overload >d : Derived diff --git a/tests/baselines/reference/optionalParamInOverride.types b/tests/baselines/reference/optionalParamInOverride.types index f4530dace61a3..7bc60b3fe1d47 100644 --- a/tests/baselines/reference/optionalParamInOverride.types +++ b/tests/baselines/reference/optionalParamInOverride.types @@ -7,7 +7,7 @@ class Z { } class Y extends Z { >Y : Y ->Z : Z +>Z : typeof Z public func(value?: any): void { } >func : (value?: any) => void diff --git a/tests/baselines/reference/overloadOnConstConstraintChecks1.types b/tests/baselines/reference/overloadOnConstConstraintChecks1.types index cc561eb6e21c6..d3c10e9cbd92a 100644 --- a/tests/baselines/reference/overloadOnConstConstraintChecks1.types +++ b/tests/baselines/reference/overloadOnConstConstraintChecks1.types @@ -5,17 +5,17 @@ class Base { foo() { } } class Derived1 extends Base { bar() { } } >Derived1 : Derived1 ->Base : Base +>Base : typeof Base >bar : () => void class Derived2 extends Base { baz() { } } >Derived2 : Derived2 ->Base : Base +>Base : typeof Base >baz : () => void class Derived3 extends Base { biz() { } } >Derived3 : Derived3 ->Base : Base +>Base : typeof Base >biz : () => void interface MyDoc { // Document diff --git a/tests/baselines/reference/overloadOnConstConstraintChecks2.types b/tests/baselines/reference/overloadOnConstConstraintChecks2.types index 36fa89dec4a5a..f571ee0275ebf 100644 --- a/tests/baselines/reference/overloadOnConstConstraintChecks2.types +++ b/tests/baselines/reference/overloadOnConstConstraintChecks2.types @@ -4,11 +4,11 @@ class A {} class B extends A {} >B : B ->A : A +>A : typeof A class C extends A { >C : C ->A : A +>A : typeof A public foo() { } >foo : () => void diff --git a/tests/baselines/reference/overloadOnConstConstraintChecks3.types b/tests/baselines/reference/overloadOnConstConstraintChecks3.types index 94a03bb768070..aaf79e2f35b6c 100644 --- a/tests/baselines/reference/overloadOnConstConstraintChecks3.types +++ b/tests/baselines/reference/overloadOnConstConstraintChecks3.types @@ -6,11 +6,11 @@ class A { private x = 1} class B extends A {} >B : B ->A : A +>A : typeof A class C extends A { >C : C ->A : A +>A : typeof A public foo() { } >foo : () => void diff --git a/tests/baselines/reference/privacyClass.types b/tests/baselines/reference/privacyClass.types index d42133ad9ec77..10edc47fec876 100644 --- a/tests/baselines/reference/privacyClass.types +++ b/tests/baselines/reference/privacyClass.types @@ -24,19 +24,19 @@ export module m1 { class m1_C1_private extends m1_c_public { >m1_C1_private : m1_C1_private ->m1_c_public : m1_c_public +>m1_c_public : typeof m1_c_public } class m1_C2_private extends m1_c_private { >m1_C2_private : m1_C2_private ->m1_c_private : m1_c_private +>m1_c_private : typeof m1_c_private } export class m1_C3_public extends m1_c_public { >m1_C3_public : m1_C3_public ->m1_c_public : m1_c_public +>m1_c_public : typeof m1_c_public } export class m1_C4_public extends m1_c_private { >m1_C4_public : m1_C4_public ->m1_c_private : m1_c_private +>m1_c_private : typeof m1_c_private } class m1_C5_private implements m1_i_public { @@ -58,25 +58,25 @@ export module m1 { class m1_C9_private extends m1_c_public implements m1_i_private, m1_i_public { >m1_C9_private : m1_C9_private ->m1_c_public : m1_c_public +>m1_c_public : typeof m1_c_public >m1_i_private : m1_i_private >m1_i_public : m1_i_public } class m1_C10_private extends m1_c_private implements m1_i_private, m1_i_public { >m1_C10_private : m1_C10_private ->m1_c_private : m1_c_private +>m1_c_private : typeof m1_c_private >m1_i_private : m1_i_private >m1_i_public : m1_i_public } export class m1_C11_public extends m1_c_public implements m1_i_private, m1_i_public { >m1_C11_public : m1_C11_public ->m1_c_public : m1_c_public +>m1_c_public : typeof m1_c_public >m1_i_private : m1_i_private >m1_i_public : m1_i_public } export class m1_C12_public extends m1_c_private implements m1_i_private, m1_i_public { >m1_C12_public : m1_C12_public ->m1_c_private : m1_c_private +>m1_c_private : typeof m1_c_private >m1_i_private : m1_i_private >m1_i_public : m1_i_public } @@ -108,19 +108,19 @@ module m2 { class m2_C1_private extends m2_c_public { >m2_C1_private : m2_C1_private ->m2_c_public : m2_c_public +>m2_c_public : typeof m2_c_public } class m2_C2_private extends m2_c_private { >m2_C2_private : m2_C2_private ->m2_c_private : m2_c_private +>m2_c_private : typeof m2_c_private } export class m2_C3_public extends m2_c_public { >m2_C3_public : m2_C3_public ->m2_c_public : m2_c_public +>m2_c_public : typeof m2_c_public } export class m2_C4_public extends m2_c_private { >m2_C4_public : m2_C4_public ->m2_c_private : m2_c_private +>m2_c_private : typeof m2_c_private } class m2_C5_private implements m2_i_public { @@ -142,25 +142,25 @@ module m2 { class m2_C9_private extends m2_c_public implements m2_i_private, m2_i_public { >m2_C9_private : m2_C9_private ->m2_c_public : m2_c_public +>m2_c_public : typeof m2_c_public >m2_i_private : m2_i_private >m2_i_public : m2_i_public } class m2_C10_private extends m2_c_private implements m2_i_private, m2_i_public { >m2_C10_private : m2_C10_private ->m2_c_private : m2_c_private +>m2_c_private : typeof m2_c_private >m2_i_private : m2_i_private >m2_i_public : m2_i_public } export class m2_C11_public extends m2_c_public implements m2_i_private, m2_i_public { >m2_C11_public : m2_C11_public ->m2_c_public : m2_c_public +>m2_c_public : typeof m2_c_public >m2_i_private : m2_i_private >m2_i_public : m2_i_public } export class m2_C12_public extends m2_c_private implements m2_i_private, m2_i_public { >m2_C12_public : m2_C12_public ->m2_c_private : m2_c_private +>m2_c_private : typeof m2_c_private >m2_i_private : m2_i_private >m2_i_public : m2_i_public } @@ -188,19 +188,19 @@ class glo_c_private { class glo_C1_private extends glo_c_public { >glo_C1_private : glo_C1_private ->glo_c_public : glo_c_public +>glo_c_public : typeof glo_c_public } class glo_C2_private extends glo_c_private { >glo_C2_private : glo_C2_private ->glo_c_private : glo_c_private +>glo_c_private : typeof glo_c_private } export class glo_C3_public extends glo_c_public { >glo_C3_public : glo_C3_public ->glo_c_public : glo_c_public +>glo_c_public : typeof glo_c_public } export class glo_C4_public extends glo_c_private { >glo_C4_public : glo_C4_public ->glo_c_private : glo_c_private +>glo_c_private : typeof glo_c_private } class glo_C5_private implements glo_i_public { @@ -222,25 +222,25 @@ export class glo_C8_public implements glo_i_private { class glo_C9_private extends glo_c_public implements glo_i_private, glo_i_public { >glo_C9_private : glo_C9_private ->glo_c_public : glo_c_public +>glo_c_public : typeof glo_c_public >glo_i_private : glo_i_private >glo_i_public : glo_i_public } class glo_C10_private extends glo_c_private implements glo_i_private, glo_i_public { >glo_C10_private : glo_C10_private ->glo_c_private : glo_c_private +>glo_c_private : typeof glo_c_private >glo_i_private : glo_i_private >glo_i_public : glo_i_public } export class glo_C11_public extends glo_c_public implements glo_i_private, glo_i_public { >glo_C11_public : glo_C11_public ->glo_c_public : glo_c_public +>glo_c_public : typeof glo_c_public >glo_i_private : glo_i_private >glo_i_public : glo_i_public } export class glo_C12_public extends glo_c_private implements glo_i_private, glo_i_public { >glo_C12_public : glo_C12_public ->glo_c_private : glo_c_private +>glo_c_private : typeof glo_c_private >glo_i_private : glo_i_private >glo_i_public : glo_i_public } diff --git a/tests/baselines/reference/privacyGloClass.types b/tests/baselines/reference/privacyGloClass.types index be0c8a74dccc2..5a5ee37f1a5a0 100644 --- a/tests/baselines/reference/privacyGloClass.types +++ b/tests/baselines/reference/privacyGloClass.types @@ -24,19 +24,19 @@ module m1 { class m1_C1_private extends m1_c_public { >m1_C1_private : m1_C1_private ->m1_c_public : m1_c_public +>m1_c_public : typeof m1_c_public } class m1_C2_private extends m1_c_private { >m1_C2_private : m1_C2_private ->m1_c_private : m1_c_private +>m1_c_private : typeof m1_c_private } export class m1_C3_public extends m1_c_public { >m1_C3_public : m1_C3_public ->m1_c_public : m1_c_public +>m1_c_public : typeof m1_c_public } export class m1_C4_public extends m1_c_private { >m1_C4_public : m1_C4_public ->m1_c_private : m1_c_private +>m1_c_private : typeof m1_c_private } class m1_C5_private implements m1_i_public { @@ -58,25 +58,25 @@ module m1 { class m1_C9_private extends m1_c_public implements m1_i_private, m1_i_public { >m1_C9_private : m1_C9_private ->m1_c_public : m1_c_public +>m1_c_public : typeof m1_c_public >m1_i_private : m1_i_private >m1_i_public : m1_i_public } class m1_C10_private extends m1_c_private implements m1_i_private, m1_i_public { >m1_C10_private : m1_C10_private ->m1_c_private : m1_c_private +>m1_c_private : typeof m1_c_private >m1_i_private : m1_i_private >m1_i_public : m1_i_public } export class m1_C11_public extends m1_c_public implements m1_i_private, m1_i_public { >m1_C11_public : m1_C11_public ->m1_c_public : m1_c_public +>m1_c_public : typeof m1_c_public >m1_i_private : m1_i_private >m1_i_public : m1_i_public } export class m1_C12_public extends m1_c_private implements m1_i_private, m1_i_public { >m1_C12_public : m1_C12_public ->m1_c_private : m1_c_private +>m1_c_private : typeof m1_c_private >m1_i_private : m1_i_private >m1_i_public : m1_i_public } @@ -96,7 +96,7 @@ class glo_c_public { class glo_C3_public extends glo_c_public { >glo_C3_public : glo_C3_public ->glo_c_public : glo_c_public +>glo_c_public : typeof glo_c_public } class glo_C7_public implements glo_i_public { @@ -106,7 +106,7 @@ class glo_C7_public implements glo_i_public { class glo_C11_public extends glo_c_public implements glo_i_public { >glo_C11_public : glo_C11_public ->glo_c_public : glo_c_public +>glo_c_public : typeof glo_c_public >glo_i_public : glo_i_public } diff --git a/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints2.types b/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints2.types index 9ea015cc9ce2d..fedeb79d7dac8 100644 --- a/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints2.types +++ b/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints2.types @@ -11,7 +11,7 @@ class A { class B extends A { >B : B ->A : A +>A : typeof A bar(): string { >bar : () => string diff --git a/tests/baselines/reference/protectedClassPropertyAccessibleWithinSubclass.types b/tests/baselines/reference/protectedClassPropertyAccessibleWithinSubclass.types index bd230239d47b9..aad8bcb8c90fd 100644 --- a/tests/baselines/reference/protectedClassPropertyAccessibleWithinSubclass.types +++ b/tests/baselines/reference/protectedClassPropertyAccessibleWithinSubclass.types @@ -13,7 +13,7 @@ class B { class C extends B { >C : C ->B : B +>B : typeof B protected get y() { return this.x; } >y : string diff --git a/tests/baselines/reference/recursiveBaseConstructorCreation1.types b/tests/baselines/reference/recursiveBaseConstructorCreation1.types index 4879fb260a3a2..081db0c0d51c5 100644 --- a/tests/baselines/reference/recursiveBaseConstructorCreation1.types +++ b/tests/baselines/reference/recursiveBaseConstructorCreation1.types @@ -9,7 +9,7 @@ public func(param: C2): any { } } class C2 extends C1 { } >C2 : C2 ->C1 : C1 +>C1 : typeof C1 var x = new C2(); // Valid >x : C2 diff --git a/tests/baselines/reference/recursiveBaseConstructorCreation2.types b/tests/baselines/reference/recursiveBaseConstructorCreation2.types index 00b72ee7d4fd1..c2fbdc80aca69 100644 --- a/tests/baselines/reference/recursiveBaseConstructorCreation2.types +++ b/tests/baselines/reference/recursiveBaseConstructorCreation2.types @@ -5,7 +5,7 @@ declare class base } declare class abc extends base >abc : abc ->base : base +>base : typeof base { foo: xyz; >foo : xyz @@ -13,7 +13,7 @@ declare class abc extends base } declare class xyz extends abc >xyz : xyz ->abc : abc +>abc : typeof abc { } diff --git a/tests/baselines/reference/recursiveClassInstantiationsWithDefaultConstructors.types b/tests/baselines/reference/recursiveClassInstantiationsWithDefaultConstructors.types index 482ec707e49d5..dfaf97734f9a0 100644 --- a/tests/baselines/reference/recursiveClassInstantiationsWithDefaultConstructors.types +++ b/tests/baselines/reference/recursiveClassInstantiationsWithDefaultConstructors.types @@ -18,7 +18,7 @@ public prefix: string = ""; } export class MemberNameArray extends MemberName { >MemberNameArray : MemberNameArray ->MemberName : MemberName +>MemberName : typeof MemberName } } diff --git a/tests/baselines/reference/recursiveComplicatedClasses.types b/tests/baselines/reference/recursiveComplicatedClasses.types index 247b9ee27c562..d9e4f40f28664 100644 --- a/tests/baselines/reference/recursiveComplicatedClasses.types +++ b/tests/baselines/reference/recursiveComplicatedClasses.types @@ -39,15 +39,15 @@ class Symbol { } class InferenceSymbol extends Symbol { >InferenceSymbol : InferenceSymbol ->Symbol : Symbol +>Symbol : typeof Symbol } class ParameterSymbol extends InferenceSymbol { >ParameterSymbol : ParameterSymbol ->InferenceSymbol : InferenceSymbol +>InferenceSymbol : typeof InferenceSymbol } class TypeSymbol extends InferenceSymbol { >TypeSymbol : TypeSymbol ->InferenceSymbol : InferenceSymbol +>InferenceSymbol : typeof InferenceSymbol } diff --git a/tests/baselines/reference/recursivelySpecializedConstructorDeclaration.types b/tests/baselines/reference/recursivelySpecializedConstructorDeclaration.types index bccd226ceba19..ee15a2a44ddfe 100644 --- a/tests/baselines/reference/recursivelySpecializedConstructorDeclaration.types +++ b/tests/baselines/reference/recursivelySpecializedConstructorDeclaration.types @@ -29,7 +29,7 @@ module MsPortal.Controls.Base.ItemList { export class ViewModel extends ItemValue { >ViewModel : ViewModel >TValue : TValue ->ItemValue : ItemValue +>ItemValue : typeof ItemValue >TValue : TValue } } diff --git a/tests/baselines/reference/resolvingClassDeclarationWhenInBaseTypeResolution.types b/tests/baselines/reference/resolvingClassDeclarationWhenInBaseTypeResolution.types index 43db869265b4c..82ac92209a473 100644 --- a/tests/baselines/reference/resolvingClassDeclarationWhenInBaseTypeResolution.types +++ b/tests/baselines/reference/resolvingClassDeclarationWhenInBaseTypeResolution.types @@ -4,9 +4,9 @@ module rionegrensis { export class caniventer extends Lanthanum.nitidus { >caniventer : caniventer ->Lanthanum.nitidus : any +>Lanthanum.nitidus : typeof Lanthanum.nitidus >Lanthanum : typeof Lanthanum ->nitidus : Lanthanum.nitidus +>nitidus : typeof Lanthanum.nitidus >petrophilus : any >minutilla : petrophilus.minutilla >julianae : any @@ -90,9 +90,9 @@ module rionegrensis { >veraecrucis : veraecrucis >T0 : T0 >T1 : T1 ->trivirgatus.mixtus : any +>trivirgatus.mixtus : typeof trivirgatus.mixtus >trivirgatus : typeof trivirgatus ->mixtus : trivirgatus.mixtus +>mixtus : typeof trivirgatus.mixtus >gabriellae : any >amicus : gabriellae.amicus >lutreolus : any @@ -516,9 +516,9 @@ module julianae { >oralis : oralis >T0 : T0 >T1 : T1 ->caurinus.psilurus : any +>caurinus.psilurus : typeof caurinus.psilurus >caurinus : typeof caurinus ->psilurus : caurinus.psilurus +>psilurus : typeof caurinus.psilurus cepapi() : caurinus.psilurus { var x : caurinus.psilurus; () => { var y = this; }; return x; } >cepapi : () => caurinus.psilurus @@ -754,9 +754,9 @@ module julianae { } export class sumatrana extends Lanthanum.jugularis { >sumatrana : sumatrana ->Lanthanum.jugularis : any +>Lanthanum.jugularis : typeof Lanthanum.jugularis >Lanthanum : typeof Lanthanum ->jugularis : Lanthanum.jugularis +>jugularis : typeof Lanthanum.jugularis wolffsohni() : Lanthanum.suillus { var x : Lanthanum.suillus; () => { var y = this; }; return x; } >wolffsohni : () => Lanthanum.suillus @@ -1280,9 +1280,9 @@ module julianae { } export class durangae extends dogramacii.aurata { >durangae : durangae ->dogramacii.aurata : any +>dogramacii.aurata : typeof dogramacii.aurata >dogramacii : typeof dogramacii ->aurata : dogramacii.aurata +>aurata : typeof dogramacii.aurata Californium() : panamensis.setulosus { var x : panamensis.setulosus; () => { var y = this; }; return x; } >Californium : () => panamensis.setulosus @@ -1434,9 +1434,9 @@ module Lanthanum { >nitidus : nitidus >T0 : T0 >T1 : T1 ->argurus.gilbertii : any +>argurus.gilbertii : typeof argurus.gilbertii >argurus : typeof argurus ->gilbertii : argurus.gilbertii +>gilbertii : typeof argurus.gilbertii >lavali : any >thaeleri : lavali.thaeleri >lutreolus : any @@ -1604,9 +1604,9 @@ module Lanthanum { } export class megalonyx extends caurinus.johorensis { >megalonyx : megalonyx ->caurinus.johorensis : any +>caurinus.johorensis : typeof caurinus.johorensis >caurinus : typeof caurinus ->johorensis : caurinus.johorensis +>johorensis : typeof caurinus.johorensis >caurinus : any >megaphyllus : caurinus.megaphyllus >julianae : any @@ -1991,9 +1991,9 @@ module rendalli { export class zuluensis extends julianae.steerii { >zuluensis : zuluensis ->julianae.steerii : any +>julianae.steerii : typeof julianae.steerii >julianae : typeof julianae ->steerii : julianae.steerii +>steerii : typeof julianae.steerii telfairi() : argurus.wetmorei { var x : argurus.wetmorei; () => { var y = this; }; return x; } >telfairi : () => argurus.wetmorei @@ -2426,9 +2426,9 @@ module rendalli { >crenulata : crenulata >T0 : T0 >T1 : T1 ->trivirgatus.falconeri : any +>trivirgatus.falconeri : typeof trivirgatus.falconeri >trivirgatus : typeof trivirgatus ->falconeri : trivirgatus.falconeri +>falconeri : typeof trivirgatus.falconeri salvanius() : howi.coludo { var x : howi.coludo; () => { var y = this; }; return x; } >salvanius : () => howi.coludo @@ -2621,9 +2621,9 @@ module trivirgatus { >mixtus : mixtus >T0 : T0 >T1 : T1 ->argurus.pygmaea : any +>argurus.pygmaea : typeof argurus.pygmaea >argurus : typeof argurus ->pygmaea : argurus.pygmaea +>pygmaea : typeof argurus.pygmaea >argurus : any >oreas : argurus.oreas >panglima : any @@ -3359,9 +3359,9 @@ module ruatanica { export class americanus extends imperfecta.ciliolabrum { >americanus : americanus ->imperfecta.ciliolabrum : any +>imperfecta.ciliolabrum : typeof imperfecta.ciliolabrum >imperfecta : typeof imperfecta ->ciliolabrum : imperfecta.ciliolabrum +>ciliolabrum : typeof imperfecta.ciliolabrum >argurus : any >germaini : argurus.germaini >lutreolus : any @@ -3429,9 +3429,9 @@ module lavali { export class wilsoni extends Lanthanum.nitidus { >wilsoni : wilsoni ->Lanthanum.nitidus : any +>Lanthanum.nitidus : typeof Lanthanum.nitidus >Lanthanum : typeof Lanthanum ->nitidus : Lanthanum.nitidus +>nitidus : typeof Lanthanum.nitidus >rionegrensis : any >caniventer : rionegrensis.caniventer >Lanthanum : any @@ -3650,9 +3650,9 @@ module lavali { } export class otion extends howi.coludo { >otion : otion ->howi.coludo : any +>howi.coludo : typeof howi.coludo >howi : typeof howi ->coludo : howi.coludo +>coludo : typeof howi.coludo >argurus : any >oreas : argurus.oreas >howi : any @@ -4125,9 +4125,9 @@ module lavali { } export class thaeleri extends argurus.oreas { >thaeleri : thaeleri ->argurus.oreas : any +>argurus.oreas : typeof argurus.oreas >argurus : typeof argurus ->oreas : argurus.oreas +>oreas : typeof argurus.oreas coromandra() : julianae.galapagoensis { var x : julianae.galapagoensis; () => { var y = this; }; return x; } >coromandra : () => julianae.galapagoensis @@ -4289,9 +4289,9 @@ module lavali { } export class lepturus extends Lanthanum.suillus { >lepturus : lepturus ->Lanthanum.suillus : any +>Lanthanum.suillus : typeof Lanthanum.suillus >Lanthanum : typeof Lanthanum ->suillus : Lanthanum.suillus +>suillus : typeof Lanthanum.suillus >dammermani : any >melanops : dammermani.melanops >quasiater : any @@ -4365,9 +4365,9 @@ module dogramacii { export class robustulus extends lavali.wilsoni { >robustulus : robustulus ->lavali.wilsoni : any +>lavali.wilsoni : typeof lavali.wilsoni >lavali : typeof lavali ->wilsoni : lavali.wilsoni +>wilsoni : typeof lavali.wilsoni fossor() : minutus.inez { var x : minutus.inez; () => { var y = this; }; return x; } >fossor : () => minutus.inez @@ -4940,9 +4940,9 @@ module lutreolus { export class schlegeli extends lavali.beisa { >schlegeli : schlegeli ->lavali.beisa : any +>lavali.beisa : typeof lavali.beisa >lavali : typeof lavali ->beisa : lavali.beisa +>beisa : typeof lavali.beisa mittendorfi() : rionegrensis.caniventer { var x : rionegrensis.caniventer; () => { var y = this; }; return x; } >mittendorfi : () => rionegrensis.caniventer @@ -5678,9 +5678,9 @@ module panglima { >amphibius : amphibius >T0 : T0 >T1 : T1 ->caurinus.johorensis : any +>caurinus.johorensis : typeof caurinus.johorensis >caurinus : typeof caurinus ->johorensis : caurinus.johorensis +>johorensis : typeof caurinus.johorensis >Lanthanum : any >nitidus : Lanthanum.nitidus >petrophilus : any @@ -5812,9 +5812,9 @@ module panglima { >fundatus : fundatus >T0 : T0 >T1 : T1 ->lutreolus.schlegeli : any +>lutreolus.schlegeli : typeof lutreolus.schlegeli >lutreolus : typeof lutreolus ->schlegeli : lutreolus.schlegeli +>schlegeli : typeof lutreolus.schlegeli crassulus(): nigra.gracilis { var x: nigra.gracilis; () => { var y = this; }; return x; } >crassulus : () => nigra.gracilis @@ -5918,9 +5918,9 @@ module panglima { >abidi : abidi >T0 : T0 >T1 : T1 ->argurus.dauricus : any +>argurus.dauricus : typeof argurus.dauricus >argurus : typeof argurus ->dauricus : argurus.dauricus +>dauricus : typeof argurus.dauricus >argurus : any >germaini : argurus.germaini >julianae : any @@ -6133,9 +6133,9 @@ module minutus { >himalayana : himalayana >T0 : T0 >T1 : T1 ->lutreolus.punicus : any +>lutreolus.punicus : typeof lutreolus.punicus >lutreolus : typeof lutreolus ->punicus : lutreolus.punicus +>punicus : typeof lutreolus.punicus simoni(): argurus.netscheri> { var x: argurus.netscheri>; () => { var y = this; }; return x; } >simoni : () => argurus.netscheri> @@ -6377,9 +6377,9 @@ module caurinus { >mahaganus : mahaganus >T0 : T0 >T1 : T1 ->panglima.fundatus : any +>panglima.fundatus : typeof panglima.fundatus >panglima : typeof panglima ->fundatus : panglima.fundatus +>fundatus : typeof panglima.fundatus >quasiater : any >carolinensis : quasiater.carolinensis >macrorhinos : any @@ -6606,9 +6606,9 @@ module howi { >angulatus : angulatus >T0 : T0 >T1 : T1 ->sagitta.stolzmanni : any +>sagitta.stolzmanni : typeof sagitta.stolzmanni >sagitta : typeof sagitta ->stolzmanni : sagitta.stolzmanni +>stolzmanni : typeof sagitta.stolzmanni pennatus(): howi.marcanoi { var x: howi.marcanoi; () => { var y = this; }; return x; } >pennatus : () => marcanoi @@ -6814,9 +6814,9 @@ module sagitta { export class walkeri extends minutus.portoricensis { >walkeri : walkeri ->minutus.portoricensis : any +>minutus.portoricensis : typeof minutus.portoricensis >minutus : typeof minutus ->portoricensis : minutus.portoricensis +>portoricensis : typeof minutus.portoricensis maracajuensis(): samarensis.cahirinus { var x: samarensis.cahirinus; () => { var y = this; }; return x; } >maracajuensis : () => samarensis.cahirinus @@ -6846,9 +6846,9 @@ module minutus { >inez : inez >T0 : T0 >T1 : T1 ->samarensis.pelurus : any +>samarensis.pelurus : typeof samarensis.pelurus >samarensis : typeof samarensis ->pelurus : samarensis.pelurus +>pelurus : typeof samarensis.pelurus >argurus : any >germaini : argurus.germaini >julianae : any @@ -6880,9 +6880,9 @@ module macrorhinos { export class konganensis extends imperfecta.lasiurus { >konganensis : konganensis ->imperfecta.lasiurus : any +>imperfecta.lasiurus : typeof imperfecta.lasiurus >imperfecta : typeof imperfecta ->lasiurus : imperfecta.lasiurus +>lasiurus : typeof imperfecta.lasiurus >caurinus : any >psilurus : caurinus.psilurus >caurinus : any @@ -6896,9 +6896,9 @@ module panamensis { >linulus : linulus >T0 : T0 >T1 : T1 ->ruatanica.hector : any +>ruatanica.hector : typeof ruatanica.hector >ruatanica : typeof ruatanica ->hector : ruatanica.hector +>hector : typeof ruatanica.hector >julianae : any >sumatrana : julianae.sumatrana >samarensis : any @@ -7357,9 +7357,9 @@ module samarensis { >pelurus : pelurus >T0 : T0 >T1 : T1 ->sagitta.stolzmanni : any +>sagitta.stolzmanni : typeof sagitta.stolzmanni >sagitta : typeof sagitta ->stolzmanni : sagitta.stolzmanni +>stolzmanni : typeof sagitta.stolzmanni Palladium(): panamensis.linulus { var x: panamensis.linulus; () => { var y = this; }; return x; } >Palladium : () => panamensis.linulus @@ -7615,9 +7615,9 @@ module samarensis { >fuscus : fuscus >T0 : T0 >T1 : T1 ->macrorhinos.daphaenodon : any +>macrorhinos.daphaenodon : typeof macrorhinos.daphaenodon >macrorhinos : typeof macrorhinos ->daphaenodon : macrorhinos.daphaenodon +>daphaenodon : typeof macrorhinos.daphaenodon planifrons(): nigra.gracilis { var x: nigra.gracilis; () => { var y = this; }; return x; } >planifrons : () => nigra.gracilis @@ -8093,9 +8093,9 @@ module sagitta { >leptoceros : leptoceros >T0 : T0 >T1 : T1 ->caurinus.johorensis : any +>caurinus.johorensis : typeof caurinus.johorensis >caurinus : typeof caurinus ->johorensis : caurinus.johorensis +>johorensis : typeof caurinus.johorensis >argurus : any >peninsulae : argurus.peninsulae >daubentonii : any @@ -8205,9 +8205,9 @@ module daubentonii { >nigricans : nigricans >T0 : T0 >T1 : T1 ->sagitta.stolzmanni : any +>sagitta.stolzmanni : typeof sagitta.stolzmanni >sagitta : typeof sagitta ->stolzmanni : sagitta.stolzmanni +>stolzmanni : typeof sagitta.stolzmanni woosnami(): dogramacii.robustulus { var x: dogramacii.robustulus; () => { var y = this; }; return x; } >woosnami : () => dogramacii.robustulus @@ -8238,9 +8238,9 @@ module argurus { >pygmaea : pygmaea >T0 : T0 >T1 : T1 ->rendalli.moojeni : any +>rendalli.moojeni : typeof rendalli.moojeni >rendalli : typeof rendalli ->moojeni : rendalli.moojeni +>moojeni : typeof rendalli.moojeni >macrorhinos : any >konganensis : macrorhinos.konganensis >gabriellae : any @@ -8290,9 +8290,9 @@ module chrysaeolus { >sarasinorum : sarasinorum >T0 : T0 >T1 : T1 ->caurinus.psilurus : any +>caurinus.psilurus : typeof caurinus.psilurus >caurinus : typeof caurinus ->psilurus : caurinus.psilurus +>psilurus : typeof caurinus.psilurus belzebul(): samarensis.pallidus { var x: samarensis.pallidus; () => { var y = this; }; return x; } >belzebul : () => samarensis.pallidus @@ -8533,9 +8533,9 @@ module argurus { export class oreas extends lavali.wilsoni { >oreas : oreas ->lavali.wilsoni : any +>lavali.wilsoni : typeof lavali.wilsoni >lavali : typeof lavali ->wilsoni : lavali.wilsoni +>wilsoni : typeof lavali.wilsoni salamonis(): lavali.xanthognathus { var x: lavali.xanthognathus; () => { var y = this; }; return x; } >salamonis : () => lavali.xanthognathus @@ -9163,9 +9163,9 @@ module provocax { export class melanoleuca extends lavali.wilsoni { >melanoleuca : melanoleuca ->lavali.wilsoni : any +>lavali.wilsoni : typeof lavali.wilsoni >lavali : typeof lavali ->wilsoni : lavali.wilsoni +>wilsoni : typeof lavali.wilsoni Neodymium(): macrorhinos.marmosurus, lutreolus.foina> { var x: macrorhinos.marmosurus, lutreolus.foina>; () => { var y = this; }; return x; } >Neodymium : () => macrorhinos.marmosurus, lutreolus.foina> @@ -9310,9 +9310,9 @@ module howi { export class marcanoi extends Lanthanum.megalonyx { >marcanoi : marcanoi ->Lanthanum.megalonyx : any +>Lanthanum.megalonyx : typeof Lanthanum.megalonyx >Lanthanum : typeof Lanthanum ->megalonyx : Lanthanum.megalonyx +>megalonyx : typeof Lanthanum.megalonyx formosae(): Lanthanum.megalonyx { var x: Lanthanum.megalonyx; () => { var y = this; }; return x; } >formosae : () => Lanthanum.megalonyx @@ -10398,9 +10398,9 @@ module gabriellae { >klossii : klossii >T0 : T0 >T1 : T1 ->imperfecta.lasiurus : any +>imperfecta.lasiurus : typeof imperfecta.lasiurus >imperfecta : typeof imperfecta ->lasiurus : imperfecta.lasiurus +>lasiurus : typeof imperfecta.lasiurus >dogramacii : any >robustulus : dogramacii.robustulus >caurinus : any @@ -10908,9 +10908,9 @@ module imperfecta { >ciliolabrum : ciliolabrum >T0 : T0 >T1 : T1 ->dogramacii.robustulus : any +>dogramacii.robustulus : typeof dogramacii.robustulus >dogramacii : typeof dogramacii ->robustulus : dogramacii.robustulus +>robustulus : typeof dogramacii.robustulus leschenaultii(): argurus.dauricus> { var x: argurus.dauricus>; () => { var y = this; }; return x; } >leschenaultii : () => argurus.dauricus> @@ -11072,9 +11072,9 @@ module petrophilus { >sodyi : sodyi >T0 : T0 >T1 : T1 ->quasiater.bobrinskoi : any +>quasiater.bobrinskoi : typeof quasiater.bobrinskoi >quasiater : typeof quasiater ->bobrinskoi : quasiater.bobrinskoi +>bobrinskoi : typeof quasiater.bobrinskoi saundersiae(): samarensis.pallidus { var x: samarensis.pallidus; () => { var y = this; }; return x; } >saundersiae : () => samarensis.pallidus @@ -11206,9 +11206,9 @@ module caurinus { export class megaphyllus extends imperfecta.lasiurus> { >megaphyllus : megaphyllus ->imperfecta.lasiurus : any +>imperfecta.lasiurus : typeof imperfecta.lasiurus >imperfecta : typeof imperfecta ->lasiurus : imperfecta.lasiurus +>lasiurus : typeof imperfecta.lasiurus >julianae : any >acariensis : julianae.acariensis >howi : any @@ -11640,9 +11640,9 @@ module lutreolus { >cor : cor >T0 : T0 >T1 : T1 ->panglima.fundatus : any +>panglima.fundatus : typeof panglima.fundatus >panglima : typeof panglima ->fundatus : panglima.fundatus +>fundatus : typeof panglima.fundatus >panamensis : any >linulus : panamensis.linulus >trivirgatus : any @@ -11887,9 +11887,9 @@ module argurus { export class germaini extends gabriellae.amicus { >germaini : germaini ->gabriellae.amicus : any +>gabriellae.amicus : typeof gabriellae.amicus >gabriellae : typeof gabriellae ->amicus : gabriellae.amicus +>amicus : typeof gabriellae.amicus sharpei(): lavali.wilsoni { var x: lavali.wilsoni; () => { var y = this; }; return x; } >sharpei : () => lavali.wilsoni @@ -12100,9 +12100,9 @@ module dammermani { export class melanops extends minutus.inez { >melanops : melanops ->minutus.inez : any +>minutus.inez : typeof minutus.inez >minutus : typeof minutus ->inez : minutus.inez +>inez : typeof minutus.inez >sagitta : any >stolzmanni : sagitta.stolzmanni >dammermani : any @@ -12350,9 +12350,9 @@ module argurus { export class peninsulae extends patas.uralensis { >peninsulae : peninsulae ->patas.uralensis : any +>patas.uralensis : typeof patas.uralensis >patas : typeof patas ->uralensis : patas.uralensis +>uralensis : typeof patas.uralensis aitkeni(): trivirgatus.mixtus, panglima.amphibius> { var x: trivirgatus.mixtus, panglima.amphibius>; () => { var y = this; }; return x; } >aitkeni : () => trivirgatus.mixtus, panglima.amphibius> @@ -12815,9 +12815,9 @@ module ruatanica { >Praseodymium : Praseodymium >T0 : T0 >T1 : T1 ->ruatanica.hector : any +>ruatanica.hector : typeof hector >ruatanica : typeof ruatanica ->hector : hector +>hector : typeof hector >lutreolus : any >punicus : lutreolus.punicus >gabriellae : any @@ -13163,9 +13163,9 @@ module caurinus { >johorensis : johorensis >T0 : T0 >T1 : T1 ->lutreolus.punicus : any +>lutreolus.punicus : typeof lutreolus.punicus >lutreolus : typeof lutreolus ->punicus : lutreolus.punicus +>punicus : typeof lutreolus.punicus maini(): ruatanica.Praseodymium { var x: ruatanica.Praseodymium; () => { var y = this; }; return x; } >maini : () => ruatanica.Praseodymium @@ -13610,9 +13610,9 @@ module caurinus { export class psilurus extends lutreolus.punicus { >psilurus : psilurus ->lutreolus.punicus : any +>lutreolus.punicus : typeof lutreolus.punicus >lutreolus : typeof lutreolus ->punicus : lutreolus.punicus +>punicus : typeof lutreolus.punicus socialis(): panglima.amphibius { var x: panglima.amphibius; () => { var y = this; }; return x; } >socialis : () => panglima.amphibius diff --git a/tests/baselines/reference/returnStatements.types b/tests/baselines/reference/returnStatements.types index e5332b2e6acbd..07b20e8cabec9 100644 --- a/tests/baselines/reference/returnStatements.types +++ b/tests/baselines/reference/returnStatements.types @@ -49,7 +49,7 @@ class C implements I { } class D extends C { >D : D ->C : C +>C : typeof C name: string; >name : string diff --git a/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructorAndExtendsClause.types b/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructorAndExtendsClause.types index 12d8d56cf6e14..ef6e6a646635c 100644 --- a/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructorAndExtendsClause.types +++ b/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructorAndExtendsClause.types @@ -5,7 +5,7 @@ class AbstractGreeter { class Greeter extends AbstractGreeter { >Greeter : Greeter ->AbstractGreeter : AbstractGreeter +>AbstractGreeter : typeof AbstractGreeter public a = 10; >a : number diff --git a/tests/baselines/reference/specializedInheritedConstructors1.types b/tests/baselines/reference/specializedInheritedConstructors1.types index a073efa24d7c1..6ca5b01776a5c 100644 --- a/tests/baselines/reference/specializedInheritedConstructors1.types +++ b/tests/baselines/reference/specializedInheritedConstructors1.types @@ -27,7 +27,7 @@ class Model { } class MyView extends View { } >MyView : MyView ->View : View +>View : typeof View >Model : Model var m: ViewOptions = { model: new Model() }; diff --git a/tests/baselines/reference/staticFactory1.types b/tests/baselines/reference/staticFactory1.types index 538728de2dff5..419fffd6b0dcc 100644 --- a/tests/baselines/reference/staticFactory1.types +++ b/tests/baselines/reference/staticFactory1.types @@ -17,7 +17,7 @@ class Base { class Derived extends Base { >Derived : Derived ->Base : Base +>Base : typeof Base foo() { return 2; } >foo : () => number diff --git a/tests/baselines/reference/staticInheritance.types b/tests/baselines/reference/staticInheritance.types index 04c64281ba83e..0235735ca4443 100644 --- a/tests/baselines/reference/staticInheritance.types +++ b/tests/baselines/reference/staticInheritance.types @@ -18,7 +18,7 @@ class A { } class B extends A { >B : B ->A : A +>A : typeof A p1 = doThing(A); // OK >p1 : void diff --git a/tests/baselines/reference/staticMemberAccessOffDerivedType1.types b/tests/baselines/reference/staticMemberAccessOffDerivedType1.types index 55b9c83969b2a..835100d3e9b96 100644 --- a/tests/baselines/reference/staticMemberAccessOffDerivedType1.types +++ b/tests/baselines/reference/staticMemberAccessOffDerivedType1.types @@ -11,7 +11,7 @@ class SomeBase { } class P extends SomeBase { >P : P ->SomeBase : SomeBase +>SomeBase : typeof SomeBase static SomeNumber = P.GetNumber(); >SomeNumber : number diff --git a/tests/baselines/reference/subtypingTransitivity.types b/tests/baselines/reference/subtypingTransitivity.types index 0a41e045d98c3..543284bf619e6 100644 --- a/tests/baselines/reference/subtypingTransitivity.types +++ b/tests/baselines/reference/subtypingTransitivity.types @@ -9,14 +9,14 @@ class B { class D extends B { >D : D ->B : B +>B : typeof B public x: string; >x : string } class D2 extends B { >D2 : D2 ->B : B +>B : typeof B public x: number; >x : number diff --git a/tests/baselines/reference/subtypingWithCallSignatures2.types b/tests/baselines/reference/subtypingWithCallSignatures2.types index 8a56e05a9c212..1e7e412c8708f 100644 --- a/tests/baselines/reference/subtypingWithCallSignatures2.types +++ b/tests/baselines/reference/subtypingWithCallSignatures2.types @@ -7,17 +7,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : Base +>Base : typeof Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : Derived +>Derived : typeof Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : Base +>Base : typeof Base >bing : string declare function foo1(a: (x: number) => number[]): typeof a; diff --git a/tests/baselines/reference/subtypingWithCallSignatures3.types b/tests/baselines/reference/subtypingWithCallSignatures3.types index 379810b2541f0..b925f7d923ef9 100644 --- a/tests/baselines/reference/subtypingWithCallSignatures3.types +++ b/tests/baselines/reference/subtypingWithCallSignatures3.types @@ -11,17 +11,17 @@ module Errors { class Derived extends Base { bar: string; } >Derived : Derived ->Base : Base +>Base : typeof Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : Derived +>Derived : typeof Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : Base +>Base : typeof Base >bing : string declare function foo2(a2: (x: number) => string[]): typeof a2; diff --git a/tests/baselines/reference/subtypingWithCallSignatures4.types b/tests/baselines/reference/subtypingWithCallSignatures4.types index e76d36114e961..caa06f6a8e6d5 100644 --- a/tests/baselines/reference/subtypingWithCallSignatures4.types +++ b/tests/baselines/reference/subtypingWithCallSignatures4.types @@ -7,17 +7,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : Base +>Base : typeof Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : Derived +>Derived : typeof Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : Base +>Base : typeof Base >bing : string declare function foo1(a: (x: T) => T[]); diff --git a/tests/baselines/reference/subtypingWithConstructSignatures2.types b/tests/baselines/reference/subtypingWithConstructSignatures2.types index d723a367ecb3d..a7a547dad6048 100644 --- a/tests/baselines/reference/subtypingWithConstructSignatures2.types +++ b/tests/baselines/reference/subtypingWithConstructSignatures2.types @@ -7,17 +7,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : Base +>Base : typeof Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : Derived +>Derived : typeof Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : Base +>Base : typeof Base >bing : string declare function foo1(a: new (x: number) => number[]): typeof a; diff --git a/tests/baselines/reference/subtypingWithConstructSignatures3.types b/tests/baselines/reference/subtypingWithConstructSignatures3.types index b0f0680c7a088..a46b8c02e151d 100644 --- a/tests/baselines/reference/subtypingWithConstructSignatures3.types +++ b/tests/baselines/reference/subtypingWithConstructSignatures3.types @@ -11,17 +11,17 @@ module Errors { class Derived extends Base { bar: string; } >Derived : Derived ->Base : Base +>Base : typeof Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : Derived +>Derived : typeof Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : Base +>Base : typeof Base >bing : string declare function foo2(a2: new (x: number) => string[]): typeof a2; diff --git a/tests/baselines/reference/subtypingWithConstructSignatures4.types b/tests/baselines/reference/subtypingWithConstructSignatures4.types index 21a40ecf7fcc1..d4251e7cd4bb5 100644 --- a/tests/baselines/reference/subtypingWithConstructSignatures4.types +++ b/tests/baselines/reference/subtypingWithConstructSignatures4.types @@ -7,17 +7,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : Base +>Base : typeof Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : Derived +>Derived : typeof Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : Base +>Base : typeof Base >bing : string declare function foo1(a: new (x: T) => T[]); diff --git a/tests/baselines/reference/subtypingWithConstructSignatures5.types b/tests/baselines/reference/subtypingWithConstructSignatures5.types index 7ffb4db5467e0..c2d49f8e66174 100644 --- a/tests/baselines/reference/subtypingWithConstructSignatures5.types +++ b/tests/baselines/reference/subtypingWithConstructSignatures5.types @@ -8,17 +8,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : Base +>Base : typeof Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : Derived +>Derived : typeof Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : Base +>Base : typeof Base >bing : string interface A { // T diff --git a/tests/baselines/reference/subtypingWithConstructSignatures6.types b/tests/baselines/reference/subtypingWithConstructSignatures6.types index bcbf452615bfc..b94befab2f32b 100644 --- a/tests/baselines/reference/subtypingWithConstructSignatures6.types +++ b/tests/baselines/reference/subtypingWithConstructSignatures6.types @@ -9,17 +9,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : Base +>Base : typeof Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : Derived +>Derived : typeof Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : Base +>Base : typeof Base >bing : string interface A { // T diff --git a/tests/baselines/reference/subtypingWithObjectMembers4.types b/tests/baselines/reference/subtypingWithObjectMembers4.types index 6e6475b25786b..2009632b74c03 100644 --- a/tests/baselines/reference/subtypingWithObjectMembers4.types +++ b/tests/baselines/reference/subtypingWithObjectMembers4.types @@ -10,7 +10,7 @@ class Base { class Derived extends Base { >Derived : Derived ->Base : Base +>Base : typeof Base bar: string; >bar : string @@ -26,7 +26,7 @@ class A { class B extends A { >B : B ->A : A +>A : typeof A fooo: Derived; // ok, inherits foo >fooo : Derived @@ -42,7 +42,7 @@ class A2 { class B2 extends A2 { >B2 : B2 ->A2 : A2 +>A2 : typeof A2 1.1: Derived; // ok, inherits 1 >Derived : Derived @@ -57,7 +57,7 @@ class A3 { class B3 extends A3 { >B3 : B3 ->A3 : A3 +>A3 : typeof A3 '1.1': Derived; // ok, inherits '1' >Derived : Derived diff --git a/tests/baselines/reference/super2.types b/tests/baselines/reference/super2.types index a3807f03099df..c09ff3e8be55b 100644 --- a/tests/baselines/reference/super2.types +++ b/tests/baselines/reference/super2.types @@ -20,7 +20,7 @@ class Base5 { class Sub5 extends Base5 { >Sub5 : Sub5 ->Base5 : Base5 +>Base5 : typeof Base5 public x() { >x : () => string @@ -32,7 +32,7 @@ class Sub5 extends Base5 { class SubSub5 extends Sub5 { >SubSub5 : SubSub5 ->Sub5 : Sub5 +>Sub5 : typeof Sub5 public x() { >x : () => string @@ -68,7 +68,7 @@ class Base6 { class Sub6 extends Base6 { >Sub6 : Sub6 ->Base6 : Base6 +>Base6 : typeof Base6 public y() { >y : () => string @@ -80,7 +80,7 @@ class Sub6 extends Base6 { class SubSub6 extends Sub6 { >SubSub6 : SubSub6 ->Sub6 : Sub6 +>Sub6 : typeof Sub6 public y() { >y : () => string diff --git a/tests/baselines/reference/superAccessInFatArrow1.types b/tests/baselines/reference/superAccessInFatArrow1.types index 0c50015c0510e..279a94b29e034 100644 --- a/tests/baselines/reference/superAccessInFatArrow1.types +++ b/tests/baselines/reference/superAccessInFatArrow1.types @@ -11,7 +11,7 @@ module test { } export class B extends A { >B : B ->A : A +>A : typeof A bar(callback: () => void ) { >bar : (callback: () => void) => void diff --git a/tests/baselines/reference/superCallFromClassThatDerivesFromGenericType1.types b/tests/baselines/reference/superCallFromClassThatDerivesFromGenericType1.types index 7630d67606ace..c0a66ff629a94 100644 --- a/tests/baselines/reference/superCallFromClassThatDerivesFromGenericType1.types +++ b/tests/baselines/reference/superCallFromClassThatDerivesFromGenericType1.types @@ -16,7 +16,7 @@ declare class B { class D extends B { >D : D ->B : B +>B : typeof B constructor() { super(); diff --git a/tests/baselines/reference/superCallFromClassThatDerivesFromGenericType2.types b/tests/baselines/reference/superCallFromClassThatDerivesFromGenericType2.types index cd26719d22e23..873766b6af2e6 100644 --- a/tests/baselines/reference/superCallFromClassThatDerivesFromGenericType2.types +++ b/tests/baselines/reference/superCallFromClassThatDerivesFromGenericType2.types @@ -12,7 +12,7 @@ declare class B { class D extends B { >D : D ->B : B +>B : typeof B constructor() { super(); diff --git a/tests/baselines/reference/superCallParameterContextualTyping1.types b/tests/baselines/reference/superCallParameterContextualTyping1.types index 23aa3147997f3..31c6db02b8063 100644 --- a/tests/baselines/reference/superCallParameterContextualTyping1.types +++ b/tests/baselines/reference/superCallParameterContextualTyping1.types @@ -16,7 +16,7 @@ class A { class B extends A { >B : B ->A : A +>A : typeof A // Ensure 'value' is of type 'number (and not '{}') by using its 'toExponential()' method. constructor() { super(value => String(value.toExponential())); } diff --git a/tests/baselines/reference/superCallParameterContextualTyping3.types b/tests/baselines/reference/superCallParameterContextualTyping3.types index 4a8515d110cf5..a640fbfdeb1f9 100644 --- a/tests/baselines/reference/superCallParameterContextualTyping3.types +++ b/tests/baselines/reference/superCallParameterContextualTyping3.types @@ -29,7 +29,7 @@ class CBase { class C extends CBase { >C : C ->CBase : CBase +>CBase : typeof CBase constructor() { // Should be okay. diff --git a/tests/baselines/reference/superCalls.types b/tests/baselines/reference/superCalls.types index ce5353df329b0..21f0d5dc7ee88 100644 --- a/tests/baselines/reference/superCalls.types +++ b/tests/baselines/reference/superCalls.types @@ -17,7 +17,7 @@ function v(): void { } class Derived extends Base { >Derived : Derived ->Base : Base +>Base : typeof Base //super call in class constructor of derived type constructor(public q: number) { @@ -49,7 +49,7 @@ class OtherBase { class OtherDerived extends OtherBase { >OtherDerived : OtherDerived ->OtherBase : OtherBase +>OtherBase : typeof OtherBase constructor() { var p = ''; diff --git a/tests/baselines/reference/superInCatchBlock1.types b/tests/baselines/reference/superInCatchBlock1.types index 616c11cee7fee..33f5e974f613e 100644 --- a/tests/baselines/reference/superInCatchBlock1.types +++ b/tests/baselines/reference/superInCatchBlock1.types @@ -7,7 +7,7 @@ class A { } class B extends A { >B : B ->A : A +>A : typeof A m() { >m : () => void diff --git a/tests/baselines/reference/superWithGenericSpecialization.types b/tests/baselines/reference/superWithGenericSpecialization.types index 258615b309f19..d9e4cbf820c3f 100644 --- a/tests/baselines/reference/superWithGenericSpecialization.types +++ b/tests/baselines/reference/superWithGenericSpecialization.types @@ -11,7 +11,7 @@ class C { class D extends C { >D : D >T : T ->C : C +>C : typeof C y: T; >y : T diff --git a/tests/baselines/reference/superWithGenerics.types b/tests/baselines/reference/superWithGenerics.types index 3a034b67f0463..bdcaab7ba7522 100644 --- a/tests/baselines/reference/superWithGenerics.types +++ b/tests/baselines/reference/superWithGenerics.types @@ -16,7 +16,7 @@ declare class B { class D extends B { >D : D ->B : B +>B : typeof B constructor() { super(); diff --git a/tests/baselines/reference/switchStatements.types b/tests/baselines/reference/switchStatements.types index a5679547c1292..2d8901c0cd083 100644 --- a/tests/baselines/reference/switchStatements.types +++ b/tests/baselines/reference/switchStatements.types @@ -99,7 +99,7 @@ class C { id: number; } class D extends C { name: string } >D : D ->C : C +>C : typeof C >name : string switch (new C()) { diff --git a/tests/baselines/reference/symbolProperty26.types b/tests/baselines/reference/symbolProperty26.types index 386761c98f91e..3f482551bcc6f 100644 --- a/tests/baselines/reference/symbolProperty26.types +++ b/tests/baselines/reference/symbolProperty26.types @@ -14,7 +14,7 @@ class C1 { class C2 extends C1 { >C2 : C2 ->C1 : C1 +>C1 : typeof C1 [Symbol.toStringTag]() { >Symbol.toStringTag : symbol diff --git a/tests/baselines/reference/symbolProperty27.types b/tests/baselines/reference/symbolProperty27.types index d8ff2f2f11629..d65989a903d7e 100644 --- a/tests/baselines/reference/symbolProperty27.types +++ b/tests/baselines/reference/symbolProperty27.types @@ -14,7 +14,7 @@ class C1 { class C2 extends C1 { >C2 : C2 ->C1 : C1 +>C1 : typeof C1 [Symbol.toStringTag]() { >Symbol.toStringTag : symbol diff --git a/tests/baselines/reference/symbolProperty28.types b/tests/baselines/reference/symbolProperty28.types index 6eddebf44d858..14a1f64f409cb 100644 --- a/tests/baselines/reference/symbolProperty28.types +++ b/tests/baselines/reference/symbolProperty28.types @@ -16,7 +16,7 @@ class C1 { class C2 extends C1 { } >C2 : C2 ->C1 : C1 +>C1 : typeof C1 var c: C2; >c : C2 diff --git a/tests/baselines/reference/typeGuardFunction.types b/tests/baselines/reference/typeGuardFunction.types index cf673f965f9bc..8addafa2bc623 100644 --- a/tests/baselines/reference/typeGuardFunction.types +++ b/tests/baselines/reference/typeGuardFunction.types @@ -16,7 +16,7 @@ class B { class C extends A { >C : C ->A : A +>A : typeof A propC: number; >propC : number diff --git a/tests/baselines/reference/typeGuardFunctionGenerics.types b/tests/baselines/reference/typeGuardFunctionGenerics.types index 77162e55a40d4..6e0ea52aea654 100644 --- a/tests/baselines/reference/typeGuardFunctionGenerics.types +++ b/tests/baselines/reference/typeGuardFunctionGenerics.types @@ -16,7 +16,7 @@ class B { class C extends A { >C : C ->A : A +>A : typeof A propC: number; >propC : number diff --git a/tests/baselines/reference/typeGuardOfFormInstanceOf.types b/tests/baselines/reference/typeGuardOfFormInstanceOf.types index 891e8c1bea276..060c0caa37fbf 100644 --- a/tests/baselines/reference/typeGuardOfFormInstanceOf.types +++ b/tests/baselines/reference/typeGuardOfFormInstanceOf.types @@ -19,7 +19,7 @@ class C2 { } class D1 extends C1 { >D1 : D1 ->C1 : C1 +>C1 : typeof C1 p3: number; >p3 : number diff --git a/tests/baselines/reference/typeGuardOfFormIsType.types b/tests/baselines/reference/typeGuardOfFormIsType.types index b14e5e2291048..fc62b84a79ac3 100644 --- a/tests/baselines/reference/typeGuardOfFormIsType.types +++ b/tests/baselines/reference/typeGuardOfFormIsType.types @@ -14,7 +14,7 @@ class C2 { } class D1 extends C1 { >D1 : D1 ->C1 : C1 +>C1 : typeof C1 p3: number; >p3 : number diff --git a/tests/baselines/reference/typeOfSuperCall.types b/tests/baselines/reference/typeOfSuperCall.types index 92108bedc15cf..fc355df5413f7 100644 --- a/tests/baselines/reference/typeOfSuperCall.types +++ b/tests/baselines/reference/typeOfSuperCall.types @@ -5,7 +5,7 @@ class C { class D extends C { >D : D ->C : C +>C : typeof C constructor() { var x: void = super(); diff --git a/tests/baselines/reference/typeParameterExtendingUnion1.types b/tests/baselines/reference/typeParameterExtendingUnion1.types index 29b748bab7d9c..f907d65e0c3af 100644 --- a/tests/baselines/reference/typeParameterExtendingUnion1.types +++ b/tests/baselines/reference/typeParameterExtendingUnion1.types @@ -5,12 +5,12 @@ class Animal { run() { } } class Cat extends Animal { meow } >Cat : Cat ->Animal : Animal +>Animal : typeof Animal >meow : any class Dog extends Animal { woof } >Dog : Dog ->Animal : Animal +>Animal : typeof Animal >woof : any function run(a: Animal) { diff --git a/tests/baselines/reference/typeParameterExtendingUnion2.types b/tests/baselines/reference/typeParameterExtendingUnion2.types index 0bb1e6a58af4a..cc7eb67fd46c8 100644 --- a/tests/baselines/reference/typeParameterExtendingUnion2.types +++ b/tests/baselines/reference/typeParameterExtendingUnion2.types @@ -5,12 +5,12 @@ class Animal { run() { } } class Cat extends Animal { meow } >Cat : Cat ->Animal : Animal +>Animal : typeof Animal >meow : any class Dog extends Animal { woof } >Dog : Dog ->Animal : Animal +>Animal : typeof Animal >woof : any function run(a: Cat | Dog) { diff --git a/tests/baselines/reference/typeofClass2.types b/tests/baselines/reference/typeofClass2.types index 8870d9a587474..663316b30e9da 100644 --- a/tests/baselines/reference/typeofClass2.types +++ b/tests/baselines/reference/typeofClass2.types @@ -31,7 +31,7 @@ class C { class D extends C { >D : D ->C : C +>C : typeof C static baz(x: number) { } >baz : (x: number) => void diff --git a/tests/baselines/reference/typesWithSpecializedCallSignatures.types b/tests/baselines/reference/typesWithSpecializedCallSignatures.types index fa3ac7a4ba4d4..37d00550ed5ea 100644 --- a/tests/baselines/reference/typesWithSpecializedCallSignatures.types +++ b/tests/baselines/reference/typesWithSpecializedCallSignatures.types @@ -7,12 +7,12 @@ class Base { foo: string } class Derived1 extends Base { bar: string } >Derived1 : Derived1 ->Base : Base +>Base : typeof Base >bar : string class Derived2 extends Base { baz: string } >Derived2 : Derived2 ->Base : Base +>Base : typeof Base >baz : string class C { diff --git a/tests/baselines/reference/typesWithSpecializedConstructSignatures.types b/tests/baselines/reference/typesWithSpecializedConstructSignatures.types index 66e274d917adc..8f1f6a09b7fcb 100644 --- a/tests/baselines/reference/typesWithSpecializedConstructSignatures.types +++ b/tests/baselines/reference/typesWithSpecializedConstructSignatures.types @@ -7,12 +7,12 @@ class Base { foo: string } class Derived1 extends Base { bar: string } >Derived1 : Derived1 ->Base : Base +>Base : typeof Base >bar : string class Derived2 extends Base { baz: string } >Derived2 : Derived2 ->Base : Base +>Base : typeof Base >baz : string class C { diff --git a/tests/baselines/reference/undefinedIsSubtypeOfEverything.types b/tests/baselines/reference/undefinedIsSubtypeOfEverything.types index d89f032bf29c2..d80f95c3b5ebe 100644 --- a/tests/baselines/reference/undefinedIsSubtypeOfEverything.types +++ b/tests/baselines/reference/undefinedIsSubtypeOfEverything.types @@ -11,7 +11,7 @@ class Base { class D0 extends Base { >D0 : D0 ->Base : Base +>Base : typeof Base foo: any; >foo : any @@ -19,7 +19,7 @@ class D0 extends Base { class DA extends Base { >DA : DA ->Base : Base +>Base : typeof Base foo: typeof undefined; >foo : any @@ -28,7 +28,7 @@ class DA extends Base { class D1 extends Base { >D1 : D1 ->Base : Base +>Base : typeof Base foo: string; >foo : string @@ -36,7 +36,7 @@ class D1 extends Base { class D1A extends Base { >D1A : D1A ->Base : Base +>Base : typeof Base foo: String; >foo : String @@ -46,7 +46,7 @@ class D1A extends Base { class D2 extends Base { >D2 : D2 ->Base : Base +>Base : typeof Base foo: number; >foo : number @@ -54,7 +54,7 @@ class D2 extends Base { class D2A extends Base { >D2A : D2A ->Base : Base +>Base : typeof Base foo: Number; >foo : Number @@ -64,7 +64,7 @@ class D2A extends Base { class D3 extends Base { >D3 : D3 ->Base : Base +>Base : typeof Base foo: boolean; >foo : boolean @@ -72,7 +72,7 @@ class D3 extends Base { class D3A extends Base { >D3A : D3A ->Base : Base +>Base : typeof Base foo: Boolean; >foo : Boolean @@ -82,7 +82,7 @@ class D3A extends Base { class D4 extends Base { >D4 : D4 ->Base : Base +>Base : typeof Base foo: RegExp; >foo : RegExp @@ -91,7 +91,7 @@ class D4 extends Base { class D5 extends Base { >D5 : D5 ->Base : Base +>Base : typeof Base foo: Date; >foo : Date @@ -101,7 +101,7 @@ class D5 extends Base { class D6 extends Base { >D6 : D6 ->Base : Base +>Base : typeof Base foo: number[]; >foo : number[] @@ -109,7 +109,7 @@ class D6 extends Base { class D7 extends Base { >D7 : D7 ->Base : Base +>Base : typeof Base foo: { bar: number }; >foo : { bar: number; } @@ -119,7 +119,7 @@ class D7 extends Base { class D8 extends Base { >D8 : D8 ->Base : Base +>Base : typeof Base foo: D7; >foo : D7 @@ -134,7 +134,7 @@ interface I1 { } class D9 extends Base { >D9 : D9 ->Base : Base +>Base : typeof Base foo: I1; >foo : I1 @@ -144,7 +144,7 @@ class D9 extends Base { class D10 extends Base { >D10 : D10 ->Base : Base +>Base : typeof Base foo: () => number; >foo : () => number @@ -156,7 +156,7 @@ enum E { A } class D11 extends Base { >D11 : D11 ->Base : Base +>Base : typeof Base foo: E; >foo : E @@ -175,7 +175,7 @@ module f { } class D12 extends Base { >D12 : D12 ->Base : Base +>Base : typeof Base foo: typeof f; >foo : typeof f @@ -196,7 +196,7 @@ module c { } class D13 extends Base { >D13 : D13 ->Base : Base +>Base : typeof Base foo: typeof c; >foo : typeof c @@ -207,7 +207,7 @@ class D13 extends Base { class D14 extends Base { >D14 : D14 >T : T ->Base : Base +>Base : typeof Base foo: T; >foo : T @@ -219,7 +219,7 @@ class D15 extends Base { >D15 : D15 >T : T >U : U ->Base : Base +>Base : typeof Base foo: U; >foo : U @@ -233,7 +233,7 @@ class D15 extends Base { class D16 extends Base { >D16 : D16 ->Base : Base +>Base : typeof Base foo: Object; >foo : Object @@ -243,7 +243,7 @@ class D16 extends Base { class D17 extends Base { >D17 : D17 ->Base : Base +>Base : typeof Base foo: {}; >foo : {} diff --git a/tests/baselines/reference/underscoreMapFirst.types b/tests/baselines/reference/underscoreMapFirst.types index 4de320604bd7d..c22d127ab34b9 100644 --- a/tests/baselines/reference/underscoreMapFirst.types +++ b/tests/baselines/reference/underscoreMapFirst.types @@ -112,7 +112,7 @@ interface ISeries { class MyView extends View { >MyView : MyView ->View : View +>View : typeof View public getDataSeries(): ISeries[] { >getDataSeries : () => ISeries[] diff --git a/tests/baselines/reference/unionTypeFromArrayLiteral.types b/tests/baselines/reference/unionTypeFromArrayLiteral.types index 63aefdd214c06..83fc69560f5c1 100644 --- a/tests/baselines/reference/unionTypeFromArrayLiteral.types +++ b/tests/baselines/reference/unionTypeFromArrayLiteral.types @@ -58,12 +58,12 @@ class D { foo2() { } } class E extends C { foo3() { } } >E : E ->C : C +>C : typeof C >foo3 : () => void class F extends C { foo4() { } } >F : F ->C : C +>C : typeof C >foo4 : () => void var c: C, d: D, e: E, f: F; diff --git a/tests/baselines/reference/validUseOfThisInSuper.types b/tests/baselines/reference/validUseOfThisInSuper.types index d7c882496e27b..75a2d8df9dc54 100644 --- a/tests/baselines/reference/validUseOfThisInSuper.types +++ b/tests/baselines/reference/validUseOfThisInSuper.types @@ -9,7 +9,7 @@ class Base { } class Super extends Base { >Super : Super ->Base : Base +>Base : typeof Base constructor() { super((() => this)()); // ok since this is not the case: The constructor declares parameter properties or the containing class declares instance member variables with initializers. diff --git a/tests/baselines/reference/varArgsOnConstructorTypes.types b/tests/baselines/reference/varArgsOnConstructorTypes.types index 5ac9babd42698..c595476a039c6 100644 --- a/tests/baselines/reference/varArgsOnConstructorTypes.types +++ b/tests/baselines/reference/varArgsOnConstructorTypes.types @@ -8,7 +8,7 @@ export class A { export class B extends A { >B : B ->A : A +>A : typeof A private p1: number; >p1 : number From d5752592ac32e42332cd69bec6680b34d4f46b14 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Mon, 15 Jun 2015 16:14:01 -0700 Subject: [PATCH 06/16] Adding basic tests --- .../classExtendingBuiltinType.ts | 10 ++++ .../classExtendingClassLikeType.ts | 57 +++++++++++++++++++ .../classExtendingNonConstructor.ts | 13 +++++ .../classDeclarations/classExtendingNull.ts | 2 + 4 files changed, 82 insertions(+) create mode 100644 tests/cases/conformance/classes/classDeclarations/classExtendingBuiltinType.ts create mode 100644 tests/cases/conformance/classes/classDeclarations/classExtendingClassLikeType.ts create mode 100644 tests/cases/conformance/classes/classDeclarations/classExtendingNonConstructor.ts create mode 100644 tests/cases/conformance/classes/classDeclarations/classExtendingNull.ts diff --git a/tests/cases/conformance/classes/classDeclarations/classExtendingBuiltinType.ts b/tests/cases/conformance/classes/classDeclarations/classExtendingBuiltinType.ts new file mode 100644 index 0000000000000..f36da74ea71f6 --- /dev/null +++ b/tests/cases/conformance/classes/classDeclarations/classExtendingBuiltinType.ts @@ -0,0 +1,10 @@ +class C1 extends Object { } +class C2 extends Function { } +class C3 extends String { } +class C4 extends Boolean { } +class C5 extends Number { } +class C6 extends Date { } +class C7 extends RegExp { } +class C8 extends Error { } +class C9 extends Array { } +class C10 extends Array { } diff --git a/tests/cases/conformance/classes/classDeclarations/classExtendingClassLikeType.ts b/tests/cases/conformance/classes/classDeclarations/classExtendingClassLikeType.ts new file mode 100644 index 0000000000000..a9f2a3049ed7a --- /dev/null +++ b/tests/cases/conformance/classes/classDeclarations/classExtendingClassLikeType.ts @@ -0,0 +1,57 @@ +interface Base { + x: T; + y: U; +} + +// Error, no Base constructor function +class D0 extends Base { +} + +interface BaseConstructor { + new (x: string, y: string): Base; + new (x: T): Base; + new (x: T, y: T): Base; + new (x: T, y: U): Base; +} + +declare function getBase(): BaseConstructor; + +class D1 extends getBase() { + constructor() { + super("abc", "def"); + this.x = "x"; + this.y = "y"; + } +} + +class D2 extends getBase() { + constructor() { + super(10); + super(10, 20); + this.x = 1; + this.y = 2; + } +} + +class D3 extends getBase() { + constructor() { + super("abc", 42); + this.x = "x"; + this.y = 2; + } +} + +// Error, no constructors with three type arguments +class D4 extends getBase() { +} + +interface BadBaseConstructor { + new (x: string): Base; + new (x: number): Base; +} + +declare function getBadBase(): BadBaseConstructor; + +// Error, constructor return types differ +class D5 extends getBadBase() { +} diff --git a/tests/cases/conformance/classes/classDeclarations/classExtendingNonConstructor.ts b/tests/cases/conformance/classes/classDeclarations/classExtendingNonConstructor.ts new file mode 100644 index 0000000000000..4b7e5c7a76e6b --- /dev/null +++ b/tests/cases/conformance/classes/classDeclarations/classExtendingNonConstructor.ts @@ -0,0 +1,13 @@ +var x: {}; + +function foo() { + this.x = 1; +} + +class C1 extends undefined { } +class C2 extends true { } +class C3 extends false { } +class C4 extends 42 { } +class C5 extends "hello" { } +class C6 extends x { } +class C7 extends foo { } diff --git a/tests/cases/conformance/classes/classDeclarations/classExtendingNull.ts b/tests/cases/conformance/classes/classDeclarations/classExtendingNull.ts new file mode 100644 index 0000000000000..655cf44ed5779 --- /dev/null +++ b/tests/cases/conformance/classes/classDeclarations/classExtendingNull.ts @@ -0,0 +1,2 @@ +class C1 extends null { } +class C2 extends (null) { } From 186f52572b08ed2ec98945bc16b06ef5a6158a53 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Mon, 15 Jun 2015 16:14:28 -0700 Subject: [PATCH 07/16] Accepting new baselines --- .../reference/classExtendingBuiltinType.js | 90 +++++++++++++ .../classExtendingBuiltinType.symbols | 41 ++++++ .../reference/classExtendingBuiltinType.types | 41 ++++++ .../classExtendingClassLikeType.errors.txt | 70 +++++++++++ .../reference/classExtendingClassLikeType.js | 119 ++++++++++++++++++ .../classExtendingNonConstructor.errors.txt | 38 ++++++ .../reference/classExtendingNonConstructor.js | 76 +++++++++++ .../baselines/reference/classExtendingNull.js | 26 ++++ .../reference/classExtendingNull.symbols | 7 ++ .../reference/classExtendingNull.types | 10 ++ 10 files changed, 518 insertions(+) create mode 100644 tests/baselines/reference/classExtendingBuiltinType.js create mode 100644 tests/baselines/reference/classExtendingBuiltinType.symbols create mode 100644 tests/baselines/reference/classExtendingBuiltinType.types create mode 100644 tests/baselines/reference/classExtendingClassLikeType.errors.txt create mode 100644 tests/baselines/reference/classExtendingClassLikeType.js create mode 100644 tests/baselines/reference/classExtendingNonConstructor.errors.txt create mode 100644 tests/baselines/reference/classExtendingNonConstructor.js create mode 100644 tests/baselines/reference/classExtendingNull.js create mode 100644 tests/baselines/reference/classExtendingNull.symbols create mode 100644 tests/baselines/reference/classExtendingNull.types diff --git a/tests/baselines/reference/classExtendingBuiltinType.js b/tests/baselines/reference/classExtendingBuiltinType.js new file mode 100644 index 0000000000000..666ada395054b --- /dev/null +++ b/tests/baselines/reference/classExtendingBuiltinType.js @@ -0,0 +1,90 @@ +//// [classExtendingBuiltinType.ts] +class C1 extends Object { } +class C2 extends Function { } +class C3 extends String { } +class C4 extends Boolean { } +class C5 extends Number { } +class C6 extends Date { } +class C7 extends RegExp { } +class C8 extends Error { } +class C9 extends Array { } +class C10 extends Array { } + + +//// [classExtendingBuiltinType.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; } + __.prototype = b.prototype; + d.prototype = new __(); +}; +var C1 = (function (_super) { + __extends(C1, _super); + function C1() { + _super.apply(this, arguments); + } + return C1; +})(Object); +var C2 = (function (_super) { + __extends(C2, _super); + function C2() { + _super.apply(this, arguments); + } + return C2; +})(Function); +var C3 = (function (_super) { + __extends(C3, _super); + function C3() { + _super.apply(this, arguments); + } + return C3; +})(String); +var C4 = (function (_super) { + __extends(C4, _super); + function C4() { + _super.apply(this, arguments); + } + return C4; +})(Boolean); +var C5 = (function (_super) { + __extends(C5, _super); + function C5() { + _super.apply(this, arguments); + } + return C5; +})(Number); +var C6 = (function (_super) { + __extends(C6, _super); + function C6() { + _super.apply(this, arguments); + } + return C6; +})(Date); +var C7 = (function (_super) { + __extends(C7, _super); + function C7() { + _super.apply(this, arguments); + } + return C7; +})(RegExp); +var C8 = (function (_super) { + __extends(C8, _super); + function C8() { + _super.apply(this, arguments); + } + return C8; +})(Error); +var C9 = (function (_super) { + __extends(C9, _super); + function C9() { + _super.apply(this, arguments); + } + return C9; +})(Array); +var C10 = (function (_super) { + __extends(C10, _super); + function C10() { + _super.apply(this, arguments); + } + return C10; +})(Array); diff --git a/tests/baselines/reference/classExtendingBuiltinType.symbols b/tests/baselines/reference/classExtendingBuiltinType.symbols new file mode 100644 index 0000000000000..08e85be570e98 --- /dev/null +++ b/tests/baselines/reference/classExtendingBuiltinType.symbols @@ -0,0 +1,41 @@ +=== tests/cases/conformance/classes/classDeclarations/classExtendingBuiltinType.ts === +class C1 extends Object { } +>C1 : Symbol(C1, Decl(classExtendingBuiltinType.ts, 0, 0)) +>Object : Symbol(Object, Decl(lib.d.ts, 92, 1), Decl(lib.d.ts, 223, 11)) + +class C2 extends Function { } +>C2 : Symbol(C2, Decl(classExtendingBuiltinType.ts, 0, 27)) +>Function : Symbol(Function, Decl(lib.d.ts, 223, 38), Decl(lib.d.ts, 269, 11)) + +class C3 extends String { } +>C3 : Symbol(C3, Decl(classExtendingBuiltinType.ts, 1, 29)) +>String : Symbol(String, Decl(lib.d.ts, 275, 1), Decl(lib.d.ts, 443, 11)) + +class C4 extends Boolean { } +>C4 : Symbol(C4, Decl(classExtendingBuiltinType.ts, 2, 27)) +>Boolean : Symbol(Boolean, Decl(lib.d.ts, 443, 38), Decl(lib.d.ts, 456, 11)) + +class C5 extends Number { } +>C5 : Symbol(C5, Decl(classExtendingBuiltinType.ts, 3, 28)) +>Number : Symbol(Number, Decl(lib.d.ts, 456, 40), Decl(lib.d.ts, 518, 11)) + +class C6 extends Date { } +>C6 : Symbol(C6, Decl(classExtendingBuiltinType.ts, 4, 27)) +>Date : Symbol(Date, Decl(lib.d.ts, 633, 23), Decl(lib.d.ts, 815, 11)) + +class C7 extends RegExp { } +>C7 : Symbol(C7, Decl(classExtendingBuiltinType.ts, 5, 25)) +>RegExp : Symbol(RegExp, Decl(lib.d.ts, 825, 1), Decl(lib.d.ts, 876, 11)) + +class C8 extends Error { } +>C8 : Symbol(C8, Decl(classExtendingBuiltinType.ts, 6, 27)) +>Error : Symbol(Error, Decl(lib.d.ts, 876, 38), Decl(lib.d.ts, 889, 11)) + +class C9 extends Array { } +>C9 : Symbol(C9, Decl(classExtendingBuiltinType.ts, 7, 26)) +>Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11)) + +class C10 extends Array { } +>C10 : Symbol(C10, Decl(classExtendingBuiltinType.ts, 8, 26)) +>Array : Symbol(Array, Decl(lib.d.ts, 1000, 23), Decl(lib.d.ts, 1171, 11)) + diff --git a/tests/baselines/reference/classExtendingBuiltinType.types b/tests/baselines/reference/classExtendingBuiltinType.types new file mode 100644 index 0000000000000..ce774c0bff0e9 --- /dev/null +++ b/tests/baselines/reference/classExtendingBuiltinType.types @@ -0,0 +1,41 @@ +=== tests/cases/conformance/classes/classDeclarations/classExtendingBuiltinType.ts === +class C1 extends Object { } +>C1 : C1 +>Object : ObjectConstructor + +class C2 extends Function { } +>C2 : C2 +>Function : FunctionConstructor + +class C3 extends String { } +>C3 : C3 +>String : StringConstructor + +class C4 extends Boolean { } +>C4 : C4 +>Boolean : BooleanConstructor + +class C5 extends Number { } +>C5 : C5 +>Number : NumberConstructor + +class C6 extends Date { } +>C6 : C6 +>Date : DateConstructor + +class C7 extends RegExp { } +>C7 : C7 +>RegExp : RegExpConstructor + +class C8 extends Error { } +>C8 : C8 +>Error : ErrorConstructor + +class C9 extends Array { } +>C9 : C9 +>Array : ArrayConstructor + +class C10 extends Array { } +>C10 : C10 +>Array : ArrayConstructor + diff --git a/tests/baselines/reference/classExtendingClassLikeType.errors.txt b/tests/baselines/reference/classExtendingClassLikeType.errors.txt new file mode 100644 index 0000000000000..6f9aef927ead8 --- /dev/null +++ b/tests/baselines/reference/classExtendingClassLikeType.errors.txt @@ -0,0 +1,70 @@ +tests/cases/conformance/classes/classDeclarations/classExtendingClassLikeType.ts(7,18): error TS2304: Cannot find name 'Base'. +tests/cases/conformance/classes/classDeclarations/classExtendingClassLikeType.ts(45,18): error TS2508: No base constructor has the specified number of type arguments. +tests/cases/conformance/classes/classDeclarations/classExtendingClassLikeType.ts(56,18): error TS2510: Base constructors must all have the same return type. + + +==== tests/cases/conformance/classes/classDeclarations/classExtendingClassLikeType.ts (3 errors) ==== + interface Base { + x: T; + y: U; + } + + // Error, no Base constructor function + class D0 extends Base { + ~~~~ +!!! error TS2304: Cannot find name 'Base'. + } + + interface BaseConstructor { + new (x: string, y: string): Base; + new (x: T): Base; + new (x: T, y: T): Base; + new (x: T, y: U): Base; + } + + declare function getBase(): BaseConstructor; + + class D1 extends getBase() { + constructor() { + super("abc", "def"); + this.x = "x"; + this.y = "y"; + } + } + + class D2 extends getBase() { + constructor() { + super(10); + super(10, 20); + this.x = 1; + this.y = 2; + } + } + + class D3 extends getBase() { + constructor() { + super("abc", 42); + this.x = "x"; + this.y = 2; + } + } + + // Error, no constructors with three type arguments + class D4 extends getBase() { + ~~~~~~~~~ +!!! error TS2508: No base constructor has the specified number of type arguments. + } + + interface BadBaseConstructor { + new (x: string): Base; + new (x: number): Base; + } + + declare function getBadBase(): BadBaseConstructor; + + // Error, constructor return types differ + class D5 extends getBadBase() { + ~~~~~~~~~~~~ +!!! error TS2510: Base constructors must all have the same return type. + } + \ No newline at end of file diff --git a/tests/baselines/reference/classExtendingClassLikeType.js b/tests/baselines/reference/classExtendingClassLikeType.js new file mode 100644 index 0000000000000..88a5dc8dcd36a --- /dev/null +++ b/tests/baselines/reference/classExtendingClassLikeType.js @@ -0,0 +1,119 @@ +//// [classExtendingClassLikeType.ts] +interface Base { + x: T; + y: U; +} + +// Error, no Base constructor function +class D0 extends Base { +} + +interface BaseConstructor { + new (x: string, y: string): Base; + new (x: T): Base; + new (x: T, y: T): Base; + new (x: T, y: U): Base; +} + +declare function getBase(): BaseConstructor; + +class D1 extends getBase() { + constructor() { + super("abc", "def"); + this.x = "x"; + this.y = "y"; + } +} + +class D2 extends getBase() { + constructor() { + super(10); + super(10, 20); + this.x = 1; + this.y = 2; + } +} + +class D3 extends getBase() { + constructor() { + super("abc", 42); + this.x = "x"; + this.y = 2; + } +} + +// Error, no constructors with three type arguments +class D4 extends getBase() { +} + +interface BadBaseConstructor { + new (x: string): Base; + new (x: number): Base; +} + +declare function getBadBase(): BadBaseConstructor; + +// Error, constructor return types differ +class D5 extends getBadBase() { +} + + +//// [classExtendingClassLikeType.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; } + __.prototype = b.prototype; + d.prototype = new __(); +}; +// Error, no Base constructor function +var D0 = (function (_super) { + __extends(D0, _super); + function D0() { + _super.apply(this, arguments); + } + return D0; +})(Base); +var D1 = (function (_super) { + __extends(D1, _super); + function D1() { + _super.call(this, "abc", "def"); + this.x = "x"; + this.y = "y"; + } + return D1; +})(getBase()); +var D2 = (function (_super) { + __extends(D2, _super); + function D2() { + _super.call(this, 10); + _super.call(this, 10, 20); + this.x = 1; + this.y = 2; + } + return D2; +})(getBase()); +var D3 = (function (_super) { + __extends(D3, _super); + function D3() { + _super.call(this, "abc", 42); + this.x = "x"; + this.y = 2; + } + return D3; +})(getBase()); +// Error, no constructors with three type arguments +var D4 = (function (_super) { + __extends(D4, _super); + function D4() { + _super.apply(this, arguments); + } + return D4; +})(getBase()); +// Error, constructor return types differ +var D5 = (function (_super) { + __extends(D5, _super); + function D5() { + _super.apply(this, arguments); + } + return D5; +})(getBadBase()); diff --git a/tests/baselines/reference/classExtendingNonConstructor.errors.txt b/tests/baselines/reference/classExtendingNonConstructor.errors.txt new file mode 100644 index 0000000000000..b1e3994cf1ccc --- /dev/null +++ b/tests/baselines/reference/classExtendingNonConstructor.errors.txt @@ -0,0 +1,38 @@ +tests/cases/conformance/classes/classDeclarations/classExtendingNonConstructor.ts(7,18): error TS2507: Base expression is not of a constructor function type. +tests/cases/conformance/classes/classDeclarations/classExtendingNonConstructor.ts(8,18): error TS2507: Base expression is not of a constructor function type. +tests/cases/conformance/classes/classDeclarations/classExtendingNonConstructor.ts(9,18): error TS2507: Base expression is not of a constructor function type. +tests/cases/conformance/classes/classDeclarations/classExtendingNonConstructor.ts(10,18): error TS2507: Base expression is not of a constructor function type. +tests/cases/conformance/classes/classDeclarations/classExtendingNonConstructor.ts(11,18): error TS2507: Base expression is not of a constructor function type. +tests/cases/conformance/classes/classDeclarations/classExtendingNonConstructor.ts(12,18): error TS2507: Base expression is not of a constructor function type. +tests/cases/conformance/classes/classDeclarations/classExtendingNonConstructor.ts(13,18): error TS2507: Base expression is not of a constructor function type. + + +==== tests/cases/conformance/classes/classDeclarations/classExtendingNonConstructor.ts (7 errors) ==== + var x: {}; + + function foo() { + this.x = 1; + } + + class C1 extends undefined { } + ~~~~~~~~~ +!!! error TS2507: Base expression is not of a constructor function type. + class C2 extends true { } + ~~~~ +!!! error TS2507: Base expression is not of a constructor function type. + class C3 extends false { } + ~~~~~ +!!! error TS2507: Base expression is not of a constructor function type. + class C4 extends 42 { } + ~~ +!!! error TS2507: Base expression is not of a constructor function type. + class C5 extends "hello" { } + ~~~~~~~ +!!! error TS2507: Base expression is not of a constructor function type. + class C6 extends x { } + ~ +!!! error TS2507: Base expression is not of a constructor function type. + class C7 extends foo { } + ~~~ +!!! error TS2507: Base expression is not of a constructor function type. + \ No newline at end of file diff --git a/tests/baselines/reference/classExtendingNonConstructor.js b/tests/baselines/reference/classExtendingNonConstructor.js new file mode 100644 index 0000000000000..f796b30ddd690 --- /dev/null +++ b/tests/baselines/reference/classExtendingNonConstructor.js @@ -0,0 +1,76 @@ +//// [classExtendingNonConstructor.ts] +var x: {}; + +function foo() { + this.x = 1; +} + +class C1 extends undefined { } +class C2 extends true { } +class C3 extends false { } +class C4 extends 42 { } +class C5 extends "hello" { } +class C6 extends x { } +class C7 extends foo { } + + +//// [classExtendingNonConstructor.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; } + __.prototype = b.prototype; + d.prototype = new __(); +}; +var x; +function foo() { + this.x = 1; +} +var C1 = (function (_super) { + __extends(C1, _super); + function C1() { + _super.apply(this, arguments); + } + return C1; +})(undefined); +var C2 = (function (_super) { + __extends(C2, _super); + function C2() { + _super.apply(this, arguments); + } + return C2; +})(true); +var C3 = (function (_super) { + __extends(C3, _super); + function C3() { + _super.apply(this, arguments); + } + return C3; +})(false); +var C4 = (function (_super) { + __extends(C4, _super); + function C4() { + _super.apply(this, arguments); + } + return C4; +})(42); +var C5 = (function (_super) { + __extends(C5, _super); + function C5() { + _super.apply(this, arguments); + } + return C5; +})("hello"); +var C6 = (function (_super) { + __extends(C6, _super); + function C6() { + _super.apply(this, arguments); + } + return C6; +})(x); +var C7 = (function (_super) { + __extends(C7, _super); + function C7() { + _super.apply(this, arguments); + } + return C7; +})(foo); diff --git a/tests/baselines/reference/classExtendingNull.js b/tests/baselines/reference/classExtendingNull.js new file mode 100644 index 0000000000000..f0c3ea69626cb --- /dev/null +++ b/tests/baselines/reference/classExtendingNull.js @@ -0,0 +1,26 @@ +//// [classExtendingNull.ts] +class C1 extends null { } +class C2 extends (null) { } + + +//// [classExtendingNull.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; } + __.prototype = b.prototype; + d.prototype = new __(); +}; +var C1 = (function (_super) { + __extends(C1, _super); + function C1() { + _super.apply(this, arguments); + } + return C1; +})(null); +var C2 = (function (_super) { + __extends(C2, _super); + function C2() { + _super.apply(this, arguments); + } + return C2; +})((null)); diff --git a/tests/baselines/reference/classExtendingNull.symbols b/tests/baselines/reference/classExtendingNull.symbols new file mode 100644 index 0000000000000..37a6162f41478 --- /dev/null +++ b/tests/baselines/reference/classExtendingNull.symbols @@ -0,0 +1,7 @@ +=== tests/cases/conformance/classes/classDeclarations/classExtendingNull.ts === +class C1 extends null { } +>C1 : Symbol(C1, Decl(classExtendingNull.ts, 0, 0)) + +class C2 extends (null) { } +>C2 : Symbol(C2, Decl(classExtendingNull.ts, 0, 25)) + diff --git a/tests/baselines/reference/classExtendingNull.types b/tests/baselines/reference/classExtendingNull.types new file mode 100644 index 0000000000000..3c572a3406ced --- /dev/null +++ b/tests/baselines/reference/classExtendingNull.types @@ -0,0 +1,10 @@ +=== tests/cases/conformance/classes/classDeclarations/classExtendingNull.ts === +class C1 extends null { } +>C1 : C1 +>null : null + +class C2 extends (null) { } +>C2 : C2 +>(null) : null +>null : null + From e305de140318f245d91edc1d31bb5587afa1ed35 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Tue, 16 Jun 2015 06:54:10 -0700 Subject: [PATCH 08/16] Workaround to match previous type writer output --- src/compiler/checker.ts | 10 ++++++---- src/harness/typeWriter.ts | 5 ++++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 8395fc04626b5..8ad4061ddf748 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -12002,10 +12002,6 @@ module ts { return unknownType; } - if (isClassExtendsExpressionWithTypeArguments(node)) { - return getBaseTypes(getDeclaredTypeOfSymbol(getSymbolOfNode(node.parent.parent)))[0]; - } - if (isTypeNode(node)) { return getTypeFromTypeNode(node); } @@ -12014,6 +12010,12 @@ module ts { return getTypeOfExpression(node); } + if (isClassExtendsExpressionWithTypeArguments(node)) { + // A SyntaxKind.ExpressionWithTypeArguments is considered a type node, except when it occurs in the + // extends clause of a class. We handle that case here. + return getBaseTypes(getDeclaredTypeOfSymbol(getSymbolOfNode(node.parent.parent)))[0]; + } + if (isTypeDeclaration(node)) { // In this case, we call getSymbolOfNode instead of getSymbolInfo because it is a declaration let symbol = getSymbolOfNode(node); diff --git a/src/harness/typeWriter.ts b/src/harness/typeWriter.ts index 533f90a2d8393..ac695fc23a480 100644 --- a/src/harness/typeWriter.ts +++ b/src/harness/typeWriter.ts @@ -41,7 +41,10 @@ class TypeWriterWalker { var lineAndCharacter = this.currentSourceFile.getLineAndCharacterOfPosition(actualPos); var sourceText = ts.getTextOfNodeFromSourceText(this.currentSourceFile.text, node); - var type = this.checker.getTypeAtLocation(node); + // Workaround to ensure we output 'C' instead of 'typeof C' for base class expressions + // var type = this.checker.getTypeAtLocation(node); + var type = node.parent && ts.isClassExtendsExpressionWithTypeArguments(node.parent) && this.checker.getTypeAtLocation(node.parent) || this.checker.getTypeAtLocation(node); + ts.Debug.assert(type !== undefined, "type doesn't exist"); var symbol = this.checker.getSymbolAtLocation(node); From d09d61f75763ec89b6a36b398850200482fd9523 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Tue, 16 Jun 2015 06:55:52 -0700 Subject: [PATCH 09/16] Accepting new baselines --- ...assHeritageListMemberTypeAnnotations.types | 2 +- ...essibleTypeInTypeParameterConstraint.types | 2 +- .../accessOverriddenBaseClassMember1.types | 2 +- .../aliasUsageInAccessorsOfClass.types | 2 +- .../reference/aliasUsageInArray.types | 2 +- .../aliasUsageInFunctionExpression.types | 2 +- .../aliasUsageInGenericFunction.types | 2 +- .../aliasUsageInIndexerOfClass.types | 2 +- .../reference/aliasUsageInObjectLiteral.types | 2 +- .../reference/aliasUsageInOrExpression.types | 2 +- ...asUsageInTypeArgumentOfExtendsClause.types | 4 +- .../reference/aliasUsageInVarAssignment.types | 2 +- .../ambientClassDeclarationWithExtends.types | 2 +- ...oduleWithClassDeclarationWithExtends.types | 2 +- .../ambiguousOverloadResolution.types | 2 +- .../reference/arrayBestCommonTypes.types | 4 +- .../reference/arrayLiteralTypeInference.types | 4 +- tests/baselines/reference/arrayLiterals.types | 4 +- .../arrayLiteralsWithRecursiveGenerics.types | 2 +- .../assignmentCompatWithCallSignatures3.types | 6 +- .../assignmentCompatWithCallSignatures5.types | 6 +- .../assignmentCompatWithCallSignatures6.types | 6 +- ...gnmentCompatWithConstructSignatures3.types | 6 +- ...gnmentCompatWithConstructSignatures5.types | 6 +- ...gnmentCompatWithConstructSignatures6.types | 6 +- .../baseIndexSignatureResolution.types | 2 +- .../reference/baseTypeOrderChecking.types | 4 +- .../baseTypeWrappingInstantiationChain.types | 4 +- ...stCommonTypeOfConditionalExpressions.types | 4 +- .../reference/bestCommonTypeOfTuple2.types | 4 +- ...SignatureAssignabilityInInheritance2.types | 6 +- ...SignatureAssignabilityInInheritance4.types | 6 +- ...SignatureAssignabilityInInheritance5.types | 6 +- ...SignatureAssignabilityInInheritance6.types | 6 +- .../baselines/reference/callWithSpread.types | 2 +- .../reference/callWithSpreadES6.types | 2 +- .../reference/captureThisInSuperCall.types | 2 +- .../reference/checkForObjectTooStrict.types | 4 +- .../reference/circularImportAlias.types | 2 +- ...sConstructorParametersAccessibility3.types | 2 +- ...rationMergedInModuleWithContinuation.types | 2 +- .../classDoesNotDependOnBaseTypes.types | 2 +- .../reference/classExtendingBuiltinType.types | 20 ++-- .../reference/classExtendingClass.types | 4 +- .../classExtendingQualifiedName2.types | 2 +- .../reference/classImplementsClass3.types | 2 +- tests/baselines/reference/classOrder2.types | 2 +- tests/baselines/reference/classOrderBug.types | 2 +- .../reference/classSideInheritance2.types | 2 +- .../classWithProtectedProperty.types | 2 +- .../reference/commentOnAmbientClass1.types | 2 +- .../reference/commentOnAmbientModule.types | 2 +- .../reference/commentsInheritance.types | 4 +- ...mparisonOperatorWithIdenticalObjects.types | 4 +- ...atorWithSubtypeObjectOnCallSignature.types | 2 +- ...hSubtypeObjectOnConstructorSignature.types | 2 +- ...torWithSubtypeObjectOnIndexSignature.types | 2 +- ...ypeObjectOnInstantiatedCallSignature.types | 2 +- ...ctOnInstantiatedConstructorSignature.types | 2 +- ...nOperatorWithSubtypeObjectOnProperty.types | 4 +- .../reference/complexClassRelationships.types | 2 +- .../computedPropertyNames25_ES5.types | 2 +- .../computedPropertyNames25_ES6.types | 2 +- .../computedPropertyNames28_ES5.types | 2 +- .../computedPropertyNames28_ES6.types | 2 +- .../computedPropertyNames31_ES5.types | 2 +- .../computedPropertyNames31_ES6.types | 2 +- .../conditionalOperatorWithIdenticalBCT.types | 4 +- .../reference/constantOverloadFunction.types | 6 +- ...raintCheckInGenericBaseTypeReference.types | 2 +- ...SignatureAssignabilityInInheritance2.types | 6 +- ...SignatureAssignabilityInInheritance4.types | 6 +- ...SignatureAssignabilityInInheritance5.types | 6 +- ...SignatureAssignabilityInInheritance6.types | 6 +- .../baselines/reference/constructorArgs.types | 2 +- ...orFunctionTypeIsAssignableToBaseType.types | 4 +- ...rFunctionTypeIsAssignableToBaseType2.types | 4 +- .../constructorHasPrototypeProperty.types | 4 +- .../reference/constructorOverloads2.types | 2 +- .../contextualTypingArrayOfLambdas.types | 4 +- ...textualTypingOfConditionalExpression.types | 4 +- .../declFileAliasUseBeforeDeclaration2.types | 2 +- ...clFileForFunctionTypeAsTypeParameter.types | 2 +- ...GenericClassWithGenericExtendedClass.types | 2 +- .../reference/declFileGenericType.types | 2 +- .../reference/declFileGenericType2.types | 4 +- ...tingWithClassReferredByExtendsClause.types | 4 +- ...lauseThatHasItsContainerNameConflict.types | 2 +- .../declarationEmit_nameConflicts3.types | 2 +- .../declarationEmit_protectedMembers.types | 4 +- .../reference/declareDottedExtend.types | 4 +- ...sIndexersWithAssignmentCompatibility.types | 4 +- ...erivedClassOverridesProtectedMembers.types | 2 +- ...rivedClassOverridesProtectedMembers2.types | 4 +- .../derivedClassOverridesWithoutSubtype.types | 4 +- .../baselines/reference/derivedClasses.types | 4 +- ...HiddenBaseCallViaSuperPropertyAccess.types | 2 +- ...rivedTypeDoesNotRequireExtendsClause.types | 2 +- ...ionWithExtensionAndTypeArgumentInES6.types | 4 +- ...itClassDeclarationWithExtensionInES6.types | 4 +- ...clarationWithPropertyAssignmentInES6.types | 4 +- ...lassDeclarationWithSuperMethodCall01.types | 2 +- .../reference/es6ClassSuperCodegenBug.types | 2 +- tests/baselines/reference/es6ClassTest7.types | 2 +- .../exportAssignmentOfGenericType1.types | 2 +- tests/baselines/reference/extBaseClass1.types | 6 +- .../extendAndImplementTheSameBaseType.types | 2 +- .../extendBaseClassBeforeItsDeclared.types | 2 +- .../reference/extendNonClassSymbol1.types | 2 +- ...ndingClassFromAliasAndUsageInIndexer.types | 4 +- .../reference/functionImplementations.types | 4 +- .../functionSubtypingOfVarArgs.types | 2 +- .../functionSubtypingOfVarArgs2.types | 2 +- .../reference/generatedContextualTyping.types | 4 +- .../reference/generatorTypeCheck17.types | 2 +- .../reference/generatorTypeCheck19.types | 2 +- .../genericBaseClassLiteralProperty.types | 2 +- .../genericBaseClassLiteralProperty2.types | 2 +- ...WithConstraintsTypeArgumentInference.types | 4 +- .../genericCallWithObjectTypeArgs2.types | 4 +- ...allWithObjectTypeArgsAndConstraints2.types | 2 +- .../genericCallbacksAndClassHierarchy.types | 2 +- ...heritsConstructorFromNonGenericClass.types | 4 +- ...assPropertyInheritanceSpecialization.types | 2 +- .../reference/genericClassStaticMethod.types | 2 +- .../baselines/reference/genericClasses3.types | 2 +- ...ericConstraintOnExtendedBuiltinTypes.types | 2 +- ...ricConstraintOnExtendedBuiltinTypes2.types | 2 +- .../reference/genericPrototypeProperty2.types | 4 +- .../reference/genericPrototypeProperty3.types | 4 +- ...cRecursiveImplicitConstructorErrors2.types | 2 +- ...nericWithIndexerOfTypeParameterType2.types | 4 +- .../heterogeneousArrayLiterals.types | 4 +- .../reference/ifDoWhileStatements.types | 2 +- .../reference/importShadowsGlobalName.types | 2 +- .../reference/importUsedInExtendsList1.types | 2 +- ...finitelyExpandingTypesNonGenericBase.types | 2 +- ...eNamePrivatePropertiesFromSameOrigin.types | 4 +- ...nheritanceMemberFuncOverridingMethod.types | 2 +- ...anceMemberPropertyOverridingProperty.types | 2 +- ...heritanceOfGenericConstructorMethod1.types | 2 +- ...heritanceOfGenericConstructorMethod2.types | 4 +- ...nheritanceStaticFuncOverridingMethod.types | 2 +- ...aticFuncOverridingPropertyOfFuncType.types | 2 +- ...icFunctionOverridingInstanceProperty.types | 2 +- .../inheritanceStaticMembersCompatible.types | 2 +- ...anceStaticPropertyOverridingProperty.types | 2 +- ...instantiatedReturnTypeContravariance.types | 2 +- .../reference/interfaceExtendsClass1.types | 6 +- .../reference/iterableArrayPattern11.types | 2 +- .../reference/iterableArrayPattern12.types | 2 +- .../reference/iterableArrayPattern13.types | 2 +- .../reference/iterableArrayPattern3.types | 2 +- .../reference/iterableArrayPattern4.types | 2 +- .../reference/iterableArrayPattern9.types | 2 +- tests/baselines/reference/localTypes1.types | 4 +- tests/baselines/reference/m7Bugs.types | 2 +- ...oduleImportedForTypeArgumentPosition.types | 2 +- .../moduleWithStatementsOfEveryKind.types | 8 +- .../mutuallyRecursiveGenericBaseTypes2.types | 2 +- tests/baselines/reference/noEmitHelpers.types | 2 +- ...ricClassExtendingGenericClassWithAny.types | 2 +- .../reference/numericIndexerConstraint3.types | 2 +- .../reference/numericIndexerConstraint4.types | 2 +- ...ectTypesIdentityWithNumericIndexers1.types | 4 +- ...ectTypesIdentityWithNumericIndexers2.types | 6 +- ...ectTypesIdentityWithNumericIndexers3.types | 4 +- .../objectTypesIdentityWithPrivates.types | 4 +- .../objectTypesIdentityWithPrivates2.types | 2 +- ...bjectTypesIdentityWithStringIndexers.types | 4 +- ...jectTypesIdentityWithStringIndexers2.types | 6 +- .../optionalConstructorArgInSuper.types | 2 +- .../reference/optionalParamInOverride.types | 2 +- .../overloadOnConstConstraintChecks1.types | 6 +- .../overloadOnConstConstraintChecks2.types | 4 +- .../overloadOnConstConstraintChecks3.types | 4 +- tests/baselines/reference/privacyClass.types | 48 +++++----- .../baselines/reference/privacyGloClass.types | 20 ++-- ...ccessOnTypeParameterWithConstraints2.types | 2 +- ...lassPropertyAccessibleWithinSubclass.types | 2 +- .../recursiveBaseConstructorCreation1.types | 2 +- .../recursiveBaseConstructorCreation2.types | 4 +- ...nstantiationsWithDefaultConstructors.types | 2 +- .../recursiveComplicatedClasses.types | 6 +- ...elySpecializedConstructorDeclaration.types | 2 +- ...sDeclarationWhenInBaseTypeResolution.types | 94 +++++++++---------- .../reference/returnStatements.types | 2 +- ...thDefaultConstructorAndExtendsClause.types | 2 +- .../specializedInheritedConstructors1.types | 2 +- .../baselines/reference/staticFactory1.types | 2 +- .../reference/staticInheritance.types | 2 +- .../staticMemberAccessOffDerivedType1.types | 2 +- .../reference/subtypingTransitivity.types | 4 +- .../subtypingWithCallSignatures2.types | 6 +- .../subtypingWithCallSignatures3.types | 6 +- .../subtypingWithCallSignatures4.types | 6 +- .../subtypingWithConstructSignatures2.types | 6 +- .../subtypingWithConstructSignatures3.types | 6 +- .../subtypingWithConstructSignatures4.types | 6 +- .../subtypingWithConstructSignatures5.types | 6 +- .../subtypingWithConstructSignatures6.types | 6 +- .../subtypingWithObjectMembers4.types | 8 +- tests/baselines/reference/super2.types | 8 +- .../reference/superAccessInFatArrow1.types | 2 +- ...FromClassThatDerivesFromGenericType1.types | 2 +- ...FromClassThatDerivesFromGenericType2.types | 2 +- .../superCallParameterContextualTyping1.types | 2 +- .../superCallParameterContextualTyping3.types | 2 +- tests/baselines/reference/superCalls.types | 4 +- .../reference/superInCatchBlock1.types | 2 +- .../superWithGenericSpecialization.types | 2 +- .../reference/superWithGenerics.types | 2 +- .../reference/switchStatements.types | 2 +- .../reference/symbolProperty26.types | 2 +- .../reference/symbolProperty27.types | 2 +- .../reference/symbolProperty28.types | 2 +- .../reference/typeGuardFunction.types | 2 +- .../reference/typeGuardFunctionGenerics.types | 2 +- .../reference/typeGuardOfFormInstanceOf.types | 2 +- .../reference/typeGuardOfFormIsType.types | 2 +- .../baselines/reference/typeOfSuperCall.types | 2 +- .../typeParameterExtendingUnion1.types | 4 +- .../typeParameterExtendingUnion2.types | 4 +- tests/baselines/reference/typeofClass2.types | 2 +- .../typesWithSpecializedCallSignatures.types | 4 +- ...esWithSpecializedConstructSignatures.types | 4 +- .../undefinedIsSubtypeOfEverything.types | 44 ++++----- .../reference/underscoreMapFirst.types | 2 +- .../reference/unionTypeFromArrayLiteral.types | 4 +- .../reference/validUseOfThisInSuper.types | 2 +- .../reference/varArgsOnConstructorTypes.types | 2 +- 231 files changed, 463 insertions(+), 463 deletions(-) diff --git a/tests/baselines/reference/ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.types b/tests/baselines/reference/ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.types index 91c1ea573ec3f..a5cefcc521ebf 100644 --- a/tests/baselines/reference/ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.types +++ b/tests/baselines/reference/ExportClassWithAccessibleTypesInTypeParameterConstraintsClassHeritageListMemberTypeAnnotations.types @@ -23,7 +23,7 @@ module A { export class Point3d extends Point { >Point3d : Point3d ->Point : typeof Point +>Point : Point z: number; >z : number diff --git a/tests/baselines/reference/ExportClassWithInaccessibleTypeInTypeParameterConstraint.types b/tests/baselines/reference/ExportClassWithInaccessibleTypeInTypeParameterConstraint.types index e1764ef1c2055..ba174d9bbba55 100644 --- a/tests/baselines/reference/ExportClassWithInaccessibleTypeInTypeParameterConstraint.types +++ b/tests/baselines/reference/ExportClassWithInaccessibleTypeInTypeParameterConstraint.types @@ -23,7 +23,7 @@ module A { export class Point3d extends Point { >Point3d : Point3d ->Point : typeof Point +>Point : Point z: number; >z : number diff --git a/tests/baselines/reference/accessOverriddenBaseClassMember1.types b/tests/baselines/reference/accessOverriddenBaseClassMember1.types index 91b84981fc1d8..2aeb541d7239d 100644 --- a/tests/baselines/reference/accessOverriddenBaseClassMember1.types +++ b/tests/baselines/reference/accessOverriddenBaseClassMember1.types @@ -25,7 +25,7 @@ class Point { } class ColoredPoint extends Point { >ColoredPoint : ColoredPoint ->Point : typeof Point +>Point : Point constructor(x: number, y: number, public color: string) { >x : number diff --git a/tests/baselines/reference/aliasUsageInAccessorsOfClass.types b/tests/baselines/reference/aliasUsageInAccessorsOfClass.types index df91e254c65af..092643002e484 100644 --- a/tests/baselines/reference/aliasUsageInAccessorsOfClass.types +++ b/tests/baselines/reference/aliasUsageInAccessorsOfClass.types @@ -53,7 +53,7 @@ import Backbone = require("aliasUsage1_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone.Model : typeof Backbone.Model +>Backbone.Model : Backbone.Model >Backbone : typeof Backbone >Model : typeof Backbone.Model diff --git a/tests/baselines/reference/aliasUsageInArray.types b/tests/baselines/reference/aliasUsageInArray.types index 9410d4362bb4a..488cc97d07f8e 100644 --- a/tests/baselines/reference/aliasUsageInArray.types +++ b/tests/baselines/reference/aliasUsageInArray.types @@ -41,7 +41,7 @@ import Backbone = require("aliasUsageInArray_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone.Model : typeof Backbone.Model +>Backbone.Model : Backbone.Model >Backbone : typeof Backbone >Model : typeof Backbone.Model diff --git a/tests/baselines/reference/aliasUsageInFunctionExpression.types b/tests/baselines/reference/aliasUsageInFunctionExpression.types index 9b2244f9ff877..eec4341fd67aa 100644 --- a/tests/baselines/reference/aliasUsageInFunctionExpression.types +++ b/tests/baselines/reference/aliasUsageInFunctionExpression.types @@ -42,7 +42,7 @@ import Backbone = require("aliasUsageInFunctionExpression_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone.Model : typeof Backbone.Model +>Backbone.Model : Backbone.Model >Backbone : typeof Backbone >Model : typeof Backbone.Model diff --git a/tests/baselines/reference/aliasUsageInGenericFunction.types b/tests/baselines/reference/aliasUsageInGenericFunction.types index 8fdc39d3c6ac7..c21e691d77326 100644 --- a/tests/baselines/reference/aliasUsageInGenericFunction.types +++ b/tests/baselines/reference/aliasUsageInGenericFunction.types @@ -57,7 +57,7 @@ import Backbone = require("aliasUsageInGenericFunction_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone.Model : typeof Backbone.Model +>Backbone.Model : Backbone.Model >Backbone : typeof Backbone >Model : typeof Backbone.Model diff --git a/tests/baselines/reference/aliasUsageInIndexerOfClass.types b/tests/baselines/reference/aliasUsageInIndexerOfClass.types index ce9c598df4d15..b7e4873ba34b2 100644 --- a/tests/baselines/reference/aliasUsageInIndexerOfClass.types +++ b/tests/baselines/reference/aliasUsageInIndexerOfClass.types @@ -50,7 +50,7 @@ import Backbone = require("aliasUsageInIndexerOfClass_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone.Model : typeof Backbone.Model +>Backbone.Model : Backbone.Model >Backbone : typeof Backbone >Model : typeof Backbone.Model diff --git a/tests/baselines/reference/aliasUsageInObjectLiteral.types b/tests/baselines/reference/aliasUsageInObjectLiteral.types index 58db02d1bf017..5ab294b73508f 100644 --- a/tests/baselines/reference/aliasUsageInObjectLiteral.types +++ b/tests/baselines/reference/aliasUsageInObjectLiteral.types @@ -55,7 +55,7 @@ import Backbone = require("aliasUsageInObjectLiteral_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone.Model : typeof Backbone.Model +>Backbone.Model : Backbone.Model >Backbone : typeof Backbone >Model : typeof Backbone.Model diff --git a/tests/baselines/reference/aliasUsageInOrExpression.types b/tests/baselines/reference/aliasUsageInOrExpression.types index 2c86e51841f64..e7ca8639762cf 100644 --- a/tests/baselines/reference/aliasUsageInOrExpression.types +++ b/tests/baselines/reference/aliasUsageInOrExpression.types @@ -79,7 +79,7 @@ import Backbone = require("aliasUsageInOrExpression_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone.Model : typeof Backbone.Model +>Backbone.Model : Backbone.Model >Backbone : typeof Backbone >Model : typeof Backbone.Model diff --git a/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.types b/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.types index 58fac086fd3e0..ae20caa9c3759 100644 --- a/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.types +++ b/tests/baselines/reference/aliasUsageInTypeArgumentOfExtendsClause.types @@ -25,7 +25,7 @@ class C { } class D extends C { >D : D ->C : typeof C +>C : C >IHasVisualizationModel : IHasVisualizationModel x = moduleA; @@ -46,7 +46,7 @@ import Backbone = require("aliasUsageInTypeArgumentOfExtendsClause_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone.Model : typeof Backbone.Model +>Backbone.Model : Backbone.Model >Backbone : typeof Backbone >Model : typeof Backbone.Model diff --git a/tests/baselines/reference/aliasUsageInVarAssignment.types b/tests/baselines/reference/aliasUsageInVarAssignment.types index 945fd16899ffc..6a23293ea7ccc 100644 --- a/tests/baselines/reference/aliasUsageInVarAssignment.types +++ b/tests/baselines/reference/aliasUsageInVarAssignment.types @@ -37,7 +37,7 @@ import Backbone = require("aliasUsageInVarAssignment_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone.Model : typeof Backbone.Model +>Backbone.Model : Backbone.Model >Backbone : typeof Backbone >Model : typeof Backbone.Model diff --git a/tests/baselines/reference/ambientClassDeclarationWithExtends.types b/tests/baselines/reference/ambientClassDeclarationWithExtends.types index fc60ddcea860b..7609856882bed 100644 --- a/tests/baselines/reference/ambientClassDeclarationWithExtends.types +++ b/tests/baselines/reference/ambientClassDeclarationWithExtends.types @@ -4,5 +4,5 @@ declare class A { } declare class B extends A { } >B : B ->A : typeof A +>A : A diff --git a/tests/baselines/reference/ambientModuleWithClassDeclarationWithExtends.types b/tests/baselines/reference/ambientModuleWithClassDeclarationWithExtends.types index 875fd034e03e5..2708946518f58 100644 --- a/tests/baselines/reference/ambientModuleWithClassDeclarationWithExtends.types +++ b/tests/baselines/reference/ambientModuleWithClassDeclarationWithExtends.types @@ -7,5 +7,5 @@ declare module foo { class B extends A { } >B : B ->A : typeof A +>A : A } diff --git a/tests/baselines/reference/ambiguousOverloadResolution.types b/tests/baselines/reference/ambiguousOverloadResolution.types index f01c53c29418d..dd42b44d7c302 100644 --- a/tests/baselines/reference/ambiguousOverloadResolution.types +++ b/tests/baselines/reference/ambiguousOverloadResolution.types @@ -4,7 +4,7 @@ class A { } class B extends A { x: number; } >B : B ->A : typeof A +>A : A >x : number declare function f(p: A, q: B): number; diff --git a/tests/baselines/reference/arrayBestCommonTypes.types b/tests/baselines/reference/arrayBestCommonTypes.types index b240eebd7983d..5650efc9ae77d 100644 --- a/tests/baselines/reference/arrayBestCommonTypes.types +++ b/tests/baselines/reference/arrayBestCommonTypes.types @@ -15,7 +15,7 @@ module EmptyTypes { class derived extends base { } >derived : derived ->base : typeof base +>base : base class f { @@ -417,7 +417,7 @@ module NonEmptyTypes { class derived extends base { a: string; } >derived : derived ->base : typeof base +>base : base >a : string diff --git a/tests/baselines/reference/arrayLiteralTypeInference.types b/tests/baselines/reference/arrayLiteralTypeInference.types index 853db63b5389b..660592fceb896 100644 --- a/tests/baselines/reference/arrayLiteralTypeInference.types +++ b/tests/baselines/reference/arrayLiteralTypeInference.types @@ -8,7 +8,7 @@ class Action { class ActionA extends Action { >ActionA : ActionA ->Action : typeof Action +>Action : Action value: string; >value : string @@ -16,7 +16,7 @@ class ActionA extends Action { class ActionB extends Action { >ActionB : ActionB ->Action : typeof Action +>Action : Action trueNess: boolean; >trueNess : boolean diff --git a/tests/baselines/reference/arrayLiterals.types b/tests/baselines/reference/arrayLiterals.types index 756ed7145e398..e103241dd0b92 100644 --- a/tests/baselines/reference/arrayLiterals.types +++ b/tests/baselines/reference/arrayLiterals.types @@ -123,12 +123,12 @@ class Base { private p; } class Derived1 extends Base { private m }; >Derived1 : Derived1 ->Base : typeof Base +>Base : Base >m : any class Derived2 extends Base { private n }; >Derived2 : Derived2 ->Base : typeof Base +>Base : Base >n : any var context3: Base[] = [new Derived1(), new Derived2()]; diff --git a/tests/baselines/reference/arrayLiteralsWithRecursiveGenerics.types b/tests/baselines/reference/arrayLiteralsWithRecursiveGenerics.types index 598ccfe9ca582..9cdbe0a0a6157 100644 --- a/tests/baselines/reference/arrayLiteralsWithRecursiveGenerics.types +++ b/tests/baselines/reference/arrayLiteralsWithRecursiveGenerics.types @@ -17,7 +17,7 @@ class List { class DerivedList extends List { >DerivedList : DerivedList >U : U ->List : typeof List +>List : List >U : U foo: U; diff --git a/tests/baselines/reference/assignmentCompatWithCallSignatures3.types b/tests/baselines/reference/assignmentCompatWithCallSignatures3.types index 9fa591812ee1d..72cceae84fff7 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignatures3.types +++ b/tests/baselines/reference/assignmentCompatWithCallSignatures3.types @@ -7,17 +7,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : typeof Base +>Base : Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : typeof Derived +>Derived : Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : typeof Base +>Base : Base >bing : string var a: (x: number) => number[]; diff --git a/tests/baselines/reference/assignmentCompatWithCallSignatures5.types b/tests/baselines/reference/assignmentCompatWithCallSignatures5.types index 8ed785b0044bb..2652a2a4e689d 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignatures5.types +++ b/tests/baselines/reference/assignmentCompatWithCallSignatures5.types @@ -7,17 +7,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : typeof Base +>Base : Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : typeof Derived +>Derived : Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : typeof Base +>Base : Base >bing : string var a: (x: T) => T[]; diff --git a/tests/baselines/reference/assignmentCompatWithCallSignatures6.types b/tests/baselines/reference/assignmentCompatWithCallSignatures6.types index 309834e5974ca..b45f335794233 100644 --- a/tests/baselines/reference/assignmentCompatWithCallSignatures6.types +++ b/tests/baselines/reference/assignmentCompatWithCallSignatures6.types @@ -7,17 +7,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : typeof Base +>Base : Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : typeof Derived +>Derived : Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : typeof Base +>Base : Base >bing : string interface A { diff --git a/tests/baselines/reference/assignmentCompatWithConstructSignatures3.types b/tests/baselines/reference/assignmentCompatWithConstructSignatures3.types index 25200f7988f97..807f31b0e6e54 100644 --- a/tests/baselines/reference/assignmentCompatWithConstructSignatures3.types +++ b/tests/baselines/reference/assignmentCompatWithConstructSignatures3.types @@ -7,17 +7,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : typeof Base +>Base : Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : typeof Derived +>Derived : Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : typeof Base +>Base : Base >bing : string var a: new (x: number) => number[]; diff --git a/tests/baselines/reference/assignmentCompatWithConstructSignatures5.types b/tests/baselines/reference/assignmentCompatWithConstructSignatures5.types index 276ba7f694096..6e6a1457a7614 100644 --- a/tests/baselines/reference/assignmentCompatWithConstructSignatures5.types +++ b/tests/baselines/reference/assignmentCompatWithConstructSignatures5.types @@ -7,17 +7,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : typeof Base +>Base : Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : typeof Derived +>Derived : Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : typeof Base +>Base : Base >bing : string var a: new (x: T) => T[]; diff --git a/tests/baselines/reference/assignmentCompatWithConstructSignatures6.types b/tests/baselines/reference/assignmentCompatWithConstructSignatures6.types index 49b26118fa3c2..74a20b9b21e94 100644 --- a/tests/baselines/reference/assignmentCompatWithConstructSignatures6.types +++ b/tests/baselines/reference/assignmentCompatWithConstructSignatures6.types @@ -7,17 +7,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : typeof Base +>Base : Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : typeof Derived +>Derived : Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : typeof Base +>Base : Base >bing : string interface A { diff --git a/tests/baselines/reference/baseIndexSignatureResolution.types b/tests/baselines/reference/baseIndexSignatureResolution.types index 6a57d4b9805b9..90d143155fb28 100644 --- a/tests/baselines/reference/baseIndexSignatureResolution.types +++ b/tests/baselines/reference/baseIndexSignatureResolution.types @@ -5,7 +5,7 @@ class Base { private a: string; } class Derived extends Base { private b: string; } >Derived : Derived ->Base : typeof Base +>Base : Base >b : string // Note - commmenting "extends Foo" prevents the error diff --git a/tests/baselines/reference/baseTypeOrderChecking.types b/tests/baselines/reference/baseTypeOrderChecking.types index 32f3325e85cb3..4193f255f36c0 100644 --- a/tests/baselines/reference/baseTypeOrderChecking.types +++ b/tests/baselines/reference/baseTypeOrderChecking.types @@ -17,7 +17,7 @@ class Class1 class Class2 extends Class1 >Class2 : Class2 ->Class1 : typeof Class1 +>Class1 : Class1 { @@ -42,7 +42,7 @@ class Class3 class Class4 extends Class3 >Class4 : Class4 >T : T ->Class3 : typeof Class3 +>Class3 : Class3 >T : T { diff --git a/tests/baselines/reference/baseTypeWrappingInstantiationChain.types b/tests/baselines/reference/baseTypeWrappingInstantiationChain.types index bce18aa359eea..747b672dd0d55 100644 --- a/tests/baselines/reference/baseTypeWrappingInstantiationChain.types +++ b/tests/baselines/reference/baseTypeWrappingInstantiationChain.types @@ -2,7 +2,7 @@ class C extends CBase { >C : C >T1 : T1 ->CBase : typeof CBase +>CBase : CBase >T1 : T1 public works() { @@ -35,7 +35,7 @@ class C extends CBase { class CBase extends CBaseBase> { >CBase : CBase >T2 : T2 ->CBaseBase : typeof CBaseBase +>CBaseBase : CBaseBase> >Wrapper : Wrapper >T2 : T2 diff --git a/tests/baselines/reference/bestCommonTypeOfConditionalExpressions.types b/tests/baselines/reference/bestCommonTypeOfConditionalExpressions.types index 72510bfc324dc..2a5ee6a2fe230 100644 --- a/tests/baselines/reference/bestCommonTypeOfConditionalExpressions.types +++ b/tests/baselines/reference/bestCommonTypeOfConditionalExpressions.types @@ -18,12 +18,12 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : typeof Base +>Base : Base >bar : string class Derived2 extends Base { baz: string; } >Derived2 : Derived2 ->Base : typeof Base +>Base : Base >baz : string var base: Base; diff --git a/tests/baselines/reference/bestCommonTypeOfTuple2.types b/tests/baselines/reference/bestCommonTypeOfTuple2.types index ceb15c45cba73..32196fdf66854 100644 --- a/tests/baselines/reference/bestCommonTypeOfTuple2.types +++ b/tests/baselines/reference/bestCommonTypeOfTuple2.types @@ -23,7 +23,7 @@ class E implements base { e } class F extends C { f } >F : F ->C : typeof C +>C : C >f : any class C1 implements base1 { i = "foo"; c } @@ -35,7 +35,7 @@ class C1 implements base1 { i = "foo"; c } class D1 extends C1 { i = "bar"; d } >D1 : D1 ->C1 : typeof C1 +>C1 : C1 >i : string >"bar" : string >d : any diff --git a/tests/baselines/reference/callSignatureAssignabilityInInheritance2.types b/tests/baselines/reference/callSignatureAssignabilityInInheritance2.types index b98cd8d36c9f4..335413cd73ed2 100644 --- a/tests/baselines/reference/callSignatureAssignabilityInInheritance2.types +++ b/tests/baselines/reference/callSignatureAssignabilityInInheritance2.types @@ -7,17 +7,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : typeof Base +>Base : Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : typeof Derived +>Derived : Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : typeof Base +>Base : Base >bing : string interface A { // T diff --git a/tests/baselines/reference/callSignatureAssignabilityInInheritance4.types b/tests/baselines/reference/callSignatureAssignabilityInInheritance4.types index c7f573fe9df35..0575d1332cec0 100644 --- a/tests/baselines/reference/callSignatureAssignabilityInInheritance4.types +++ b/tests/baselines/reference/callSignatureAssignabilityInInheritance4.types @@ -7,17 +7,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : typeof Base +>Base : Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : typeof Derived +>Derived : Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : typeof Base +>Base : Base >bing : string interface A { // T diff --git a/tests/baselines/reference/callSignatureAssignabilityInInheritance5.types b/tests/baselines/reference/callSignatureAssignabilityInInheritance5.types index 14325053248bb..0ffc8257a569e 100644 --- a/tests/baselines/reference/callSignatureAssignabilityInInheritance5.types +++ b/tests/baselines/reference/callSignatureAssignabilityInInheritance5.types @@ -8,17 +8,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : typeof Base +>Base : Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : typeof Derived +>Derived : Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : typeof Base +>Base : Base >bing : string interface A { // T diff --git a/tests/baselines/reference/callSignatureAssignabilityInInheritance6.types b/tests/baselines/reference/callSignatureAssignabilityInInheritance6.types index 67f43b9990a9c..721b691be7071 100644 --- a/tests/baselines/reference/callSignatureAssignabilityInInheritance6.types +++ b/tests/baselines/reference/callSignatureAssignabilityInInheritance6.types @@ -9,17 +9,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : typeof Base +>Base : Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : typeof Derived +>Derived : Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : typeof Base +>Base : Base >bing : string interface A { // T diff --git a/tests/baselines/reference/callWithSpread.types b/tests/baselines/reference/callWithSpread.types index 68c738f18328d..f7097727204ff 100644 --- a/tests/baselines/reference/callWithSpread.types +++ b/tests/baselines/reference/callWithSpread.types @@ -205,7 +205,7 @@ class C { class D extends C { >D : D ->C : typeof C +>C : C constructor() { super(1, 2); diff --git a/tests/baselines/reference/callWithSpreadES6.types b/tests/baselines/reference/callWithSpreadES6.types index ecbfba54e9f60..ba638207e8a28 100644 --- a/tests/baselines/reference/callWithSpreadES6.types +++ b/tests/baselines/reference/callWithSpreadES6.types @@ -206,7 +206,7 @@ class C { class D extends C { >D : D ->C : typeof C +>C : C constructor() { super(1, 2); diff --git a/tests/baselines/reference/captureThisInSuperCall.types b/tests/baselines/reference/captureThisInSuperCall.types index b67307e4f83be..faa7d2ad97e56 100644 --- a/tests/baselines/reference/captureThisInSuperCall.types +++ b/tests/baselines/reference/captureThisInSuperCall.types @@ -8,7 +8,7 @@ class A { class B extends A { >B : B ->A : typeof A +>A : A constructor() { super({ test: () => this.someMethod()}); } >super({ test: () => this.someMethod()}) : void diff --git a/tests/baselines/reference/checkForObjectTooStrict.types b/tests/baselines/reference/checkForObjectTooStrict.types index a6cd5194f0285..f6b63019cd567 100644 --- a/tests/baselines/reference/checkForObjectTooStrict.types +++ b/tests/baselines/reference/checkForObjectTooStrict.types @@ -13,7 +13,7 @@ module Foo { class Bar extends Foo.Object { // should work >Bar : Bar ->Foo.Object : typeof Foo.Object +>Foo.Object : Foo.Object >Foo : typeof Foo >Object : typeof Foo.Object @@ -30,7 +30,7 @@ class Bar extends Foo.Object { // should work class Baz extends Object { >Baz : Baz ->Object : ObjectConstructor +>Object : Object constructor () { // ERROR, as expected diff --git a/tests/baselines/reference/circularImportAlias.types b/tests/baselines/reference/circularImportAlias.types index 436ad56ddf820..e4b2f27dbbed2 100644 --- a/tests/baselines/reference/circularImportAlias.types +++ b/tests/baselines/reference/circularImportAlias.types @@ -10,7 +10,7 @@ module B { export class D extends a.C { >D : D ->a.C : typeof a.C +>a.C : a.C >a : typeof a >C : typeof a.C diff --git a/tests/baselines/reference/classConstructorParametersAccessibility3.types b/tests/baselines/reference/classConstructorParametersAccessibility3.types index 5df83005ad97c..3372044569cad 100644 --- a/tests/baselines/reference/classConstructorParametersAccessibility3.types +++ b/tests/baselines/reference/classConstructorParametersAccessibility3.types @@ -8,7 +8,7 @@ class Base { class Derived extends Base { >Derived : Derived ->Base : typeof Base +>Base : Base constructor(public p: number) { >p : number diff --git a/tests/baselines/reference/classDeclarationMergedInModuleWithContinuation.types b/tests/baselines/reference/classDeclarationMergedInModuleWithContinuation.types index ddf8b10d1a12e..11fcac506b63b 100644 --- a/tests/baselines/reference/classDeclarationMergedInModuleWithContinuation.types +++ b/tests/baselines/reference/classDeclarationMergedInModuleWithContinuation.types @@ -19,7 +19,7 @@ module M { export class O extends M.N { >O : O ->M.N : typeof N +>M.N : N >M : typeof M >N : typeof N } diff --git a/tests/baselines/reference/classDoesNotDependOnBaseTypes.types b/tests/baselines/reference/classDoesNotDependOnBaseTypes.types index 5ea05baf35e43..c342f0ea002cd 100644 --- a/tests/baselines/reference/classDoesNotDependOnBaseTypes.types +++ b/tests/baselines/reference/classDoesNotDependOnBaseTypes.types @@ -39,5 +39,5 @@ class StringTreeCollectionBase { class StringTreeCollection extends StringTreeCollectionBase { } >StringTreeCollection : StringTreeCollection ->StringTreeCollectionBase : typeof StringTreeCollectionBase +>StringTreeCollectionBase : StringTreeCollectionBase diff --git a/tests/baselines/reference/classExtendingBuiltinType.types b/tests/baselines/reference/classExtendingBuiltinType.types index ce774c0bff0e9..b50137e58d6f9 100644 --- a/tests/baselines/reference/classExtendingBuiltinType.types +++ b/tests/baselines/reference/classExtendingBuiltinType.types @@ -1,41 +1,41 @@ === tests/cases/conformance/classes/classDeclarations/classExtendingBuiltinType.ts === class C1 extends Object { } >C1 : C1 ->Object : ObjectConstructor +>Object : Object class C2 extends Function { } >C2 : C2 ->Function : FunctionConstructor +>Function : Function class C3 extends String { } >C3 : C3 ->String : StringConstructor +>String : String class C4 extends Boolean { } >C4 : C4 ->Boolean : BooleanConstructor +>Boolean : Boolean class C5 extends Number { } >C5 : C5 ->Number : NumberConstructor +>Number : Number class C6 extends Date { } >C6 : C6 ->Date : DateConstructor +>Date : Date class C7 extends RegExp { } >C7 : C7 ->RegExp : RegExpConstructor +>RegExp : RegExp class C8 extends Error { } >C8 : C8 ->Error : ErrorConstructor +>Error : Error class C9 extends Array { } >C9 : C9 ->Array : ArrayConstructor +>Array : any[] class C10 extends Array { } >C10 : C10 ->Array : ArrayConstructor +>Array : number[] diff --git a/tests/baselines/reference/classExtendingClass.types b/tests/baselines/reference/classExtendingClass.types index b72463ae2d72a..f91493e97fdf5 100644 --- a/tests/baselines/reference/classExtendingClass.types +++ b/tests/baselines/reference/classExtendingClass.types @@ -14,7 +14,7 @@ class C { class D extends C { >D : D ->C : typeof C +>C : C bar: string; >bar : string @@ -73,7 +73,7 @@ class C2 { class D2 extends C2 { >D2 : D2 >T : T ->C2 : typeof C2 +>C2 : C2 >T : T bar: string; diff --git a/tests/baselines/reference/classExtendingQualifiedName2.types b/tests/baselines/reference/classExtendingQualifiedName2.types index 35a41203c0d5c..bd50fe3d2ce57 100644 --- a/tests/baselines/reference/classExtendingQualifiedName2.types +++ b/tests/baselines/reference/classExtendingQualifiedName2.types @@ -8,7 +8,7 @@ module M { class D extends M.C { >D : D ->M.C : typeof C +>M.C : C >M : typeof M >C : typeof C } diff --git a/tests/baselines/reference/classImplementsClass3.types b/tests/baselines/reference/classImplementsClass3.types index 0d8696721c194..6f97a96a56e48 100644 --- a/tests/baselines/reference/classImplementsClass3.types +++ b/tests/baselines/reference/classImplementsClass3.types @@ -18,7 +18,7 @@ class C implements A { class C2 extends A {} >C2 : C2 ->A : typeof A +>A : A // no errors var c: C; diff --git a/tests/baselines/reference/classOrder2.types b/tests/baselines/reference/classOrder2.types index 82422dda46f0a..07bd6ba45a571 100644 --- a/tests/baselines/reference/classOrder2.types +++ b/tests/baselines/reference/classOrder2.types @@ -2,7 +2,7 @@ class A extends B { >A : A ->B : typeof B +>B : B foo() { this.bar(); } >foo : () => void diff --git a/tests/baselines/reference/classOrderBug.types b/tests/baselines/reference/classOrderBug.types index c30836e661fa1..979b65b8008c2 100644 --- a/tests/baselines/reference/classOrderBug.types +++ b/tests/baselines/reference/classOrderBug.types @@ -25,7 +25,7 @@ class baz {} class foo extends baz {} >foo : foo ->baz : typeof baz +>baz : baz diff --git a/tests/baselines/reference/classSideInheritance2.types b/tests/baselines/reference/classSideInheritance2.types index 90f3b79481467..9c2d632ebbb18 100644 --- a/tests/baselines/reference/classSideInheritance2.types +++ b/tests/baselines/reference/classSideInheritance2.types @@ -11,7 +11,7 @@ interface TextSpan {} class SubText extends TextBase { >SubText : SubText ->TextBase : typeof TextBase +>TextBase : TextBase constructor(text: IText, span: TextSpan) { >text : IText diff --git a/tests/baselines/reference/classWithProtectedProperty.types b/tests/baselines/reference/classWithProtectedProperty.types index b3e3afc27366f..1f53ea2aad9b4 100644 --- a/tests/baselines/reference/classWithProtectedProperty.types +++ b/tests/baselines/reference/classWithProtectedProperty.types @@ -39,7 +39,7 @@ class C { class D extends C { >D : D ->C : typeof C +>C : C method() { >method : () => void diff --git a/tests/baselines/reference/commentOnAmbientClass1.types b/tests/baselines/reference/commentOnAmbientClass1.types index 28b0c7e19feb5..44c0334ef6cde 100644 --- a/tests/baselines/reference/commentOnAmbientClass1.types +++ b/tests/baselines/reference/commentOnAmbientClass1.types @@ -2,7 +2,7 @@ /// declare class E extends C { >E : E ->C : typeof C +>C : C } === tests/cases/compiler/a.ts === /*! Keep this pinned comment */ diff --git a/tests/baselines/reference/commentOnAmbientModule.types b/tests/baselines/reference/commentOnAmbientModule.types index f64845cae5d16..629395a4e807d 100644 --- a/tests/baselines/reference/commentOnAmbientModule.types +++ b/tests/baselines/reference/commentOnAmbientModule.types @@ -5,7 +5,7 @@ declare module E { class foobar extends D.bar { >foobar : foobar ->D.bar : typeof D.bar +>D.bar : D.bar >D : typeof D >bar : typeof D.bar diff --git a/tests/baselines/reference/commentsInheritance.types b/tests/baselines/reference/commentsInheritance.types index b6778ca40fc42..1c25f13937bfc 100644 --- a/tests/baselines/reference/commentsInheritance.types +++ b/tests/baselines/reference/commentsInheritance.types @@ -177,7 +177,7 @@ class c2 { } class c3 extends c2 { >c3 : c3 ->c2 : typeof c2 +>c2 : c2 constructor() { super(10); @@ -232,7 +232,7 @@ c2_i = c3_i; class c4 extends c2 { >c4 : c4 ->c2 : typeof c2 +>c2 : c2 } var c4_i = new c4(10); >c4_i : c4 diff --git a/tests/baselines/reference/comparisonOperatorWithIdenticalObjects.types b/tests/baselines/reference/comparisonOperatorWithIdenticalObjects.types index adf4b2a1d1337..7f202c38d3a39 100644 --- a/tests/baselines/reference/comparisonOperatorWithIdenticalObjects.types +++ b/tests/baselines/reference/comparisonOperatorWithIdenticalObjects.types @@ -70,11 +70,11 @@ class Base { } class A2 extends Base { } >A2 : A2 ->Base : typeof Base +>Base : Base class B2 extends Base { } >B2 : B2 ->Base : typeof Base +>Base : Base interface A3 { f(a: number): string; } >A3 : A3 diff --git a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnCallSignature.types b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnCallSignature.types index b6425439a20af..b3a972958b3e6 100644 --- a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnCallSignature.types +++ b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnCallSignature.types @@ -8,7 +8,7 @@ class Base { class Derived extends Base { >Derived : Derived ->Base : typeof Base +>Base : Base public b: string; >b : string diff --git a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnConstructorSignature.types b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnConstructorSignature.types index 0afc38dba263f..737c13f183cb1 100644 --- a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnConstructorSignature.types +++ b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnConstructorSignature.types @@ -8,7 +8,7 @@ class Base { class Derived extends Base { >Derived : Derived ->Base : typeof Base +>Base : Base public b: string; >b : string diff --git a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnIndexSignature.types b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnIndexSignature.types index 00bb5611a564c..657fdccbda0a7 100644 --- a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnIndexSignature.types +++ b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnIndexSignature.types @@ -8,7 +8,7 @@ class Base { class Derived extends Base { >Derived : Derived ->Base : typeof Base +>Base : Base public b: string; >b : string diff --git a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.types b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.types index 7d612407d512c..c3f0d96e83959 100644 --- a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.types +++ b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnInstantiatedCallSignature.types @@ -8,7 +8,7 @@ class Base { class Derived extends Base { >Derived : Derived ->Base : typeof Base +>Base : Base public b: string; >b : string diff --git a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.types b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.types index 0c6ea7c0d9ff5..29d92c25726eb 100644 --- a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.types +++ b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnInstantiatedConstructorSignature.types @@ -8,7 +8,7 @@ class Base { class Derived extends Base { >Derived : Derived ->Base : typeof Base +>Base : Base public b: string; >b : string diff --git a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnProperty.types b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnProperty.types index efcf6a3ff5d5d..d604115e16126 100644 --- a/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnProperty.types +++ b/tests/baselines/reference/comparisonOperatorWithSubtypeObjectOnProperty.types @@ -8,7 +8,7 @@ class Base { class Derived extends Base { >Derived : Derived ->Base : typeof Base +>Base : Base public b: string; >b : string @@ -47,7 +47,7 @@ class A2 { class B2 extends A2 { >B2 : B2 ->A2 : typeof A2 +>A2 : A2 private b; >b : any diff --git a/tests/baselines/reference/complexClassRelationships.types b/tests/baselines/reference/complexClassRelationships.types index 5c86d8eba2b41..43d0232e30a8a 100644 --- a/tests/baselines/reference/complexClassRelationships.types +++ b/tests/baselines/reference/complexClassRelationships.types @@ -2,7 +2,7 @@ // There should be no errors in this file class Derived extends Base { >Derived : Derived ->Base : typeof Base +>Base : Base public static createEmpty(): Derived { >createEmpty : () => Derived diff --git a/tests/baselines/reference/computedPropertyNames25_ES5.types b/tests/baselines/reference/computedPropertyNames25_ES5.types index f1f4239085cf2..6ca67cce4107b 100644 --- a/tests/baselines/reference/computedPropertyNames25_ES5.types +++ b/tests/baselines/reference/computedPropertyNames25_ES5.types @@ -11,7 +11,7 @@ class Base { } class C extends Base { >C : C ->Base : typeof Base +>Base : Base foo() { >foo : () => number diff --git a/tests/baselines/reference/computedPropertyNames25_ES6.types b/tests/baselines/reference/computedPropertyNames25_ES6.types index 50a1a29938192..1c093ebc59f6f 100644 --- a/tests/baselines/reference/computedPropertyNames25_ES6.types +++ b/tests/baselines/reference/computedPropertyNames25_ES6.types @@ -11,7 +11,7 @@ class Base { } class C extends Base { >C : C ->Base : typeof Base +>Base : Base foo() { >foo : () => number diff --git a/tests/baselines/reference/computedPropertyNames28_ES5.types b/tests/baselines/reference/computedPropertyNames28_ES5.types index 1457903edf788..273dcd426d82f 100644 --- a/tests/baselines/reference/computedPropertyNames28_ES5.types +++ b/tests/baselines/reference/computedPropertyNames28_ES5.types @@ -4,7 +4,7 @@ class Base { } class C extends Base { >C : C ->Base : typeof Base +>Base : Base constructor() { super(); diff --git a/tests/baselines/reference/computedPropertyNames28_ES6.types b/tests/baselines/reference/computedPropertyNames28_ES6.types index dd1840fe5ef83..a34fb33f6c7d7 100644 --- a/tests/baselines/reference/computedPropertyNames28_ES6.types +++ b/tests/baselines/reference/computedPropertyNames28_ES6.types @@ -4,7 +4,7 @@ class Base { } class C extends Base { >C : C ->Base : typeof Base +>Base : Base constructor() { super(); diff --git a/tests/baselines/reference/computedPropertyNames31_ES5.types b/tests/baselines/reference/computedPropertyNames31_ES5.types index 063b98141bae4..6c0f2572a0680 100644 --- a/tests/baselines/reference/computedPropertyNames31_ES5.types +++ b/tests/baselines/reference/computedPropertyNames31_ES5.types @@ -11,7 +11,7 @@ class Base { } class C extends Base { >C : C ->Base : typeof Base +>Base : Base foo() { >foo : () => number diff --git a/tests/baselines/reference/computedPropertyNames31_ES6.types b/tests/baselines/reference/computedPropertyNames31_ES6.types index b99d364bb3d38..eaddc0368126f 100644 --- a/tests/baselines/reference/computedPropertyNames31_ES6.types +++ b/tests/baselines/reference/computedPropertyNames31_ES6.types @@ -11,7 +11,7 @@ class Base { } class C extends Base { >C : C ->Base : typeof Base +>Base : Base foo() { >foo : () => number diff --git a/tests/baselines/reference/conditionalOperatorWithIdenticalBCT.types b/tests/baselines/reference/conditionalOperatorWithIdenticalBCT.types index 68745ed7874ba..722ec13c68439 100644 --- a/tests/baselines/reference/conditionalOperatorWithIdenticalBCT.types +++ b/tests/baselines/reference/conditionalOperatorWithIdenticalBCT.types @@ -8,12 +8,12 @@ class X { propertyX: any; propertyX1: number; propertyX2: string }; class A extends X { propertyA: number }; >A : A ->X : typeof X +>X : X >propertyA : number class B extends X { propertyB: string }; >B : B ->X : typeof X +>X : X >propertyB : string var x: X; diff --git a/tests/baselines/reference/constantOverloadFunction.types b/tests/baselines/reference/constantOverloadFunction.types index 18de11823dbc4..d643d3a726d9a 100644 --- a/tests/baselines/reference/constantOverloadFunction.types +++ b/tests/baselines/reference/constantOverloadFunction.types @@ -5,17 +5,17 @@ class Base { foo() { } } class Derived1 extends Base { bar() { } } >Derived1 : Derived1 ->Base : typeof Base +>Base : Base >bar : () => void class Derived2 extends Base { baz() { } } >Derived2 : Derived2 ->Base : typeof Base +>Base : Base >baz : () => void class Derived3 extends Base { biz() { } } >Derived3 : Derived3 ->Base : typeof Base +>Base : Base >biz : () => void function foo(tagName: 'canvas'): Derived1; diff --git a/tests/baselines/reference/constraintCheckInGenericBaseTypeReference.types b/tests/baselines/reference/constraintCheckInGenericBaseTypeReference.types index 602ad444a5c62..6fd80b779c5d1 100644 --- a/tests/baselines/reference/constraintCheckInGenericBaseTypeReference.types +++ b/tests/baselines/reference/constraintCheckInGenericBaseTypeReference.types @@ -16,7 +16,7 @@ class GenericBase { } class Derived extends GenericBase { >Derived : Derived ->GenericBase : typeof GenericBase +>GenericBase : GenericBase >TypeArg : TypeArg } diff --git a/tests/baselines/reference/constructSignatureAssignabilityInInheritance2.types b/tests/baselines/reference/constructSignatureAssignabilityInInheritance2.types index 7b24ecdab19e5..7ab221024ca95 100644 --- a/tests/baselines/reference/constructSignatureAssignabilityInInheritance2.types +++ b/tests/baselines/reference/constructSignatureAssignabilityInInheritance2.types @@ -7,17 +7,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : typeof Base +>Base : Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : typeof Derived +>Derived : Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : typeof Base +>Base : Base >bing : string interface A { // T diff --git a/tests/baselines/reference/constructSignatureAssignabilityInInheritance4.types b/tests/baselines/reference/constructSignatureAssignabilityInInheritance4.types index d0f28468df4e5..7782389d69a7a 100644 --- a/tests/baselines/reference/constructSignatureAssignabilityInInheritance4.types +++ b/tests/baselines/reference/constructSignatureAssignabilityInInheritance4.types @@ -7,17 +7,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : typeof Base +>Base : Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : typeof Derived +>Derived : Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : typeof Base +>Base : Base >bing : string interface A { // T diff --git a/tests/baselines/reference/constructSignatureAssignabilityInInheritance5.types b/tests/baselines/reference/constructSignatureAssignabilityInInheritance5.types index 417ad4bba098f..dea9478b37231 100644 --- a/tests/baselines/reference/constructSignatureAssignabilityInInheritance5.types +++ b/tests/baselines/reference/constructSignatureAssignabilityInInheritance5.types @@ -8,17 +8,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : typeof Base +>Base : Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : typeof Derived +>Derived : Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : typeof Base +>Base : Base >bing : string interface A { // T diff --git a/tests/baselines/reference/constructSignatureAssignabilityInInheritance6.types b/tests/baselines/reference/constructSignatureAssignabilityInInheritance6.types index 9fa64f6baadfd..193a19a5f2c2d 100644 --- a/tests/baselines/reference/constructSignatureAssignabilityInInheritance6.types +++ b/tests/baselines/reference/constructSignatureAssignabilityInInheritance6.types @@ -9,17 +9,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : typeof Base +>Base : Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : typeof Derived +>Derived : Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : typeof Base +>Base : Base >bing : string interface A { // T diff --git a/tests/baselines/reference/constructorArgs.types b/tests/baselines/reference/constructorArgs.types index 5c0b3e78d7ba5..ccd23c22f5de3 100644 --- a/tests/baselines/reference/constructorArgs.types +++ b/tests/baselines/reference/constructorArgs.types @@ -16,7 +16,7 @@ class Super { class Sub extends Super { >Sub : Sub ->Super : typeof Super +>Super : Super constructor(public options:Options) { >options : Options diff --git a/tests/baselines/reference/constructorFunctionTypeIsAssignableToBaseType.types b/tests/baselines/reference/constructorFunctionTypeIsAssignableToBaseType.types index 89f1662a9df0f..3702be4f2dcf9 100644 --- a/tests/baselines/reference/constructorFunctionTypeIsAssignableToBaseType.types +++ b/tests/baselines/reference/constructorFunctionTypeIsAssignableToBaseType.types @@ -13,7 +13,7 @@ class Base { class Derived extends Base { >Derived : Derived ->Base : typeof Base +>Base : Base // ok static foo: { @@ -26,7 +26,7 @@ class Derived extends Base { class Derived2 extends Base { >Derived2 : Derived2 ->Base : typeof Base +>Base : Base // ok, use assignability here static foo: { diff --git a/tests/baselines/reference/constructorFunctionTypeIsAssignableToBaseType2.types b/tests/baselines/reference/constructorFunctionTypeIsAssignableToBaseType2.types index 39dac2804e0e1..e0e86df4a2612 100644 --- a/tests/baselines/reference/constructorFunctionTypeIsAssignableToBaseType2.types +++ b/tests/baselines/reference/constructorFunctionTypeIsAssignableToBaseType2.types @@ -19,7 +19,7 @@ class Base { class Derived extends Base { >Derived : Derived ->Base : typeof Base +>Base : Base // ok static foo: { @@ -41,7 +41,7 @@ class Derived extends Base { class Derived2 extends Base { >Derived2 : Derived2 ->Base : typeof Base +>Base : Base static foo: { >foo : { bar: number; } diff --git a/tests/baselines/reference/constructorHasPrototypeProperty.types b/tests/baselines/reference/constructorHasPrototypeProperty.types index b8d1265f504e4..24dedb254eb23 100644 --- a/tests/baselines/reference/constructorHasPrototypeProperty.types +++ b/tests/baselines/reference/constructorHasPrototypeProperty.types @@ -11,7 +11,7 @@ module NonGeneric { class D extends C { >D : D ->C : typeof C +>C : C bar: string; >bar : string @@ -61,7 +61,7 @@ module Generic { >D : D >T : T >U : U ->C : typeof C +>C : C >T : T >U : U diff --git a/tests/baselines/reference/constructorOverloads2.types b/tests/baselines/reference/constructorOverloads2.types index 27e16d1fd4605..dde032c0fd29e 100644 --- a/tests/baselines/reference/constructorOverloads2.types +++ b/tests/baselines/reference/constructorOverloads2.types @@ -17,7 +17,7 @@ class FooBase { class Foo extends FooBase { >Foo : Foo ->FooBase : typeof FooBase +>FooBase : FooBase constructor(s: string); >s : string diff --git a/tests/baselines/reference/contextualTypingArrayOfLambdas.types b/tests/baselines/reference/contextualTypingArrayOfLambdas.types index 08259aaa36c22..d3e5b9942e37a 100644 --- a/tests/baselines/reference/contextualTypingArrayOfLambdas.types +++ b/tests/baselines/reference/contextualTypingArrayOfLambdas.types @@ -8,7 +8,7 @@ class A { class B extends A { >B : B ->A : typeof A +>A : A bar: string; >bar : string @@ -16,7 +16,7 @@ class B extends A { class C extends A { >C : C ->A : typeof A +>A : A baz: string; >baz : string diff --git a/tests/baselines/reference/contextualTypingOfConditionalExpression.types b/tests/baselines/reference/contextualTypingOfConditionalExpression.types index b12b40022f2c1..a2e29a0e66b4f 100644 --- a/tests/baselines/reference/contextualTypingOfConditionalExpression.types +++ b/tests/baselines/reference/contextualTypingOfConditionalExpression.types @@ -25,14 +25,14 @@ class A { } class B extends A { >B : B ->A : typeof A +>A : A bar: number; >bar : number } class C extends A { >C : C ->A : typeof A +>A : A baz: number; >baz : number diff --git a/tests/baselines/reference/declFileAliasUseBeforeDeclaration2.types b/tests/baselines/reference/declFileAliasUseBeforeDeclaration2.types index 15073c3eb0145..362dd031e092e 100644 --- a/tests/baselines/reference/declFileAliasUseBeforeDeclaration2.types +++ b/tests/baselines/reference/declFileAliasUseBeforeDeclaration2.types @@ -10,7 +10,7 @@ declare module "test" { } class B extends E { >B : B ->E : typeof E +>E : E } import E = A.C; >E : typeof E diff --git a/tests/baselines/reference/declFileForFunctionTypeAsTypeParameter.types b/tests/baselines/reference/declFileForFunctionTypeAsTypeParameter.types index 508deef385da9..ba203e39aab7a 100644 --- a/tests/baselines/reference/declFileForFunctionTypeAsTypeParameter.types +++ b/tests/baselines/reference/declFileForFunctionTypeAsTypeParameter.types @@ -6,7 +6,7 @@ class X { } class C extends X<() => number> { >C : C ->X : typeof X +>X : X<() => number> } interface I extends X<() => number> { >I : I diff --git a/tests/baselines/reference/declFileGenericClassWithGenericExtendedClass.types b/tests/baselines/reference/declFileGenericClassWithGenericExtendedClass.types index 7cef23491ae3a..27fed37c21b99 100644 --- a/tests/baselines/reference/declFileGenericClassWithGenericExtendedClass.types +++ b/tests/baselines/reference/declFileGenericClassWithGenericExtendedClass.types @@ -13,7 +13,7 @@ class Base { } class Derived extends Base { } >Derived : Derived >T : T ->Base : typeof Base +>Base : Base >T : T interface IBar { diff --git a/tests/baselines/reference/declFileGenericType.types b/tests/baselines/reference/declFileGenericType.types index 71c65ab0c1075..310f812a7bb6b 100644 --- a/tests/baselines/reference/declFileGenericType.types +++ b/tests/baselines/reference/declFileGenericType.types @@ -153,7 +153,7 @@ export var g = C.F5>(); export class h extends C.A{ } >h : h ->C.A : typeof C.A +>C.A : C.A >C : typeof C >A : typeof C.A >C : any diff --git a/tests/baselines/reference/declFileGenericType2.types b/tests/baselines/reference/declFileGenericType2.types index d14915fcad4a3..07bcba3e85a83 100644 --- a/tests/baselines/reference/declFileGenericType2.types +++ b/tests/baselines/reference/declFileGenericType2.types @@ -86,7 +86,7 @@ module templa.dom.mvc { >templa : any >mvc : any >IModel : templa.mvc.IModel ->templa.mvc.AbstractController : typeof templa.mvc.AbstractController +>templa.mvc.AbstractController : templa.mvc.AbstractController >templa.mvc : typeof templa.mvc >templa : typeof templa >mvc : typeof templa.mvc @@ -116,7 +116,7 @@ module templa.dom.mvc.composite { >mvc : any >composite : any >ICompositeControllerModel : templa.mvc.composite.ICompositeControllerModel ->templa.dom.mvc.AbstractElementController : typeof AbstractElementController +>templa.dom.mvc.AbstractElementController : AbstractElementController >templa.dom.mvc : typeof mvc >templa.dom : typeof dom >templa : typeof templa diff --git a/tests/baselines/reference/declFileWithClassNameConflictingWithClassReferredByExtendsClause.types b/tests/baselines/reference/declFileWithClassNameConflictingWithClassReferredByExtendsClause.types index bec86debf3aea..f032ad29b114c 100644 --- a/tests/baselines/reference/declFileWithClassNameConflictingWithClassReferredByExtendsClause.types +++ b/tests/baselines/reference/declFileWithClassNameConflictingWithClassReferredByExtendsClause.types @@ -19,7 +19,7 @@ module X.Y.base { export class W extends A.B.Base.W { >W : W ->A.B.Base.W : typeof A.B.Base.W +>A.B.Base.W : A.B.Base.W >A.B.Base : typeof A.B.Base >A.B : typeof A.B >A : typeof A @@ -41,7 +41,7 @@ module X.Y.base.Z { export class W extends X.Y.base.W { >W : W >TValue : TValue ->X.Y.base.W : typeof base.W +>X.Y.base.W : base.W >X.Y.base : typeof base >X.Y : typeof Y >X : typeof X diff --git a/tests/baselines/reference/declFileWithExtendsClauseThatHasItsContainerNameConflict.types b/tests/baselines/reference/declFileWithExtendsClauseThatHasItsContainerNameConflict.types index f5918630a4c64..4dae0d42c53ec 100644 --- a/tests/baselines/reference/declFileWithExtendsClauseThatHasItsContainerNameConflict.types +++ b/tests/baselines/reference/declFileWithExtendsClauseThatHasItsContainerNameConflict.types @@ -30,7 +30,7 @@ module A.B.C { export class ContextMenu extends EventManager { >ContextMenu : ContextMenu ->EventManager : typeof EventManager +>EventManager : EventManager name: string; >name : string diff --git a/tests/baselines/reference/declarationEmit_nameConflicts3.types b/tests/baselines/reference/declarationEmit_nameConflicts3.types index 5f2e32120b7ac..8d52bda68f5d4 100644 --- a/tests/baselines/reference/declarationEmit_nameConflicts3.types +++ b/tests/baselines/reference/declarationEmit_nameConflicts3.types @@ -37,7 +37,7 @@ module M.P { } export class E extends C { } >E : E ->C : typeof C +>C : C export enum D { >D : D diff --git a/tests/baselines/reference/declarationEmit_protectedMembers.types b/tests/baselines/reference/declarationEmit_protectedMembers.types index c3f191f9247f7..89aa3f5633229 100644 --- a/tests/baselines/reference/declarationEmit_protectedMembers.types +++ b/tests/baselines/reference/declarationEmit_protectedMembers.types @@ -48,7 +48,7 @@ class C1 { // Derived class overriding protected members class C2 extends C1 { >C2 : C2 ->C1 : typeof C1 +>C1 : C1 protected f() { >f : () => number @@ -81,7 +81,7 @@ class C2 extends C1 { // Derived class making protected members public class C3 extends C2 { >C3 : C3 ->C2 : typeof C2 +>C2 : C2 x: number; >x : number diff --git a/tests/baselines/reference/declareDottedExtend.types b/tests/baselines/reference/declareDottedExtend.types index 10380d0b86465..1c6c48c85c941 100644 --- a/tests/baselines/reference/declareDottedExtend.types +++ b/tests/baselines/reference/declareDottedExtend.types @@ -14,13 +14,13 @@ import ab = A.B; class D extends ab.C{ } >D : D ->ab.C : typeof ab.C +>ab.C : ab.C >ab : typeof ab >C : typeof ab.C class E extends A.B.C{ } >E : E ->A.B.C : typeof ab.C +>A.B.C : ab.C >A.B : typeof ab >A : typeof A >B : typeof ab diff --git a/tests/baselines/reference/derivedClassOverridesIndexersWithAssignmentCompatibility.types b/tests/baselines/reference/derivedClassOverridesIndexersWithAssignmentCompatibility.types index fa60f03d295d7..97940edc6e72e 100644 --- a/tests/baselines/reference/derivedClassOverridesIndexersWithAssignmentCompatibility.types +++ b/tests/baselines/reference/derivedClassOverridesIndexersWithAssignmentCompatibility.types @@ -10,7 +10,7 @@ class Base { // ok, use assignment compatibility class Derived extends Base { >Derived : Derived ->Base : typeof Base +>Base : Base [x: string]: any; >x : string @@ -27,7 +27,7 @@ class Base2 { // ok, use assignment compatibility class Derived2 extends Base2 { >Derived2 : Derived2 ->Base2 : typeof Base2 +>Base2 : Base2 [x: number]: any; >x : number diff --git a/tests/baselines/reference/derivedClassOverridesProtectedMembers.types b/tests/baselines/reference/derivedClassOverridesProtectedMembers.types index 1e672636d143f..2695cbabe3461 100644 --- a/tests/baselines/reference/derivedClassOverridesProtectedMembers.types +++ b/tests/baselines/reference/derivedClassOverridesProtectedMembers.types @@ -65,7 +65,7 @@ class Base { class Derived extends Base { >Derived : Derived ->Base : typeof Base +>Base : Base protected a: typeof y; >a : { foo: string; bar: string; } diff --git a/tests/baselines/reference/derivedClassOverridesProtectedMembers2.types b/tests/baselines/reference/derivedClassOverridesProtectedMembers2.types index b99be02adab43..2799555a3a2b6 100644 --- a/tests/baselines/reference/derivedClassOverridesProtectedMembers2.types +++ b/tests/baselines/reference/derivedClassOverridesProtectedMembers2.types @@ -65,7 +65,7 @@ constructor(a: typeof x) { } // Increase visibility of all protected members to public class Derived extends Base { >Derived : Derived ->Base : typeof Base +>Base : Base a: typeof y; >a : { foo: string; bar: string; } @@ -208,7 +208,7 @@ class Base2 { class Derived2 extends Base2 { >Derived2 : Derived2 ->Base2 : typeof Base2 +>Base2 : Base2 [i: string]: typeof x; >i : string diff --git a/tests/baselines/reference/derivedClassOverridesWithoutSubtype.types b/tests/baselines/reference/derivedClassOverridesWithoutSubtype.types index d46039d850894..a46c8efa408ba 100644 --- a/tests/baselines/reference/derivedClassOverridesWithoutSubtype.types +++ b/tests/baselines/reference/derivedClassOverridesWithoutSubtype.types @@ -12,7 +12,7 @@ class Base { class Derived extends Base { >Derived : Derived ->Base : typeof Base +>Base : Base x: { >x : { foo: any; } @@ -35,7 +35,7 @@ class Base2 { class Derived2 extends Base2 { >Derived2 : Derived2 ->Base2 : typeof Base2 +>Base2 : Base2 static y: { >y : { foo: any; } diff --git a/tests/baselines/reference/derivedClasses.types b/tests/baselines/reference/derivedClasses.types index 5cabca324632b..906cfb2741c7c 100644 --- a/tests/baselines/reference/derivedClasses.types +++ b/tests/baselines/reference/derivedClasses.types @@ -1,7 +1,7 @@ === tests/cases/compiler/derivedClasses.ts === class Red extends Color { >Red : Red ->Color : typeof Color +>Color : Color public shade() { >shade : () => string @@ -36,7 +36,7 @@ class Color { class Blue extends Color { >Blue : Blue ->Color : typeof Color +>Color : Color public shade() { >shade : () => string diff --git a/tests/baselines/reference/derivedTypeAccessesHiddenBaseCallViaSuperPropertyAccess.types b/tests/baselines/reference/derivedTypeAccessesHiddenBaseCallViaSuperPropertyAccess.types index 8421e6a082027..d8d9f657255af 100644 --- a/tests/baselines/reference/derivedTypeAccessesHiddenBaseCallViaSuperPropertyAccess.types +++ b/tests/baselines/reference/derivedTypeAccessesHiddenBaseCallViaSuperPropertyAccess.types @@ -15,7 +15,7 @@ class Base { class Derived extends Base { >Derived : Derived ->Base : typeof Base +>Base : Base foo(x: { a: number; b: number }): { a: number; b: number } { >foo : (x: { a: number; b: number; }) => { a: number; b: number; } diff --git a/tests/baselines/reference/derivedTypeDoesNotRequireExtendsClause.types b/tests/baselines/reference/derivedTypeDoesNotRequireExtendsClause.types index f34220eda8fbc..36b85d7950c6e 100644 --- a/tests/baselines/reference/derivedTypeDoesNotRequireExtendsClause.types +++ b/tests/baselines/reference/derivedTypeDoesNotRequireExtendsClause.types @@ -18,7 +18,7 @@ class Derived { class Derived2 extends Base { >Derived2 : Derived2 ->Base : typeof Base +>Base : Base bar: string; >bar : string diff --git a/tests/baselines/reference/emitClassDeclarationWithExtensionAndTypeArgumentInES6.types b/tests/baselines/reference/emitClassDeclarationWithExtensionAndTypeArgumentInES6.types index eba51d0997d73..e469a377985a3 100644 --- a/tests/baselines/reference/emitClassDeclarationWithExtensionAndTypeArgumentInES6.types +++ b/tests/baselines/reference/emitClassDeclarationWithExtensionAndTypeArgumentInES6.types @@ -9,11 +9,11 @@ class B { } class C extends B { } >C : C ->B : typeof B +>B : B class D extends B { >D : D ->B : typeof B +>B : B constructor(a: any) >a : any diff --git a/tests/baselines/reference/emitClassDeclarationWithExtensionInES6.types b/tests/baselines/reference/emitClassDeclarationWithExtensionInES6.types index 073e4ebf5ec78..7267af2fde057 100644 --- a/tests/baselines/reference/emitClassDeclarationWithExtensionInES6.types +++ b/tests/baselines/reference/emitClassDeclarationWithExtensionInES6.types @@ -10,7 +10,7 @@ class B { } class C extends B { >C : C ->B : typeof B +>B : B foo() { } >foo : () => void @@ -31,7 +31,7 @@ class C extends B { } class D extends C { >D : D ->C : typeof C +>C : C constructor() { super(); diff --git a/tests/baselines/reference/emitClassDeclarationWithPropertyAssignmentInES6.types b/tests/baselines/reference/emitClassDeclarationWithPropertyAssignmentInES6.types index 8157c2243a578..f3504d655edbf 100644 --- a/tests/baselines/reference/emitClassDeclarationWithPropertyAssignmentInES6.types +++ b/tests/baselines/reference/emitClassDeclarationWithPropertyAssignmentInES6.types @@ -29,7 +29,7 @@ class D { class E extends D{ >E : E ->D : typeof D +>D : D z: boolean = true; >z : boolean @@ -38,7 +38,7 @@ class E extends D{ class F extends D{ >F : F ->D : typeof D +>D : D z: boolean = true; >z : boolean diff --git a/tests/baselines/reference/emitClassDeclarationWithSuperMethodCall01.types b/tests/baselines/reference/emitClassDeclarationWithSuperMethodCall01.types index a61c40696fc37..8b68af897acfa 100644 --- a/tests/baselines/reference/emitClassDeclarationWithSuperMethodCall01.types +++ b/tests/baselines/reference/emitClassDeclarationWithSuperMethodCall01.types @@ -10,7 +10,7 @@ class Parent { class Foo extends Parent { >Foo : Foo ->Parent : typeof Parent +>Parent : Parent foo() { >foo : () => void diff --git a/tests/baselines/reference/es6ClassSuperCodegenBug.types b/tests/baselines/reference/es6ClassSuperCodegenBug.types index 09b79d345b5d5..bdf8ebde8f23e 100644 --- a/tests/baselines/reference/es6ClassSuperCodegenBug.types +++ b/tests/baselines/reference/es6ClassSuperCodegenBug.types @@ -8,7 +8,7 @@ class A { } class B extends A { >B : B ->A : typeof A +>A : A constructor() { if (true) { diff --git a/tests/baselines/reference/es6ClassTest7.types b/tests/baselines/reference/es6ClassTest7.types index 83f03ed4076a2..c0399204ffaa6 100644 --- a/tests/baselines/reference/es6ClassTest7.types +++ b/tests/baselines/reference/es6ClassTest7.types @@ -9,7 +9,7 @@ declare module M { class Bar extends M.Foo { >Bar : Bar ->M.Foo : typeof M.Foo +>M.Foo : M.Foo >M : typeof M >Foo : typeof M.Foo } diff --git a/tests/baselines/reference/exportAssignmentOfGenericType1.types b/tests/baselines/reference/exportAssignmentOfGenericType1.types index e06b4fb527ab3..06ff38b2623d4 100644 --- a/tests/baselines/reference/exportAssignmentOfGenericType1.types +++ b/tests/baselines/reference/exportAssignmentOfGenericType1.types @@ -5,7 +5,7 @@ import q = require("exportAssignmentOfGenericType1_0"); class M extends q { } >M : M ->q : typeof q +>q : q var m: M; >m : M diff --git a/tests/baselines/reference/extBaseClass1.types b/tests/baselines/reference/extBaseClass1.types index a2c5d5a6bc69c..1ab2ec3ba5350 100644 --- a/tests/baselines/reference/extBaseClass1.types +++ b/tests/baselines/reference/extBaseClass1.types @@ -12,7 +12,7 @@ module M { export class C extends B { >C : C ->B : typeof B +>B : B } } @@ -21,7 +21,7 @@ module M { export class C2 extends B { >C2 : C2 ->B : typeof B +>B : B } } @@ -30,7 +30,7 @@ module N { export class C3 extends M.B { >C3 : C3 ->M.B : typeof M.B +>M.B : M.B >M : typeof M >B : typeof M.B } diff --git a/tests/baselines/reference/extendAndImplementTheSameBaseType.types b/tests/baselines/reference/extendAndImplementTheSameBaseType.types index da14105f398a3..136308b3887a9 100644 --- a/tests/baselines/reference/extendAndImplementTheSameBaseType.types +++ b/tests/baselines/reference/extendAndImplementTheSameBaseType.types @@ -10,7 +10,7 @@ class C { } class D extends C implements C { >D : D ->C : typeof C +>C : C >C : C baz() { } diff --git a/tests/baselines/reference/extendBaseClassBeforeItsDeclared.types b/tests/baselines/reference/extendBaseClassBeforeItsDeclared.types index b386e494bd750..a9ad130d4749a 100644 --- a/tests/baselines/reference/extendBaseClassBeforeItsDeclared.types +++ b/tests/baselines/reference/extendBaseClassBeforeItsDeclared.types @@ -1,7 +1,7 @@ === tests/cases/compiler/extendBaseClassBeforeItsDeclared.ts === class derived extends base { } >derived : derived ->base : typeof base +>base : base class base { constructor (public n: number) { } } >base : base diff --git a/tests/baselines/reference/extendNonClassSymbol1.types b/tests/baselines/reference/extendNonClassSymbol1.types index 1c627656ce0c0..72ae7b4566c2b 100644 --- a/tests/baselines/reference/extendNonClassSymbol1.types +++ b/tests/baselines/reference/extendNonClassSymbol1.types @@ -9,5 +9,5 @@ var x = A; class C extends x { } // error, could not find symbol xs >C : C ->x : typeof A +>x : A diff --git a/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.types b/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.types index 8bc97eb26d895..b5323ae5c85ec 100644 --- a/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.types +++ b/tests/baselines/reference/extendingClassFromAliasAndUsageInIndexer.types @@ -61,7 +61,7 @@ import Backbone = require("extendingClassFromAliasAndUsageInIndexer_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone.Model : typeof Backbone.Model +>Backbone.Model : Backbone.Model >Backbone : typeof Backbone >Model : typeof Backbone.Model @@ -74,7 +74,7 @@ import Backbone = require("extendingClassFromAliasAndUsageInIndexer_backbone"); export class VisualizationModel extends Backbone.Model { >VisualizationModel : VisualizationModel ->Backbone.Model : typeof Backbone.Model +>Backbone.Model : Backbone.Model >Backbone : typeof Backbone >Model : typeof Backbone.Model diff --git a/tests/baselines/reference/functionImplementations.types b/tests/baselines/reference/functionImplementations.types index 674c111e34105..f277821d69628 100644 --- a/tests/baselines/reference/functionImplementations.types +++ b/tests/baselines/reference/functionImplementations.types @@ -190,7 +190,7 @@ class Base { private m; } class Derived extends Base { private q; } >Derived : Derived ->Base : typeof Base +>Base : Base >q : any var b: Base; @@ -311,7 +311,7 @@ function f6(): number { class Derived2 extends Base { private r: string; } >Derived2 : Derived2 ->Base : typeof Base +>Base : Base >r : string class AnotherClass { private x } diff --git a/tests/baselines/reference/functionSubtypingOfVarArgs.types b/tests/baselines/reference/functionSubtypingOfVarArgs.types index 48f8b272560bd..ebd706e94cfb9 100644 --- a/tests/baselines/reference/functionSubtypingOfVarArgs.types +++ b/tests/baselines/reference/functionSubtypingOfVarArgs.types @@ -24,7 +24,7 @@ class EventBase { class StringEvent extends EventBase { // should work >StringEvent : StringEvent ->EventBase : typeof EventBase +>EventBase : EventBase add(listener: (items: string) => void ) { // valid, items is subtype of args >add : (listener: (items: string) => void) => void diff --git a/tests/baselines/reference/functionSubtypingOfVarArgs2.types b/tests/baselines/reference/functionSubtypingOfVarArgs2.types index e2d344dabca12..5e2b14ffc7a67 100644 --- a/tests/baselines/reference/functionSubtypingOfVarArgs2.types +++ b/tests/baselines/reference/functionSubtypingOfVarArgs2.types @@ -25,7 +25,7 @@ class EventBase { class StringEvent extends EventBase { >StringEvent : StringEvent ->EventBase : typeof EventBase +>EventBase : EventBase add(listener: (items: string, moreitems: number) => void ) { >add : (listener: (items: string, moreitems: number) => void) => void diff --git a/tests/baselines/reference/generatedContextualTyping.types b/tests/baselines/reference/generatedContextualTyping.types index 9b6a332a63e81..e8f434d31a88c 100644 --- a/tests/baselines/reference/generatedContextualTyping.types +++ b/tests/baselines/reference/generatedContextualTyping.types @@ -5,12 +5,12 @@ class Base { private p; } class Derived1 extends Base { private m; } >Derived1 : Derived1 ->Base : typeof Base +>Base : Base >m : any class Derived2 extends Base { private n; } >Derived2 : Derived2 ->Base : typeof Base +>Base : Base >n : any interface Genric { func(n: T[]); } diff --git a/tests/baselines/reference/generatorTypeCheck17.types b/tests/baselines/reference/generatorTypeCheck17.types index 2768176c43107..0ea7212040b72 100644 --- a/tests/baselines/reference/generatorTypeCheck17.types +++ b/tests/baselines/reference/generatorTypeCheck17.types @@ -5,7 +5,7 @@ class Foo { x: number } class Bar extends Foo { y: string } >Bar : Bar ->Foo : typeof Foo +>Foo : Foo >y : string function* g(): IterableIterator { diff --git a/tests/baselines/reference/generatorTypeCheck19.types b/tests/baselines/reference/generatorTypeCheck19.types index 6877934ff0c9f..2b4f1396c2eb8 100644 --- a/tests/baselines/reference/generatorTypeCheck19.types +++ b/tests/baselines/reference/generatorTypeCheck19.types @@ -5,7 +5,7 @@ class Foo { x: number } class Bar extends Foo { y: string } >Bar : Bar ->Foo : typeof Foo +>Foo : Foo >y : string function* g(): IterableIterator { diff --git a/tests/baselines/reference/genericBaseClassLiteralProperty.types b/tests/baselines/reference/genericBaseClassLiteralProperty.types index 399e7f603afbc..87f1c55c42d42 100644 --- a/tests/baselines/reference/genericBaseClassLiteralProperty.types +++ b/tests/baselines/reference/genericBaseClassLiteralProperty.types @@ -14,7 +14,7 @@ class BaseClass { class SubClass extends BaseClass { >SubClass : SubClass ->BaseClass : typeof BaseClass +>BaseClass : BaseClass public Error(): void { >Error : () => void diff --git a/tests/baselines/reference/genericBaseClassLiteralProperty2.types b/tests/baselines/reference/genericBaseClassLiteralProperty2.types index db89f73db480b..271aa190037fa 100644 --- a/tests/baselines/reference/genericBaseClassLiteralProperty2.types +++ b/tests/baselines/reference/genericBaseClassLiteralProperty2.types @@ -24,7 +24,7 @@ class BaseCollection2 { class DataView2 extends BaseCollection2 { >DataView2 : DataView2 ->BaseCollection2 : typeof BaseCollection2 +>BaseCollection2 : BaseCollection2 >CollectionItem2 : CollectionItem2 fillItems(item: CollectionItem2) { diff --git a/tests/baselines/reference/genericCallWithConstraintsTypeArgumentInference.types b/tests/baselines/reference/genericCallWithConstraintsTypeArgumentInference.types index 29b41e12ee663..dcff9ef8a1698 100644 --- a/tests/baselines/reference/genericCallWithConstraintsTypeArgumentInference.types +++ b/tests/baselines/reference/genericCallWithConstraintsTypeArgumentInference.types @@ -7,12 +7,12 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : typeof Base +>Base : Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : typeof Derived +>Derived : Derived >baz : string var b: Base; diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgs2.types b/tests/baselines/reference/genericCallWithObjectTypeArgs2.types index 7178caaef4f1c..08bce90b5de5c 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgs2.types +++ b/tests/baselines/reference/genericCallWithObjectTypeArgs2.types @@ -7,14 +7,14 @@ class Base { } class Derived extends Base { >Derived : Derived ->Base : typeof Base +>Base : Base y: string; >y : string } class Derived2 extends Base { >Derived2 : Derived2 ->Base : typeof Base +>Base : Base z: string; >z : string diff --git a/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints2.types b/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints2.types index a870a02420a3e..8ffa07252bc9c 100644 --- a/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints2.types +++ b/tests/baselines/reference/genericCallWithObjectTypeArgsAndConstraints2.types @@ -10,7 +10,7 @@ class Base { } class Derived extends Base { >Derived : Derived ->Base : typeof Base +>Base : Base y: string; >y : string diff --git a/tests/baselines/reference/genericCallbacksAndClassHierarchy.types b/tests/baselines/reference/genericCallbacksAndClassHierarchy.types index 419ec87485902..cb12737a9370b 100644 --- a/tests/baselines/reference/genericCallbacksAndClassHierarchy.types +++ b/tests/baselines/reference/genericCallbacksAndClassHierarchy.types @@ -31,7 +31,7 @@ module M { export class B extends C1> { } >B : B >T : T ->C1 : typeof C1 +>C1 : C1> >A : A >T : T diff --git a/tests/baselines/reference/genericClassInheritsConstructorFromNonGenericClass.types b/tests/baselines/reference/genericClassInheritsConstructorFromNonGenericClass.types index 74ad65993e4e5..28daf6d38ee63 100644 --- a/tests/baselines/reference/genericClassInheritsConstructorFromNonGenericClass.types +++ b/tests/baselines/reference/genericClassInheritsConstructorFromNonGenericClass.types @@ -1,12 +1,12 @@ === tests/cases/compiler/genericClassInheritsConstructorFromNonGenericClass.ts === class A extends B { } >A : A ->B : typeof B +>B : B class B extends C { } >B : B >U : U ->C : typeof C +>C : C class C { >C : C diff --git a/tests/baselines/reference/genericClassPropertyInheritanceSpecialization.types b/tests/baselines/reference/genericClassPropertyInheritanceSpecialization.types index ce93a483415d5..88ef74283aebd 100644 --- a/tests/baselines/reference/genericClassPropertyInheritanceSpecialization.types +++ b/tests/baselines/reference/genericClassPropertyInheritanceSpecialization.types @@ -192,7 +192,7 @@ module PortalFx.ViewModels.Controls.Validators { export class Validator extends Portal.Controls.Validators.Validator { >Validator : Validator >TValue : TValue ->Portal.Controls.Validators.Validator : typeof Portal.Controls.Validators.Validator +>Portal.Controls.Validators.Validator : Portal.Controls.Validators.Validator >Portal.Controls.Validators : typeof Portal.Controls.Validators >Portal.Controls : typeof Portal.Controls >Portal : typeof Portal diff --git a/tests/baselines/reference/genericClassStaticMethod.types b/tests/baselines/reference/genericClassStaticMethod.types index fb38898d8a534..3d4c02317d637 100644 --- a/tests/baselines/reference/genericClassStaticMethod.types +++ b/tests/baselines/reference/genericClassStaticMethod.types @@ -11,7 +11,7 @@ class Foo { class Bar extends Foo { >Bar : Bar >T : T ->Foo : typeof Foo +>Foo : Foo >T : T static getFoo() { diff --git a/tests/baselines/reference/genericClasses3.types b/tests/baselines/reference/genericClasses3.types index 6bf78807e89d4..ea0ebcd2cc732 100644 --- a/tests/baselines/reference/genericClasses3.types +++ b/tests/baselines/reference/genericClasses3.types @@ -15,7 +15,7 @@ class B { class C extends B { >C : C >T : T ->B : typeof B +>B : B >T : T public x: T; diff --git a/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes.types b/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes.types index 2b870347f3c04..9a4b209bc97d5 100644 --- a/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes.types +++ b/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes.types @@ -53,7 +53,7 @@ module EndGate.Tweening { export class NumberTween extends Tween{ >NumberTween : NumberTween ->Tween : typeof Tween +>Tween : Tween constructor(from: number) { >from : number diff --git a/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes2.types b/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes2.types index 4e8a3f094d9d4..ba42e42ae0cad 100644 --- a/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes2.types +++ b/tests/baselines/reference/genericConstraintOnExtendedBuiltinTypes2.types @@ -52,7 +52,7 @@ module EndGate.Tweening { export class NumberTween extends Tween{ >NumberTween : NumberTween ->Tween : typeof Tween +>Tween : Tween >Number : Number constructor(from: number) { diff --git a/tests/baselines/reference/genericPrototypeProperty2.types b/tests/baselines/reference/genericPrototypeProperty2.types index 2e3594f6a22e3..1c95041b65035 100644 --- a/tests/baselines/reference/genericPrototypeProperty2.types +++ b/tests/baselines/reference/genericPrototypeProperty2.types @@ -15,7 +15,7 @@ class MyEvent extends BaseEvent { >MyEvent : MyEvent >T : T >EventTarget : EventTarget ->BaseEvent : typeof BaseEvent +>BaseEvent : BaseEvent target: T; >target : T @@ -31,7 +31,7 @@ class BaseEventWrapper { class MyEventWrapper extends BaseEventWrapper { >MyEventWrapper : MyEventWrapper ->BaseEventWrapper : typeof BaseEventWrapper +>BaseEventWrapper : BaseEventWrapper t: MyEvent; // any satisfies constraint and passes assignability check between 'target' properties >t : MyEvent diff --git a/tests/baselines/reference/genericPrototypeProperty3.types b/tests/baselines/reference/genericPrototypeProperty3.types index aaa319f8dcca9..5a19016464224 100644 --- a/tests/baselines/reference/genericPrototypeProperty3.types +++ b/tests/baselines/reference/genericPrototypeProperty3.types @@ -9,7 +9,7 @@ class BaseEvent { class MyEvent extends BaseEvent { // T is instantiated to any in the prototype, which is assignable to {} >MyEvent : MyEvent >T : T ->BaseEvent : typeof BaseEvent +>BaseEvent : BaseEvent target: T; >target : T @@ -25,7 +25,7 @@ class BaseEventWrapper { class MyEventWrapper extends BaseEventWrapper { >MyEventWrapper : MyEventWrapper ->BaseEventWrapper : typeof BaseEventWrapper +>BaseEventWrapper : BaseEventWrapper t: MyEvent; >t : MyEvent diff --git a/tests/baselines/reference/genericRecursiveImplicitConstructorErrors2.types b/tests/baselines/reference/genericRecursiveImplicitConstructorErrors2.types index 52ec7e4c5bc4d..2f62a20c41521 100644 --- a/tests/baselines/reference/genericRecursiveImplicitConstructorErrors2.types +++ b/tests/baselines/reference/genericRecursiveImplicitConstructorErrors2.types @@ -62,7 +62,7 @@ module TypeScript2 { >A : A >B : B >C : C ->PullSymbol : typeof PullSymbol +>PullSymbol : PullSymbol } } diff --git a/tests/baselines/reference/genericWithIndexerOfTypeParameterType2.types b/tests/baselines/reference/genericWithIndexerOfTypeParameterType2.types index c30eda7f9ee83..2005604c83cb3 100644 --- a/tests/baselines/reference/genericWithIndexerOfTypeParameterType2.types +++ b/tests/baselines/reference/genericWithIndexerOfTypeParameterType2.types @@ -12,7 +12,7 @@ export class Collection { export class List extends Collection{ >List : List ->Collection : typeof Collection +>Collection : Collection >ListItem : ListItem Bar() {} @@ -24,7 +24,7 @@ export class CollectionItem {} export class ListItem extends CollectionItem { >ListItem : ListItem ->CollectionItem : typeof CollectionItem +>CollectionItem : CollectionItem __isNew: boolean; >__isNew : boolean diff --git a/tests/baselines/reference/heterogeneousArrayLiterals.types b/tests/baselines/reference/heterogeneousArrayLiterals.types index 8585ef5931628..ecfbf75e864c4 100644 --- a/tests/baselines/reference/heterogeneousArrayLiterals.types +++ b/tests/baselines/reference/heterogeneousArrayLiterals.types @@ -121,12 +121,12 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : typeof Base +>Base : Base >bar : string class Derived2 extends Base { baz: string; } >Derived2 : Derived2 ->Base : typeof Base +>Base : Base >baz : string var base: Base; diff --git a/tests/baselines/reference/ifDoWhileStatements.types b/tests/baselines/reference/ifDoWhileStatements.types index 42668f96f2264..92a9df6a4dd7f 100644 --- a/tests/baselines/reference/ifDoWhileStatements.types +++ b/tests/baselines/reference/ifDoWhileStatements.types @@ -19,7 +19,7 @@ class C implements I { class C2 extends C { >C2 : C2 ->C : typeof C +>C : C valid: boolean; >valid : boolean diff --git a/tests/baselines/reference/importShadowsGlobalName.types b/tests/baselines/reference/importShadowsGlobalName.types index 973f81287c836..a1f1106f1b828 100644 --- a/tests/baselines/reference/importShadowsGlobalName.types +++ b/tests/baselines/reference/importShadowsGlobalName.types @@ -4,7 +4,7 @@ import Error = require('Foo'); class Bar extends Error {} >Bar : Bar ->Error : typeof Error +>Error : Error export = Bar; >Bar : Bar diff --git a/tests/baselines/reference/importUsedInExtendsList1.types b/tests/baselines/reference/importUsedInExtendsList1.types index 120f5a3144419..3c1b69f5a83a8 100644 --- a/tests/baselines/reference/importUsedInExtendsList1.types +++ b/tests/baselines/reference/importUsedInExtendsList1.types @@ -5,7 +5,7 @@ import foo = require('importUsedInExtendsList1_require'); class Sub extends foo.Super { } >Sub : Sub ->foo.Super : typeof foo.Super +>foo.Super : foo.Super >foo : typeof foo >Super : typeof foo.Super diff --git a/tests/baselines/reference/infinitelyExpandingTypesNonGenericBase.types b/tests/baselines/reference/infinitelyExpandingTypesNonGenericBase.types index a09c8b0f44804..9190ef15779ab 100644 --- a/tests/baselines/reference/infinitelyExpandingTypesNonGenericBase.types +++ b/tests/baselines/reference/infinitelyExpandingTypesNonGenericBase.types @@ -16,7 +16,7 @@ class Base { class A extends Base { >A : A >T : T ->Base : typeof Base +>Base : Base options: Options[]>; >options : Options[]> diff --git a/tests/baselines/reference/inheritSameNamePrivatePropertiesFromSameOrigin.types b/tests/baselines/reference/inheritSameNamePrivatePropertiesFromSameOrigin.types index 086f5a20c6119..e8f05ca474d37 100644 --- a/tests/baselines/reference/inheritSameNamePrivatePropertiesFromSameOrigin.types +++ b/tests/baselines/reference/inheritSameNamePrivatePropertiesFromSameOrigin.types @@ -7,11 +7,11 @@ class B { } class C extends B { } >C : C ->B : typeof B +>B : B class C2 extends B { } >C2 : C2 ->B : typeof B +>B : B interface A extends C, C2 { // ok >A : A diff --git a/tests/baselines/reference/inheritanceMemberFuncOverridingMethod.types b/tests/baselines/reference/inheritanceMemberFuncOverridingMethod.types index 44b0e7db93709..3f170d1a6ece6 100644 --- a/tests/baselines/reference/inheritanceMemberFuncOverridingMethod.types +++ b/tests/baselines/reference/inheritanceMemberFuncOverridingMethod.types @@ -12,7 +12,7 @@ class a { class b extends a { >b : b ->a : typeof a +>a : a x() { >x : () => string diff --git a/tests/baselines/reference/inheritanceMemberPropertyOverridingProperty.types b/tests/baselines/reference/inheritanceMemberPropertyOverridingProperty.types index a2709758a5cf7..d5f846187f8c7 100644 --- a/tests/baselines/reference/inheritanceMemberPropertyOverridingProperty.types +++ b/tests/baselines/reference/inheritanceMemberPropertyOverridingProperty.types @@ -8,7 +8,7 @@ class a { class b extends a { >b : b ->a : typeof a +>a : a x: () => string; >x : () => string diff --git a/tests/baselines/reference/inheritanceOfGenericConstructorMethod1.types b/tests/baselines/reference/inheritanceOfGenericConstructorMethod1.types index 3005a22871ff4..d18b02ec8d0c0 100644 --- a/tests/baselines/reference/inheritanceOfGenericConstructorMethod1.types +++ b/tests/baselines/reference/inheritanceOfGenericConstructorMethod1.types @@ -6,7 +6,7 @@ class A { } class B extends A {} >B : B >T : T ->A : typeof A +>A : A >T : T var a = new A(); diff --git a/tests/baselines/reference/inheritanceOfGenericConstructorMethod2.types b/tests/baselines/reference/inheritanceOfGenericConstructorMethod2.types index d77e5b55e49f5..c976e905db7bc 100644 --- a/tests/baselines/reference/inheritanceOfGenericConstructorMethod2.types +++ b/tests/baselines/reference/inheritanceOfGenericConstructorMethod2.types @@ -14,14 +14,14 @@ module N { export class D1 extends M.C1 { } >D1 : D1 ->M.C1 : typeof M.C1 +>M.C1 : M.C1 >M : typeof M >C1 : typeof M.C1 export class D2 extends M.C2 { } >D2 : D2 >T : T ->M.C2 : typeof M.C2 +>M.C2 : M.C2 >M : typeof M >C2 : typeof M.C2 >T : T diff --git a/tests/baselines/reference/inheritanceStaticFuncOverridingMethod.types b/tests/baselines/reference/inheritanceStaticFuncOverridingMethod.types index e2ddfcb2254a5..22fa0a6660f14 100644 --- a/tests/baselines/reference/inheritanceStaticFuncOverridingMethod.types +++ b/tests/baselines/reference/inheritanceStaticFuncOverridingMethod.types @@ -12,7 +12,7 @@ class a { class b extends a { >b : b ->a : typeof a +>a : a static x() { >x : () => string diff --git a/tests/baselines/reference/inheritanceStaticFuncOverridingPropertyOfFuncType.types b/tests/baselines/reference/inheritanceStaticFuncOverridingPropertyOfFuncType.types index 9e7372f25d05e..a7df20382ec42 100644 --- a/tests/baselines/reference/inheritanceStaticFuncOverridingPropertyOfFuncType.types +++ b/tests/baselines/reference/inheritanceStaticFuncOverridingPropertyOfFuncType.types @@ -8,7 +8,7 @@ class a { class b extends a { >b : b ->a : typeof a +>a : a static x() { >x : () => string diff --git a/tests/baselines/reference/inheritanceStaticFunctionOverridingInstanceProperty.types b/tests/baselines/reference/inheritanceStaticFunctionOverridingInstanceProperty.types index 624ea629e33d7..4742dde63f6bf 100644 --- a/tests/baselines/reference/inheritanceStaticFunctionOverridingInstanceProperty.types +++ b/tests/baselines/reference/inheritanceStaticFunctionOverridingInstanceProperty.types @@ -8,7 +8,7 @@ class a { class b extends a { >b : b ->a : typeof a +>a : a static x() { >x : () => string diff --git a/tests/baselines/reference/inheritanceStaticMembersCompatible.types b/tests/baselines/reference/inheritanceStaticMembersCompatible.types index 5bec0707b0448..cab8be9378552 100644 --- a/tests/baselines/reference/inheritanceStaticMembersCompatible.types +++ b/tests/baselines/reference/inheritanceStaticMembersCompatible.types @@ -9,7 +9,7 @@ class a { class b extends a { >b : b ->a : typeof a +>a : a static x: b; >x : b diff --git a/tests/baselines/reference/inheritanceStaticPropertyOverridingProperty.types b/tests/baselines/reference/inheritanceStaticPropertyOverridingProperty.types index 5d627af6788e3..958fb6723ccfa 100644 --- a/tests/baselines/reference/inheritanceStaticPropertyOverridingProperty.types +++ b/tests/baselines/reference/inheritanceStaticPropertyOverridingProperty.types @@ -8,7 +8,7 @@ class a { class b extends a { >b : b ->a : typeof a +>a : a static x: () => string; >x : () => string diff --git a/tests/baselines/reference/instantiatedReturnTypeContravariance.types b/tests/baselines/reference/instantiatedReturnTypeContravariance.types index de4199d835cf6..1de1b8b7151e7 100644 --- a/tests/baselines/reference/instantiatedReturnTypeContravariance.types +++ b/tests/baselines/reference/instantiatedReturnTypeContravariance.types @@ -28,7 +28,7 @@ return null; class d extends c { >d : d ->c : typeof c +>c : c foo(): B { >foo : () => B diff --git a/tests/baselines/reference/interfaceExtendsClass1.types b/tests/baselines/reference/interfaceExtendsClass1.types index 06c46488942ca..c2370f7fe7fa0 100644 --- a/tests/baselines/reference/interfaceExtendsClass1.types +++ b/tests/baselines/reference/interfaceExtendsClass1.types @@ -14,21 +14,21 @@ interface SelectableControl extends Control { } class Button extends Control { >Button : Button ->Control : typeof Control +>Control : Control select() { } >select : () => void } class TextBox extends Control { >TextBox : TextBox ->Control : typeof Control +>Control : Control select() { } >select : () => void } class Image extends Control { >Image : Image ->Control : typeof Control +>Control : Control } class Location { >Location : Location diff --git a/tests/baselines/reference/iterableArrayPattern11.types b/tests/baselines/reference/iterableArrayPattern11.types index 819743bad5941..3118e748d6f12 100644 --- a/tests/baselines/reference/iterableArrayPattern11.types +++ b/tests/baselines/reference/iterableArrayPattern11.types @@ -18,7 +18,7 @@ class Bar { x } class Foo extends Bar { y } >Foo : Foo ->Bar : typeof Bar +>Bar : Bar >y : any class FooIterator { diff --git a/tests/baselines/reference/iterableArrayPattern12.types b/tests/baselines/reference/iterableArrayPattern12.types index 2f468dc89ca7c..b32c2ff7dc82d 100644 --- a/tests/baselines/reference/iterableArrayPattern12.types +++ b/tests/baselines/reference/iterableArrayPattern12.types @@ -18,7 +18,7 @@ class Bar { x } class Foo extends Bar { y } >Foo : Foo ->Bar : typeof Bar +>Bar : Bar >y : any class FooIterator { diff --git a/tests/baselines/reference/iterableArrayPattern13.types b/tests/baselines/reference/iterableArrayPattern13.types index cc3a15d85d419..556a871f5a862 100644 --- a/tests/baselines/reference/iterableArrayPattern13.types +++ b/tests/baselines/reference/iterableArrayPattern13.types @@ -16,7 +16,7 @@ class Bar { x } class Foo extends Bar { y } >Foo : Foo ->Bar : typeof Bar +>Bar : Bar >y : any class FooIterator { diff --git a/tests/baselines/reference/iterableArrayPattern3.types b/tests/baselines/reference/iterableArrayPattern3.types index 91b359b4d685c..fed5c7f07d373 100644 --- a/tests/baselines/reference/iterableArrayPattern3.types +++ b/tests/baselines/reference/iterableArrayPattern3.types @@ -19,7 +19,7 @@ class Bar { x } class Foo extends Bar { y } >Foo : Foo ->Bar : typeof Bar +>Bar : Bar >y : any class FooIterator { diff --git a/tests/baselines/reference/iterableArrayPattern4.types b/tests/baselines/reference/iterableArrayPattern4.types index d4f697fe432e0..8f05a454b5346 100644 --- a/tests/baselines/reference/iterableArrayPattern4.types +++ b/tests/baselines/reference/iterableArrayPattern4.types @@ -20,7 +20,7 @@ class Bar { x } class Foo extends Bar { y } >Foo : Foo ->Bar : typeof Bar +>Bar : Bar >y : any class FooIterator { diff --git a/tests/baselines/reference/iterableArrayPattern9.types b/tests/baselines/reference/iterableArrayPattern9.types index c58f87fcfdd73..03cfa31b621af 100644 --- a/tests/baselines/reference/iterableArrayPattern9.types +++ b/tests/baselines/reference/iterableArrayPattern9.types @@ -12,7 +12,7 @@ class Bar { x } class Foo extends Bar { y } >Foo : Foo ->Bar : typeof Bar +>Bar : Bar >y : any class FooIterator { diff --git a/tests/baselines/reference/localTypes1.types b/tests/baselines/reference/localTypes1.types index cfab2a2f9b466..1770a36edb7cc 100644 --- a/tests/baselines/reference/localTypes1.types +++ b/tests/baselines/reference/localTypes1.types @@ -340,7 +340,7 @@ function f6() { class B extends A { >B : B ->A : typeof A +>A : A b: string; >b : string @@ -350,7 +350,7 @@ function f6() { class C extends B { >C : C ->B : typeof B +>B : B c: string; >c : string diff --git a/tests/baselines/reference/m7Bugs.types b/tests/baselines/reference/m7Bugs.types index 1c676f00e97d6..fa627f20cf72b 100644 --- a/tests/baselines/reference/m7Bugs.types +++ b/tests/baselines/reference/m7Bugs.types @@ -41,7 +41,7 @@ class C1 { class C2 extends C1 {} >C2 : C2 ->C1 : typeof C1 +>C1 : C1 var y1: C1 = new C2(); >y1 : C1 diff --git a/tests/baselines/reference/moduleImportedForTypeArgumentPosition.types b/tests/baselines/reference/moduleImportedForTypeArgumentPosition.types index 3e3a6b5cc1de0..d3ef4e4e9ce9a 100644 --- a/tests/baselines/reference/moduleImportedForTypeArgumentPosition.types +++ b/tests/baselines/reference/moduleImportedForTypeArgumentPosition.types @@ -9,7 +9,7 @@ class C1{ } class Test1 extends C1 { >Test1 : Test1 ->C1 : typeof C1 +>C1 : C1 >M2 : any >M2C : M2.M2C } diff --git a/tests/baselines/reference/moduleWithStatementsOfEveryKind.types b/tests/baselines/reference/moduleWithStatementsOfEveryKind.types index e2d2ef16773fb..c6f4be850be65 100644 --- a/tests/baselines/reference/moduleWithStatementsOfEveryKind.types +++ b/tests/baselines/reference/moduleWithStatementsOfEveryKind.types @@ -18,14 +18,14 @@ module A { class B extends AA implements I { id: number } >B : B ->AA : typeof AA +>AA : AA >I : I >id : number class BB extends A { >BB : BB >T : T ->A : typeof A +>A : A id: number; >id : number @@ -106,14 +106,14 @@ module Y { export class B extends AA implements I { id: number } >B : B ->AA : typeof AA +>AA : AA >I : I >id : number export class BB extends A { >BB : BB >T : T ->A : typeof A +>A : A id: number; >id : number diff --git a/tests/baselines/reference/mutuallyRecursiveGenericBaseTypes2.types b/tests/baselines/reference/mutuallyRecursiveGenericBaseTypes2.types index fd0f50344886a..ac722f8a063af 100644 --- a/tests/baselines/reference/mutuallyRecursiveGenericBaseTypes2.types +++ b/tests/baselines/reference/mutuallyRecursiveGenericBaseTypes2.types @@ -13,7 +13,7 @@ class foo class foo2 extends foo { >foo2 : foo2 >T : T ->foo : typeof foo +>foo : foo >T : T } diff --git a/tests/baselines/reference/noEmitHelpers.types b/tests/baselines/reference/noEmitHelpers.types index 07c16def25d16..01c5d5acb3dc9 100644 --- a/tests/baselines/reference/noEmitHelpers.types +++ b/tests/baselines/reference/noEmitHelpers.types @@ -5,5 +5,5 @@ class A { } class B extends A { } >B : B ->A : typeof A +>A : A diff --git a/tests/baselines/reference/nonGenericClassExtendingGenericClassWithAny.types b/tests/baselines/reference/nonGenericClassExtendingGenericClassWithAny.types index 2dfbe2e6ffcee..4eb4c61aedf4d 100644 --- a/tests/baselines/reference/nonGenericClassExtendingGenericClassWithAny.types +++ b/tests/baselines/reference/nonGenericClassExtendingGenericClassWithAny.types @@ -10,5 +10,5 @@ class Foo { class Bar extends Foo { } // Valid >Bar : Bar ->Foo : typeof Foo +>Foo : Foo diff --git a/tests/baselines/reference/numericIndexerConstraint3.types b/tests/baselines/reference/numericIndexerConstraint3.types index dfb58408bb5a2..2e249c89b8c84 100644 --- a/tests/baselines/reference/numericIndexerConstraint3.types +++ b/tests/baselines/reference/numericIndexerConstraint3.types @@ -8,7 +8,7 @@ class A { class B extends A { >B : B ->A : typeof A +>A : A bar: string; >bar : string diff --git a/tests/baselines/reference/numericIndexerConstraint4.types b/tests/baselines/reference/numericIndexerConstraint4.types index e174b6718a12c..97e72b5088d93 100644 --- a/tests/baselines/reference/numericIndexerConstraint4.types +++ b/tests/baselines/reference/numericIndexerConstraint4.types @@ -8,7 +8,7 @@ class A { class B extends A { >B : B ->A : typeof A +>A : A bar: string; >bar : string diff --git a/tests/baselines/reference/objectTypesIdentityWithNumericIndexers1.types b/tests/baselines/reference/objectTypesIdentityWithNumericIndexers1.types index f933c3a9e81e0..2284d06ffbd0f 100644 --- a/tests/baselines/reference/objectTypesIdentityWithNumericIndexers1.types +++ b/tests/baselines/reference/objectTypesIdentityWithNumericIndexers1.types @@ -33,12 +33,12 @@ interface I { class PA extends A { >PA : PA ->A : typeof A +>A : A } class PB extends B { >PB : PB ->B : typeof B +>B : B } var a: { diff --git a/tests/baselines/reference/objectTypesIdentityWithNumericIndexers2.types b/tests/baselines/reference/objectTypesIdentityWithNumericIndexers2.types index d6de1fa313be1..1a580297b1b3e 100644 --- a/tests/baselines/reference/objectTypesIdentityWithNumericIndexers2.types +++ b/tests/baselines/reference/objectTypesIdentityWithNumericIndexers2.types @@ -7,7 +7,7 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : typeof Base +>Base : Base >bar : string class A { @@ -45,12 +45,12 @@ interface I { class PA extends A { >PA : PA ->A : typeof A +>A : A } class PB extends B { >PB : PB ->B : typeof B +>B : B } var a: { diff --git a/tests/baselines/reference/objectTypesIdentityWithNumericIndexers3.types b/tests/baselines/reference/objectTypesIdentityWithNumericIndexers3.types index 3a80a2420dfc1..ae384bbb4db36 100644 --- a/tests/baselines/reference/objectTypesIdentityWithNumericIndexers3.types +++ b/tests/baselines/reference/objectTypesIdentityWithNumericIndexers3.types @@ -33,12 +33,12 @@ interface I { class PA extends A { >PA : PA ->A : typeof A +>A : A } class PB extends B { >PB : PB ->B : typeof B +>B : B } var a: { diff --git a/tests/baselines/reference/objectTypesIdentityWithPrivates.types b/tests/baselines/reference/objectTypesIdentityWithPrivates.types index cea0c3a155956..c828f45ac5ab2 100644 --- a/tests/baselines/reference/objectTypesIdentityWithPrivates.types +++ b/tests/baselines/reference/objectTypesIdentityWithPrivates.types @@ -33,12 +33,12 @@ interface I { class PA extends A { >PA : PA ->A : typeof A +>A : A } class PB extends B { >PB : PB ->B : typeof B +>B : B } var a: { foo: string; } diff --git a/tests/baselines/reference/objectTypesIdentityWithPrivates2.types b/tests/baselines/reference/objectTypesIdentityWithPrivates2.types index ea04e50fb0d2c..a29edc751624a 100644 --- a/tests/baselines/reference/objectTypesIdentityWithPrivates2.types +++ b/tests/baselines/reference/objectTypesIdentityWithPrivates2.types @@ -13,7 +13,7 @@ class C { class D extends C { >D : D >T : T ->C : typeof C +>C : C >T : T } diff --git a/tests/baselines/reference/objectTypesIdentityWithStringIndexers.types b/tests/baselines/reference/objectTypesIdentityWithStringIndexers.types index ed4ba4f3d36f4..a7eeb67250477 100644 --- a/tests/baselines/reference/objectTypesIdentityWithStringIndexers.types +++ b/tests/baselines/reference/objectTypesIdentityWithStringIndexers.types @@ -33,12 +33,12 @@ interface I { class PA extends A { >PA : PA ->A : typeof A +>A : A } class PB extends B { >PB : PB ->B : typeof B +>B : B } var a: { diff --git a/tests/baselines/reference/objectTypesIdentityWithStringIndexers2.types b/tests/baselines/reference/objectTypesIdentityWithStringIndexers2.types index e0de7d5a94d17..d13942521170d 100644 --- a/tests/baselines/reference/objectTypesIdentityWithStringIndexers2.types +++ b/tests/baselines/reference/objectTypesIdentityWithStringIndexers2.types @@ -7,7 +7,7 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : typeof Base +>Base : Base >bar : string class A { @@ -45,12 +45,12 @@ interface I { class PA extends A { >PA : PA ->A : typeof A +>A : A } class PB extends B { >PB : PB ->B : typeof B +>B : B } var a: { diff --git a/tests/baselines/reference/optionalConstructorArgInSuper.types b/tests/baselines/reference/optionalConstructorArgInSuper.types index 91c12e3421792..26d4fcb9abb74 100644 --- a/tests/baselines/reference/optionalConstructorArgInSuper.types +++ b/tests/baselines/reference/optionalConstructorArgInSuper.types @@ -11,7 +11,7 @@ class Base { } class Derived extends Base { >Derived : Derived ->Base : typeof Base +>Base : Base } var d = new Derived(); // bug caused an error here, couldn't select overload >d : Derived diff --git a/tests/baselines/reference/optionalParamInOverride.types b/tests/baselines/reference/optionalParamInOverride.types index 7bc60b3fe1d47..f4530dace61a3 100644 --- a/tests/baselines/reference/optionalParamInOverride.types +++ b/tests/baselines/reference/optionalParamInOverride.types @@ -7,7 +7,7 @@ class Z { } class Y extends Z { >Y : Y ->Z : typeof Z +>Z : Z public func(value?: any): void { } >func : (value?: any) => void diff --git a/tests/baselines/reference/overloadOnConstConstraintChecks1.types b/tests/baselines/reference/overloadOnConstConstraintChecks1.types index d3c10e9cbd92a..cc561eb6e21c6 100644 --- a/tests/baselines/reference/overloadOnConstConstraintChecks1.types +++ b/tests/baselines/reference/overloadOnConstConstraintChecks1.types @@ -5,17 +5,17 @@ class Base { foo() { } } class Derived1 extends Base { bar() { } } >Derived1 : Derived1 ->Base : typeof Base +>Base : Base >bar : () => void class Derived2 extends Base { baz() { } } >Derived2 : Derived2 ->Base : typeof Base +>Base : Base >baz : () => void class Derived3 extends Base { biz() { } } >Derived3 : Derived3 ->Base : typeof Base +>Base : Base >biz : () => void interface MyDoc { // Document diff --git a/tests/baselines/reference/overloadOnConstConstraintChecks2.types b/tests/baselines/reference/overloadOnConstConstraintChecks2.types index f571ee0275ebf..36fa89dec4a5a 100644 --- a/tests/baselines/reference/overloadOnConstConstraintChecks2.types +++ b/tests/baselines/reference/overloadOnConstConstraintChecks2.types @@ -4,11 +4,11 @@ class A {} class B extends A {} >B : B ->A : typeof A +>A : A class C extends A { >C : C ->A : typeof A +>A : A public foo() { } >foo : () => void diff --git a/tests/baselines/reference/overloadOnConstConstraintChecks3.types b/tests/baselines/reference/overloadOnConstConstraintChecks3.types index aaf79e2f35b6c..94a03bb768070 100644 --- a/tests/baselines/reference/overloadOnConstConstraintChecks3.types +++ b/tests/baselines/reference/overloadOnConstConstraintChecks3.types @@ -6,11 +6,11 @@ class A { private x = 1} class B extends A {} >B : B ->A : typeof A +>A : A class C extends A { >C : C ->A : typeof A +>A : A public foo() { } >foo : () => void diff --git a/tests/baselines/reference/privacyClass.types b/tests/baselines/reference/privacyClass.types index 10edc47fec876..d42133ad9ec77 100644 --- a/tests/baselines/reference/privacyClass.types +++ b/tests/baselines/reference/privacyClass.types @@ -24,19 +24,19 @@ export module m1 { class m1_C1_private extends m1_c_public { >m1_C1_private : m1_C1_private ->m1_c_public : typeof m1_c_public +>m1_c_public : m1_c_public } class m1_C2_private extends m1_c_private { >m1_C2_private : m1_C2_private ->m1_c_private : typeof m1_c_private +>m1_c_private : m1_c_private } export class m1_C3_public extends m1_c_public { >m1_C3_public : m1_C3_public ->m1_c_public : typeof m1_c_public +>m1_c_public : m1_c_public } export class m1_C4_public extends m1_c_private { >m1_C4_public : m1_C4_public ->m1_c_private : typeof m1_c_private +>m1_c_private : m1_c_private } class m1_C5_private implements m1_i_public { @@ -58,25 +58,25 @@ export module m1 { class m1_C9_private extends m1_c_public implements m1_i_private, m1_i_public { >m1_C9_private : m1_C9_private ->m1_c_public : typeof m1_c_public +>m1_c_public : m1_c_public >m1_i_private : m1_i_private >m1_i_public : m1_i_public } class m1_C10_private extends m1_c_private implements m1_i_private, m1_i_public { >m1_C10_private : m1_C10_private ->m1_c_private : typeof m1_c_private +>m1_c_private : m1_c_private >m1_i_private : m1_i_private >m1_i_public : m1_i_public } export class m1_C11_public extends m1_c_public implements m1_i_private, m1_i_public { >m1_C11_public : m1_C11_public ->m1_c_public : typeof m1_c_public +>m1_c_public : m1_c_public >m1_i_private : m1_i_private >m1_i_public : m1_i_public } export class m1_C12_public extends m1_c_private implements m1_i_private, m1_i_public { >m1_C12_public : m1_C12_public ->m1_c_private : typeof m1_c_private +>m1_c_private : m1_c_private >m1_i_private : m1_i_private >m1_i_public : m1_i_public } @@ -108,19 +108,19 @@ module m2 { class m2_C1_private extends m2_c_public { >m2_C1_private : m2_C1_private ->m2_c_public : typeof m2_c_public +>m2_c_public : m2_c_public } class m2_C2_private extends m2_c_private { >m2_C2_private : m2_C2_private ->m2_c_private : typeof m2_c_private +>m2_c_private : m2_c_private } export class m2_C3_public extends m2_c_public { >m2_C3_public : m2_C3_public ->m2_c_public : typeof m2_c_public +>m2_c_public : m2_c_public } export class m2_C4_public extends m2_c_private { >m2_C4_public : m2_C4_public ->m2_c_private : typeof m2_c_private +>m2_c_private : m2_c_private } class m2_C5_private implements m2_i_public { @@ -142,25 +142,25 @@ module m2 { class m2_C9_private extends m2_c_public implements m2_i_private, m2_i_public { >m2_C9_private : m2_C9_private ->m2_c_public : typeof m2_c_public +>m2_c_public : m2_c_public >m2_i_private : m2_i_private >m2_i_public : m2_i_public } class m2_C10_private extends m2_c_private implements m2_i_private, m2_i_public { >m2_C10_private : m2_C10_private ->m2_c_private : typeof m2_c_private +>m2_c_private : m2_c_private >m2_i_private : m2_i_private >m2_i_public : m2_i_public } export class m2_C11_public extends m2_c_public implements m2_i_private, m2_i_public { >m2_C11_public : m2_C11_public ->m2_c_public : typeof m2_c_public +>m2_c_public : m2_c_public >m2_i_private : m2_i_private >m2_i_public : m2_i_public } export class m2_C12_public extends m2_c_private implements m2_i_private, m2_i_public { >m2_C12_public : m2_C12_public ->m2_c_private : typeof m2_c_private +>m2_c_private : m2_c_private >m2_i_private : m2_i_private >m2_i_public : m2_i_public } @@ -188,19 +188,19 @@ class glo_c_private { class glo_C1_private extends glo_c_public { >glo_C1_private : glo_C1_private ->glo_c_public : typeof glo_c_public +>glo_c_public : glo_c_public } class glo_C2_private extends glo_c_private { >glo_C2_private : glo_C2_private ->glo_c_private : typeof glo_c_private +>glo_c_private : glo_c_private } export class glo_C3_public extends glo_c_public { >glo_C3_public : glo_C3_public ->glo_c_public : typeof glo_c_public +>glo_c_public : glo_c_public } export class glo_C4_public extends glo_c_private { >glo_C4_public : glo_C4_public ->glo_c_private : typeof glo_c_private +>glo_c_private : glo_c_private } class glo_C5_private implements glo_i_public { @@ -222,25 +222,25 @@ export class glo_C8_public implements glo_i_private { class glo_C9_private extends glo_c_public implements glo_i_private, glo_i_public { >glo_C9_private : glo_C9_private ->glo_c_public : typeof glo_c_public +>glo_c_public : glo_c_public >glo_i_private : glo_i_private >glo_i_public : glo_i_public } class glo_C10_private extends glo_c_private implements glo_i_private, glo_i_public { >glo_C10_private : glo_C10_private ->glo_c_private : typeof glo_c_private +>glo_c_private : glo_c_private >glo_i_private : glo_i_private >glo_i_public : glo_i_public } export class glo_C11_public extends glo_c_public implements glo_i_private, glo_i_public { >glo_C11_public : glo_C11_public ->glo_c_public : typeof glo_c_public +>glo_c_public : glo_c_public >glo_i_private : glo_i_private >glo_i_public : glo_i_public } export class glo_C12_public extends glo_c_private implements glo_i_private, glo_i_public { >glo_C12_public : glo_C12_public ->glo_c_private : typeof glo_c_private +>glo_c_private : glo_c_private >glo_i_private : glo_i_private >glo_i_public : glo_i_public } diff --git a/tests/baselines/reference/privacyGloClass.types b/tests/baselines/reference/privacyGloClass.types index 5a5ee37f1a5a0..be0c8a74dccc2 100644 --- a/tests/baselines/reference/privacyGloClass.types +++ b/tests/baselines/reference/privacyGloClass.types @@ -24,19 +24,19 @@ module m1 { class m1_C1_private extends m1_c_public { >m1_C1_private : m1_C1_private ->m1_c_public : typeof m1_c_public +>m1_c_public : m1_c_public } class m1_C2_private extends m1_c_private { >m1_C2_private : m1_C2_private ->m1_c_private : typeof m1_c_private +>m1_c_private : m1_c_private } export class m1_C3_public extends m1_c_public { >m1_C3_public : m1_C3_public ->m1_c_public : typeof m1_c_public +>m1_c_public : m1_c_public } export class m1_C4_public extends m1_c_private { >m1_C4_public : m1_C4_public ->m1_c_private : typeof m1_c_private +>m1_c_private : m1_c_private } class m1_C5_private implements m1_i_public { @@ -58,25 +58,25 @@ module m1 { class m1_C9_private extends m1_c_public implements m1_i_private, m1_i_public { >m1_C9_private : m1_C9_private ->m1_c_public : typeof m1_c_public +>m1_c_public : m1_c_public >m1_i_private : m1_i_private >m1_i_public : m1_i_public } class m1_C10_private extends m1_c_private implements m1_i_private, m1_i_public { >m1_C10_private : m1_C10_private ->m1_c_private : typeof m1_c_private +>m1_c_private : m1_c_private >m1_i_private : m1_i_private >m1_i_public : m1_i_public } export class m1_C11_public extends m1_c_public implements m1_i_private, m1_i_public { >m1_C11_public : m1_C11_public ->m1_c_public : typeof m1_c_public +>m1_c_public : m1_c_public >m1_i_private : m1_i_private >m1_i_public : m1_i_public } export class m1_C12_public extends m1_c_private implements m1_i_private, m1_i_public { >m1_C12_public : m1_C12_public ->m1_c_private : typeof m1_c_private +>m1_c_private : m1_c_private >m1_i_private : m1_i_private >m1_i_public : m1_i_public } @@ -96,7 +96,7 @@ class glo_c_public { class glo_C3_public extends glo_c_public { >glo_C3_public : glo_C3_public ->glo_c_public : typeof glo_c_public +>glo_c_public : glo_c_public } class glo_C7_public implements glo_i_public { @@ -106,7 +106,7 @@ class glo_C7_public implements glo_i_public { class glo_C11_public extends glo_c_public implements glo_i_public { >glo_C11_public : glo_C11_public ->glo_c_public : typeof glo_c_public +>glo_c_public : glo_c_public >glo_i_public : glo_i_public } diff --git a/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints2.types b/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints2.types index fedeb79d7dac8..9ea015cc9ce2d 100644 --- a/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints2.types +++ b/tests/baselines/reference/propertyAccessOnTypeParameterWithConstraints2.types @@ -11,7 +11,7 @@ class A { class B extends A { >B : B ->A : typeof A +>A : A bar(): string { >bar : () => string diff --git a/tests/baselines/reference/protectedClassPropertyAccessibleWithinSubclass.types b/tests/baselines/reference/protectedClassPropertyAccessibleWithinSubclass.types index aad8bcb8c90fd..bd230239d47b9 100644 --- a/tests/baselines/reference/protectedClassPropertyAccessibleWithinSubclass.types +++ b/tests/baselines/reference/protectedClassPropertyAccessibleWithinSubclass.types @@ -13,7 +13,7 @@ class B { class C extends B { >C : C ->B : typeof B +>B : B protected get y() { return this.x; } >y : string diff --git a/tests/baselines/reference/recursiveBaseConstructorCreation1.types b/tests/baselines/reference/recursiveBaseConstructorCreation1.types index 081db0c0d51c5..4879fb260a3a2 100644 --- a/tests/baselines/reference/recursiveBaseConstructorCreation1.types +++ b/tests/baselines/reference/recursiveBaseConstructorCreation1.types @@ -9,7 +9,7 @@ public func(param: C2): any { } } class C2 extends C1 { } >C2 : C2 ->C1 : typeof C1 +>C1 : C1 var x = new C2(); // Valid >x : C2 diff --git a/tests/baselines/reference/recursiveBaseConstructorCreation2.types b/tests/baselines/reference/recursiveBaseConstructorCreation2.types index c2fbdc80aca69..00b72ee7d4fd1 100644 --- a/tests/baselines/reference/recursiveBaseConstructorCreation2.types +++ b/tests/baselines/reference/recursiveBaseConstructorCreation2.types @@ -5,7 +5,7 @@ declare class base } declare class abc extends base >abc : abc ->base : typeof base +>base : base { foo: xyz; >foo : xyz @@ -13,7 +13,7 @@ declare class abc extends base } declare class xyz extends abc >xyz : xyz ->abc : typeof abc +>abc : abc { } diff --git a/tests/baselines/reference/recursiveClassInstantiationsWithDefaultConstructors.types b/tests/baselines/reference/recursiveClassInstantiationsWithDefaultConstructors.types index dfaf97734f9a0..482ec707e49d5 100644 --- a/tests/baselines/reference/recursiveClassInstantiationsWithDefaultConstructors.types +++ b/tests/baselines/reference/recursiveClassInstantiationsWithDefaultConstructors.types @@ -18,7 +18,7 @@ public prefix: string = ""; } export class MemberNameArray extends MemberName { >MemberNameArray : MemberNameArray ->MemberName : typeof MemberName +>MemberName : MemberName } } diff --git a/tests/baselines/reference/recursiveComplicatedClasses.types b/tests/baselines/reference/recursiveComplicatedClasses.types index d9e4f40f28664..247b9ee27c562 100644 --- a/tests/baselines/reference/recursiveComplicatedClasses.types +++ b/tests/baselines/reference/recursiveComplicatedClasses.types @@ -39,15 +39,15 @@ class Symbol { } class InferenceSymbol extends Symbol { >InferenceSymbol : InferenceSymbol ->Symbol : typeof Symbol +>Symbol : Symbol } class ParameterSymbol extends InferenceSymbol { >ParameterSymbol : ParameterSymbol ->InferenceSymbol : typeof InferenceSymbol +>InferenceSymbol : InferenceSymbol } class TypeSymbol extends InferenceSymbol { >TypeSymbol : TypeSymbol ->InferenceSymbol : typeof InferenceSymbol +>InferenceSymbol : InferenceSymbol } diff --git a/tests/baselines/reference/recursivelySpecializedConstructorDeclaration.types b/tests/baselines/reference/recursivelySpecializedConstructorDeclaration.types index ee15a2a44ddfe..af9e13d4002d6 100644 --- a/tests/baselines/reference/recursivelySpecializedConstructorDeclaration.types +++ b/tests/baselines/reference/recursivelySpecializedConstructorDeclaration.types @@ -29,7 +29,7 @@ module MsPortal.Controls.Base.ItemList { export class ViewModel extends ItemValue { >ViewModel : ViewModel >TValue : TValue ->ItemValue : typeof ItemValue +>ItemValue : ItemValue >TValue : TValue } } diff --git a/tests/baselines/reference/resolvingClassDeclarationWhenInBaseTypeResolution.types b/tests/baselines/reference/resolvingClassDeclarationWhenInBaseTypeResolution.types index 82ac92209a473..c9025b565025c 100644 --- a/tests/baselines/reference/resolvingClassDeclarationWhenInBaseTypeResolution.types +++ b/tests/baselines/reference/resolvingClassDeclarationWhenInBaseTypeResolution.types @@ -4,7 +4,7 @@ module rionegrensis { export class caniventer extends Lanthanum.nitidus { >caniventer : caniventer ->Lanthanum.nitidus : typeof Lanthanum.nitidus +>Lanthanum.nitidus : Lanthanum.nitidus >Lanthanum : typeof Lanthanum >nitidus : typeof Lanthanum.nitidus >petrophilus : any @@ -90,7 +90,7 @@ module rionegrensis { >veraecrucis : veraecrucis >T0 : T0 >T1 : T1 ->trivirgatus.mixtus : typeof trivirgatus.mixtus +>trivirgatus.mixtus : trivirgatus.mixtus >trivirgatus : typeof trivirgatus >mixtus : typeof trivirgatus.mixtus >gabriellae : any @@ -516,7 +516,7 @@ module julianae { >oralis : oralis >T0 : T0 >T1 : T1 ->caurinus.psilurus : typeof caurinus.psilurus +>caurinus.psilurus : caurinus.psilurus >caurinus : typeof caurinus >psilurus : typeof caurinus.psilurus @@ -754,7 +754,7 @@ module julianae { } export class sumatrana extends Lanthanum.jugularis { >sumatrana : sumatrana ->Lanthanum.jugularis : typeof Lanthanum.jugularis +>Lanthanum.jugularis : Lanthanum.jugularis >Lanthanum : typeof Lanthanum >jugularis : typeof Lanthanum.jugularis @@ -1280,7 +1280,7 @@ module julianae { } export class durangae extends dogramacii.aurata { >durangae : durangae ->dogramacii.aurata : typeof dogramacii.aurata +>dogramacii.aurata : dogramacii.aurata >dogramacii : typeof dogramacii >aurata : typeof dogramacii.aurata @@ -1434,7 +1434,7 @@ module Lanthanum { >nitidus : nitidus >T0 : T0 >T1 : T1 ->argurus.gilbertii : typeof argurus.gilbertii +>argurus.gilbertii : argurus.gilbertii >argurus : typeof argurus >gilbertii : typeof argurus.gilbertii >lavali : any @@ -1604,7 +1604,7 @@ module Lanthanum { } export class megalonyx extends caurinus.johorensis { >megalonyx : megalonyx ->caurinus.johorensis : typeof caurinus.johorensis +>caurinus.johorensis : caurinus.johorensis >caurinus : typeof caurinus >johorensis : typeof caurinus.johorensis >caurinus : any @@ -1991,7 +1991,7 @@ module rendalli { export class zuluensis extends julianae.steerii { >zuluensis : zuluensis ->julianae.steerii : typeof julianae.steerii +>julianae.steerii : julianae.steerii >julianae : typeof julianae >steerii : typeof julianae.steerii @@ -2426,7 +2426,7 @@ module rendalli { >crenulata : crenulata >T0 : T0 >T1 : T1 ->trivirgatus.falconeri : typeof trivirgatus.falconeri +>trivirgatus.falconeri : trivirgatus.falconeri >trivirgatus : typeof trivirgatus >falconeri : typeof trivirgatus.falconeri @@ -2621,7 +2621,7 @@ module trivirgatus { >mixtus : mixtus >T0 : T0 >T1 : T1 ->argurus.pygmaea : typeof argurus.pygmaea +>argurus.pygmaea : argurus.pygmaea> >argurus : typeof argurus >pygmaea : typeof argurus.pygmaea >argurus : any @@ -3359,7 +3359,7 @@ module ruatanica { export class americanus extends imperfecta.ciliolabrum { >americanus : americanus ->imperfecta.ciliolabrum : typeof imperfecta.ciliolabrum +>imperfecta.ciliolabrum : imperfecta.ciliolabrum >imperfecta : typeof imperfecta >ciliolabrum : typeof imperfecta.ciliolabrum >argurus : any @@ -3429,7 +3429,7 @@ module lavali { export class wilsoni extends Lanthanum.nitidus { >wilsoni : wilsoni ->Lanthanum.nitidus : typeof Lanthanum.nitidus +>Lanthanum.nitidus : Lanthanum.nitidus >Lanthanum : typeof Lanthanum >nitidus : typeof Lanthanum.nitidus >rionegrensis : any @@ -3650,7 +3650,7 @@ module lavali { } export class otion extends howi.coludo { >otion : otion ->howi.coludo : typeof howi.coludo +>howi.coludo : howi.coludo >howi : typeof howi >coludo : typeof howi.coludo >argurus : any @@ -4125,7 +4125,7 @@ module lavali { } export class thaeleri extends argurus.oreas { >thaeleri : thaeleri ->argurus.oreas : typeof argurus.oreas +>argurus.oreas : argurus.oreas >argurus : typeof argurus >oreas : typeof argurus.oreas @@ -4289,7 +4289,7 @@ module lavali { } export class lepturus extends Lanthanum.suillus { >lepturus : lepturus ->Lanthanum.suillus : typeof Lanthanum.suillus +>Lanthanum.suillus : Lanthanum.suillus >Lanthanum : typeof Lanthanum >suillus : typeof Lanthanum.suillus >dammermani : any @@ -4365,7 +4365,7 @@ module dogramacii { export class robustulus extends lavali.wilsoni { >robustulus : robustulus ->lavali.wilsoni : typeof lavali.wilsoni +>lavali.wilsoni : lavali.wilsoni >lavali : typeof lavali >wilsoni : typeof lavali.wilsoni @@ -4940,7 +4940,7 @@ module lutreolus { export class schlegeli extends lavali.beisa { >schlegeli : schlegeli ->lavali.beisa : typeof lavali.beisa +>lavali.beisa : lavali.beisa >lavali : typeof lavali >beisa : typeof lavali.beisa @@ -5678,7 +5678,7 @@ module panglima { >amphibius : amphibius >T0 : T0 >T1 : T1 ->caurinus.johorensis : typeof caurinus.johorensis +>caurinus.johorensis : caurinus.johorensis, Lanthanum.jugularis> >caurinus : typeof caurinus >johorensis : typeof caurinus.johorensis >Lanthanum : any @@ -5812,7 +5812,7 @@ module panglima { >fundatus : fundatus >T0 : T0 >T1 : T1 ->lutreolus.schlegeli : typeof lutreolus.schlegeli +>lutreolus.schlegeli : lutreolus.schlegeli >lutreolus : typeof lutreolus >schlegeli : typeof lutreolus.schlegeli @@ -5918,7 +5918,7 @@ module panglima { >abidi : abidi >T0 : T0 >T1 : T1 ->argurus.dauricus : typeof argurus.dauricus +>argurus.dauricus : argurus.dauricus >argurus : typeof argurus >dauricus : typeof argurus.dauricus >argurus : any @@ -6133,7 +6133,7 @@ module minutus { >himalayana : himalayana >T0 : T0 >T1 : T1 ->lutreolus.punicus : typeof lutreolus.punicus +>lutreolus.punicus : lutreolus.punicus >lutreolus : typeof lutreolus >punicus : typeof lutreolus.punicus @@ -6377,7 +6377,7 @@ module caurinus { >mahaganus : mahaganus >T0 : T0 >T1 : T1 ->panglima.fundatus : typeof panglima.fundatus +>panglima.fundatus : panglima.fundatus >panglima : typeof panglima >fundatus : typeof panglima.fundatus >quasiater : any @@ -6606,7 +6606,7 @@ module howi { >angulatus : angulatus >T0 : T0 >T1 : T1 ->sagitta.stolzmanni : typeof sagitta.stolzmanni +>sagitta.stolzmanni : sagitta.stolzmanni >sagitta : typeof sagitta >stolzmanni : typeof sagitta.stolzmanni @@ -6814,7 +6814,7 @@ module sagitta { export class walkeri extends minutus.portoricensis { >walkeri : walkeri ->minutus.portoricensis : typeof minutus.portoricensis +>minutus.portoricensis : minutus.portoricensis >minutus : typeof minutus >portoricensis : typeof minutus.portoricensis @@ -6846,7 +6846,7 @@ module minutus { >inez : inez >T0 : T0 >T1 : T1 ->samarensis.pelurus : typeof samarensis.pelurus +>samarensis.pelurus : samarensis.pelurus >samarensis : typeof samarensis >pelurus : typeof samarensis.pelurus >argurus : any @@ -6880,7 +6880,7 @@ module macrorhinos { export class konganensis extends imperfecta.lasiurus { >konganensis : konganensis ->imperfecta.lasiurus : typeof imperfecta.lasiurus +>imperfecta.lasiurus : imperfecta.lasiurus >imperfecta : typeof imperfecta >lasiurus : typeof imperfecta.lasiurus >caurinus : any @@ -6896,7 +6896,7 @@ module panamensis { >linulus : linulus >T0 : T0 >T1 : T1 ->ruatanica.hector : typeof ruatanica.hector +>ruatanica.hector : ruatanica.hector> >ruatanica : typeof ruatanica >hector : typeof ruatanica.hector >julianae : any @@ -7357,7 +7357,7 @@ module samarensis { >pelurus : pelurus >T0 : T0 >T1 : T1 ->sagitta.stolzmanni : typeof sagitta.stolzmanni +>sagitta.stolzmanni : sagitta.stolzmanni >sagitta : typeof sagitta >stolzmanni : typeof sagitta.stolzmanni @@ -7615,7 +7615,7 @@ module samarensis { >fuscus : fuscus >T0 : T0 >T1 : T1 ->macrorhinos.daphaenodon : typeof macrorhinos.daphaenodon +>macrorhinos.daphaenodon : macrorhinos.daphaenodon >macrorhinos : typeof macrorhinos >daphaenodon : typeof macrorhinos.daphaenodon @@ -8093,7 +8093,7 @@ module sagitta { >leptoceros : leptoceros >T0 : T0 >T1 : T1 ->caurinus.johorensis : typeof caurinus.johorensis +>caurinus.johorensis : caurinus.johorensis> >caurinus : typeof caurinus >johorensis : typeof caurinus.johorensis >argurus : any @@ -8205,7 +8205,7 @@ module daubentonii { >nigricans : nigricans >T0 : T0 >T1 : T1 ->sagitta.stolzmanni : typeof sagitta.stolzmanni +>sagitta.stolzmanni : sagitta.stolzmanni >sagitta : typeof sagitta >stolzmanni : typeof sagitta.stolzmanni @@ -8238,7 +8238,7 @@ module argurus { >pygmaea : pygmaea >T0 : T0 >T1 : T1 ->rendalli.moojeni : typeof rendalli.moojeni +>rendalli.moojeni : rendalli.moojeni >rendalli : typeof rendalli >moojeni : typeof rendalli.moojeni >macrorhinos : any @@ -8290,7 +8290,7 @@ module chrysaeolus { >sarasinorum : sarasinorum >T0 : T0 >T1 : T1 ->caurinus.psilurus : typeof caurinus.psilurus +>caurinus.psilurus : caurinus.psilurus >caurinus : typeof caurinus >psilurus : typeof caurinus.psilurus @@ -8533,7 +8533,7 @@ module argurus { export class oreas extends lavali.wilsoni { >oreas : oreas ->lavali.wilsoni : typeof lavali.wilsoni +>lavali.wilsoni : lavali.wilsoni >lavali : typeof lavali >wilsoni : typeof lavali.wilsoni @@ -9163,7 +9163,7 @@ module provocax { export class melanoleuca extends lavali.wilsoni { >melanoleuca : melanoleuca ->lavali.wilsoni : typeof lavali.wilsoni +>lavali.wilsoni : lavali.wilsoni >lavali : typeof lavali >wilsoni : typeof lavali.wilsoni @@ -9310,7 +9310,7 @@ module howi { export class marcanoi extends Lanthanum.megalonyx { >marcanoi : marcanoi ->Lanthanum.megalonyx : typeof Lanthanum.megalonyx +>Lanthanum.megalonyx : Lanthanum.megalonyx >Lanthanum : typeof Lanthanum >megalonyx : typeof Lanthanum.megalonyx @@ -10398,7 +10398,7 @@ module gabriellae { >klossii : klossii >T0 : T0 >T1 : T1 ->imperfecta.lasiurus : typeof imperfecta.lasiurus +>imperfecta.lasiurus : imperfecta.lasiurus >imperfecta : typeof imperfecta >lasiurus : typeof imperfecta.lasiurus >dogramacii : any @@ -10908,7 +10908,7 @@ module imperfecta { >ciliolabrum : ciliolabrum >T0 : T0 >T1 : T1 ->dogramacii.robustulus : typeof dogramacii.robustulus +>dogramacii.robustulus : dogramacii.robustulus >dogramacii : typeof dogramacii >robustulus : typeof dogramacii.robustulus @@ -11072,7 +11072,7 @@ module petrophilus { >sodyi : sodyi >T0 : T0 >T1 : T1 ->quasiater.bobrinskoi : typeof quasiater.bobrinskoi +>quasiater.bobrinskoi : quasiater.bobrinskoi >quasiater : typeof quasiater >bobrinskoi : typeof quasiater.bobrinskoi @@ -11206,7 +11206,7 @@ module caurinus { export class megaphyllus extends imperfecta.lasiurus> { >megaphyllus : megaphyllus ->imperfecta.lasiurus : typeof imperfecta.lasiurus +>imperfecta.lasiurus : imperfecta.lasiurus> >imperfecta : typeof imperfecta >lasiurus : typeof imperfecta.lasiurus >julianae : any @@ -11640,7 +11640,7 @@ module lutreolus { >cor : cor >T0 : T0 >T1 : T1 ->panglima.fundatus : typeof panglima.fundatus +>panglima.fundatus : panglima.fundatus, lavali.beisa>, dammermani.melanops> >panglima : typeof panglima >fundatus : typeof panglima.fundatus >panamensis : any @@ -11887,7 +11887,7 @@ module argurus { export class germaini extends gabriellae.amicus { >germaini : germaini ->gabriellae.amicus : typeof gabriellae.amicus +>gabriellae.amicus : gabriellae.amicus >gabriellae : typeof gabriellae >amicus : typeof gabriellae.amicus @@ -12100,7 +12100,7 @@ module dammermani { export class melanops extends minutus.inez { >melanops : melanops ->minutus.inez : typeof minutus.inez +>minutus.inez : minutus.inez >minutus : typeof minutus >inez : typeof minutus.inez >sagitta : any @@ -12350,7 +12350,7 @@ module argurus { export class peninsulae extends patas.uralensis { >peninsulae : peninsulae ->patas.uralensis : typeof patas.uralensis +>patas.uralensis : patas.uralensis >patas : typeof patas >uralensis : typeof patas.uralensis @@ -12815,7 +12815,7 @@ module ruatanica { >Praseodymium : Praseodymium >T0 : T0 >T1 : T1 ->ruatanica.hector : typeof hector +>ruatanica.hector : hector >ruatanica : typeof ruatanica >hector : typeof hector >lutreolus : any @@ -13163,7 +13163,7 @@ module caurinus { >johorensis : johorensis >T0 : T0 >T1 : T1 ->lutreolus.punicus : typeof lutreolus.punicus +>lutreolus.punicus : lutreolus.punicus >lutreolus : typeof lutreolus >punicus : typeof lutreolus.punicus @@ -13610,7 +13610,7 @@ module caurinus { export class psilurus extends lutreolus.punicus { >psilurus : psilurus ->lutreolus.punicus : typeof lutreolus.punicus +>lutreolus.punicus : lutreolus.punicus >lutreolus : typeof lutreolus >punicus : typeof lutreolus.punicus diff --git a/tests/baselines/reference/returnStatements.types b/tests/baselines/reference/returnStatements.types index 07b20e8cabec9..e5332b2e6acbd 100644 --- a/tests/baselines/reference/returnStatements.types +++ b/tests/baselines/reference/returnStatements.types @@ -49,7 +49,7 @@ class C implements I { } class D extends C { >D : D ->C : typeof C +>C : C name: string; >name : string diff --git a/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructorAndExtendsClause.types b/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructorAndExtendsClause.types index ef6e6a646635c..12d8d56cf6e14 100644 --- a/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructorAndExtendsClause.types +++ b/tests/baselines/reference/sourceMapValidationClassWithDefaultConstructorAndExtendsClause.types @@ -5,7 +5,7 @@ class AbstractGreeter { class Greeter extends AbstractGreeter { >Greeter : Greeter ->AbstractGreeter : typeof AbstractGreeter +>AbstractGreeter : AbstractGreeter public a = 10; >a : number diff --git a/tests/baselines/reference/specializedInheritedConstructors1.types b/tests/baselines/reference/specializedInheritedConstructors1.types index 6ca5b01776a5c..7a7c478240633 100644 --- a/tests/baselines/reference/specializedInheritedConstructors1.types +++ b/tests/baselines/reference/specializedInheritedConstructors1.types @@ -27,7 +27,7 @@ class Model { } class MyView extends View { } >MyView : MyView ->View : typeof View +>View : View >Model : Model var m: ViewOptions = { model: new Model() }; diff --git a/tests/baselines/reference/staticFactory1.types b/tests/baselines/reference/staticFactory1.types index 419fffd6b0dcc..538728de2dff5 100644 --- a/tests/baselines/reference/staticFactory1.types +++ b/tests/baselines/reference/staticFactory1.types @@ -17,7 +17,7 @@ class Base { class Derived extends Base { >Derived : Derived ->Base : typeof Base +>Base : Base foo() { return 2; } >foo : () => number diff --git a/tests/baselines/reference/staticInheritance.types b/tests/baselines/reference/staticInheritance.types index 0235735ca4443..04c64281ba83e 100644 --- a/tests/baselines/reference/staticInheritance.types +++ b/tests/baselines/reference/staticInheritance.types @@ -18,7 +18,7 @@ class A { } class B extends A { >B : B ->A : typeof A +>A : A p1 = doThing(A); // OK >p1 : void diff --git a/tests/baselines/reference/staticMemberAccessOffDerivedType1.types b/tests/baselines/reference/staticMemberAccessOffDerivedType1.types index 835100d3e9b96..55b9c83969b2a 100644 --- a/tests/baselines/reference/staticMemberAccessOffDerivedType1.types +++ b/tests/baselines/reference/staticMemberAccessOffDerivedType1.types @@ -11,7 +11,7 @@ class SomeBase { } class P extends SomeBase { >P : P ->SomeBase : typeof SomeBase +>SomeBase : SomeBase static SomeNumber = P.GetNumber(); >SomeNumber : number diff --git a/tests/baselines/reference/subtypingTransitivity.types b/tests/baselines/reference/subtypingTransitivity.types index 543284bf619e6..0a41e045d98c3 100644 --- a/tests/baselines/reference/subtypingTransitivity.types +++ b/tests/baselines/reference/subtypingTransitivity.types @@ -9,14 +9,14 @@ class B { class D extends B { >D : D ->B : typeof B +>B : B public x: string; >x : string } class D2 extends B { >D2 : D2 ->B : typeof B +>B : B public x: number; >x : number diff --git a/tests/baselines/reference/subtypingWithCallSignatures2.types b/tests/baselines/reference/subtypingWithCallSignatures2.types index 1e7e412c8708f..8a56e05a9c212 100644 --- a/tests/baselines/reference/subtypingWithCallSignatures2.types +++ b/tests/baselines/reference/subtypingWithCallSignatures2.types @@ -7,17 +7,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : typeof Base +>Base : Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : typeof Derived +>Derived : Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : typeof Base +>Base : Base >bing : string declare function foo1(a: (x: number) => number[]): typeof a; diff --git a/tests/baselines/reference/subtypingWithCallSignatures3.types b/tests/baselines/reference/subtypingWithCallSignatures3.types index b925f7d923ef9..379810b2541f0 100644 --- a/tests/baselines/reference/subtypingWithCallSignatures3.types +++ b/tests/baselines/reference/subtypingWithCallSignatures3.types @@ -11,17 +11,17 @@ module Errors { class Derived extends Base { bar: string; } >Derived : Derived ->Base : typeof Base +>Base : Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : typeof Derived +>Derived : Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : typeof Base +>Base : Base >bing : string declare function foo2(a2: (x: number) => string[]): typeof a2; diff --git a/tests/baselines/reference/subtypingWithCallSignatures4.types b/tests/baselines/reference/subtypingWithCallSignatures4.types index caa06f6a8e6d5..e76d36114e961 100644 --- a/tests/baselines/reference/subtypingWithCallSignatures4.types +++ b/tests/baselines/reference/subtypingWithCallSignatures4.types @@ -7,17 +7,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : typeof Base +>Base : Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : typeof Derived +>Derived : Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : typeof Base +>Base : Base >bing : string declare function foo1(a: (x: T) => T[]); diff --git a/tests/baselines/reference/subtypingWithConstructSignatures2.types b/tests/baselines/reference/subtypingWithConstructSignatures2.types index a7a547dad6048..d723a367ecb3d 100644 --- a/tests/baselines/reference/subtypingWithConstructSignatures2.types +++ b/tests/baselines/reference/subtypingWithConstructSignatures2.types @@ -7,17 +7,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : typeof Base +>Base : Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : typeof Derived +>Derived : Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : typeof Base +>Base : Base >bing : string declare function foo1(a: new (x: number) => number[]): typeof a; diff --git a/tests/baselines/reference/subtypingWithConstructSignatures3.types b/tests/baselines/reference/subtypingWithConstructSignatures3.types index a46b8c02e151d..b0f0680c7a088 100644 --- a/tests/baselines/reference/subtypingWithConstructSignatures3.types +++ b/tests/baselines/reference/subtypingWithConstructSignatures3.types @@ -11,17 +11,17 @@ module Errors { class Derived extends Base { bar: string; } >Derived : Derived ->Base : typeof Base +>Base : Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : typeof Derived +>Derived : Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : typeof Base +>Base : Base >bing : string declare function foo2(a2: new (x: number) => string[]): typeof a2; diff --git a/tests/baselines/reference/subtypingWithConstructSignatures4.types b/tests/baselines/reference/subtypingWithConstructSignatures4.types index d4251e7cd4bb5..21a40ecf7fcc1 100644 --- a/tests/baselines/reference/subtypingWithConstructSignatures4.types +++ b/tests/baselines/reference/subtypingWithConstructSignatures4.types @@ -7,17 +7,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : typeof Base +>Base : Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : typeof Derived +>Derived : Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : typeof Base +>Base : Base >bing : string declare function foo1(a: new (x: T) => T[]); diff --git a/tests/baselines/reference/subtypingWithConstructSignatures5.types b/tests/baselines/reference/subtypingWithConstructSignatures5.types index c2d49f8e66174..7ffb4db5467e0 100644 --- a/tests/baselines/reference/subtypingWithConstructSignatures5.types +++ b/tests/baselines/reference/subtypingWithConstructSignatures5.types @@ -8,17 +8,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : typeof Base +>Base : Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : typeof Derived +>Derived : Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : typeof Base +>Base : Base >bing : string interface A { // T diff --git a/tests/baselines/reference/subtypingWithConstructSignatures6.types b/tests/baselines/reference/subtypingWithConstructSignatures6.types index b94befab2f32b..bcbf452615bfc 100644 --- a/tests/baselines/reference/subtypingWithConstructSignatures6.types +++ b/tests/baselines/reference/subtypingWithConstructSignatures6.types @@ -9,17 +9,17 @@ class Base { foo: string; } class Derived extends Base { bar: string; } >Derived : Derived ->Base : typeof Base +>Base : Base >bar : string class Derived2 extends Derived { baz: string; } >Derived2 : Derived2 ->Derived : typeof Derived +>Derived : Derived >baz : string class OtherDerived extends Base { bing: string; } >OtherDerived : OtherDerived ->Base : typeof Base +>Base : Base >bing : string interface A { // T diff --git a/tests/baselines/reference/subtypingWithObjectMembers4.types b/tests/baselines/reference/subtypingWithObjectMembers4.types index 2009632b74c03..6e6475b25786b 100644 --- a/tests/baselines/reference/subtypingWithObjectMembers4.types +++ b/tests/baselines/reference/subtypingWithObjectMembers4.types @@ -10,7 +10,7 @@ class Base { class Derived extends Base { >Derived : Derived ->Base : typeof Base +>Base : Base bar: string; >bar : string @@ -26,7 +26,7 @@ class A { class B extends A { >B : B ->A : typeof A +>A : A fooo: Derived; // ok, inherits foo >fooo : Derived @@ -42,7 +42,7 @@ class A2 { class B2 extends A2 { >B2 : B2 ->A2 : typeof A2 +>A2 : A2 1.1: Derived; // ok, inherits 1 >Derived : Derived @@ -57,7 +57,7 @@ class A3 { class B3 extends A3 { >B3 : B3 ->A3 : typeof A3 +>A3 : A3 '1.1': Derived; // ok, inherits '1' >Derived : Derived diff --git a/tests/baselines/reference/super2.types b/tests/baselines/reference/super2.types index c09ff3e8be55b..a3807f03099df 100644 --- a/tests/baselines/reference/super2.types +++ b/tests/baselines/reference/super2.types @@ -20,7 +20,7 @@ class Base5 { class Sub5 extends Base5 { >Sub5 : Sub5 ->Base5 : typeof Base5 +>Base5 : Base5 public x() { >x : () => string @@ -32,7 +32,7 @@ class Sub5 extends Base5 { class SubSub5 extends Sub5 { >SubSub5 : SubSub5 ->Sub5 : typeof Sub5 +>Sub5 : Sub5 public x() { >x : () => string @@ -68,7 +68,7 @@ class Base6 { class Sub6 extends Base6 { >Sub6 : Sub6 ->Base6 : typeof Base6 +>Base6 : Base6 public y() { >y : () => string @@ -80,7 +80,7 @@ class Sub6 extends Base6 { class SubSub6 extends Sub6 { >SubSub6 : SubSub6 ->Sub6 : typeof Sub6 +>Sub6 : Sub6 public y() { >y : () => string diff --git a/tests/baselines/reference/superAccessInFatArrow1.types b/tests/baselines/reference/superAccessInFatArrow1.types index 279a94b29e034..0c50015c0510e 100644 --- a/tests/baselines/reference/superAccessInFatArrow1.types +++ b/tests/baselines/reference/superAccessInFatArrow1.types @@ -11,7 +11,7 @@ module test { } export class B extends A { >B : B ->A : typeof A +>A : A bar(callback: () => void ) { >bar : (callback: () => void) => void diff --git a/tests/baselines/reference/superCallFromClassThatDerivesFromGenericType1.types b/tests/baselines/reference/superCallFromClassThatDerivesFromGenericType1.types index c0a66ff629a94..02d85f763b573 100644 --- a/tests/baselines/reference/superCallFromClassThatDerivesFromGenericType1.types +++ b/tests/baselines/reference/superCallFromClassThatDerivesFromGenericType1.types @@ -16,7 +16,7 @@ declare class B { class D extends B { >D : D ->B : typeof B +>B : B constructor() { super(); diff --git a/tests/baselines/reference/superCallFromClassThatDerivesFromGenericType2.types b/tests/baselines/reference/superCallFromClassThatDerivesFromGenericType2.types index 873766b6af2e6..68959b8b4b68a 100644 --- a/tests/baselines/reference/superCallFromClassThatDerivesFromGenericType2.types +++ b/tests/baselines/reference/superCallFromClassThatDerivesFromGenericType2.types @@ -12,7 +12,7 @@ declare class B { class D extends B { >D : D ->B : typeof B +>B : B constructor() { super(); diff --git a/tests/baselines/reference/superCallParameterContextualTyping1.types b/tests/baselines/reference/superCallParameterContextualTyping1.types index 31c6db02b8063..4dc68fee3f7cc 100644 --- a/tests/baselines/reference/superCallParameterContextualTyping1.types +++ b/tests/baselines/reference/superCallParameterContextualTyping1.types @@ -16,7 +16,7 @@ class A { class B extends A { >B : B ->A : typeof A +>A : A // Ensure 'value' is of type 'number (and not '{}') by using its 'toExponential()' method. constructor() { super(value => String(value.toExponential())); } diff --git a/tests/baselines/reference/superCallParameterContextualTyping3.types b/tests/baselines/reference/superCallParameterContextualTyping3.types index a640fbfdeb1f9..262b624e78f28 100644 --- a/tests/baselines/reference/superCallParameterContextualTyping3.types +++ b/tests/baselines/reference/superCallParameterContextualTyping3.types @@ -29,7 +29,7 @@ class CBase { class C extends CBase { >C : C ->CBase : typeof CBase +>CBase : CBase constructor() { // Should be okay. diff --git a/tests/baselines/reference/superCalls.types b/tests/baselines/reference/superCalls.types index 21f0d5dc7ee88..ce5353df329b0 100644 --- a/tests/baselines/reference/superCalls.types +++ b/tests/baselines/reference/superCalls.types @@ -17,7 +17,7 @@ function v(): void { } class Derived extends Base { >Derived : Derived ->Base : typeof Base +>Base : Base //super call in class constructor of derived type constructor(public q: number) { @@ -49,7 +49,7 @@ class OtherBase { class OtherDerived extends OtherBase { >OtherDerived : OtherDerived ->OtherBase : typeof OtherBase +>OtherBase : OtherBase constructor() { var p = ''; diff --git a/tests/baselines/reference/superInCatchBlock1.types b/tests/baselines/reference/superInCatchBlock1.types index 33f5e974f613e..616c11cee7fee 100644 --- a/tests/baselines/reference/superInCatchBlock1.types +++ b/tests/baselines/reference/superInCatchBlock1.types @@ -7,7 +7,7 @@ class A { } class B extends A { >B : B ->A : typeof A +>A : A m() { >m : () => void diff --git a/tests/baselines/reference/superWithGenericSpecialization.types b/tests/baselines/reference/superWithGenericSpecialization.types index d9e4cbf820c3f..075362e8a2929 100644 --- a/tests/baselines/reference/superWithGenericSpecialization.types +++ b/tests/baselines/reference/superWithGenericSpecialization.types @@ -11,7 +11,7 @@ class C { class D extends C { >D : D >T : T ->C : typeof C +>C : C y: T; >y : T diff --git a/tests/baselines/reference/superWithGenerics.types b/tests/baselines/reference/superWithGenerics.types index bdcaab7ba7522..ddf2741e35c0a 100644 --- a/tests/baselines/reference/superWithGenerics.types +++ b/tests/baselines/reference/superWithGenerics.types @@ -16,7 +16,7 @@ declare class B { class D extends B { >D : D ->B : typeof B +>B : B constructor() { super(); diff --git a/tests/baselines/reference/switchStatements.types b/tests/baselines/reference/switchStatements.types index 2d8901c0cd083..a5679547c1292 100644 --- a/tests/baselines/reference/switchStatements.types +++ b/tests/baselines/reference/switchStatements.types @@ -99,7 +99,7 @@ class C { id: number; } class D extends C { name: string } >D : D ->C : typeof C +>C : C >name : string switch (new C()) { diff --git a/tests/baselines/reference/symbolProperty26.types b/tests/baselines/reference/symbolProperty26.types index 3f482551bcc6f..386761c98f91e 100644 --- a/tests/baselines/reference/symbolProperty26.types +++ b/tests/baselines/reference/symbolProperty26.types @@ -14,7 +14,7 @@ class C1 { class C2 extends C1 { >C2 : C2 ->C1 : typeof C1 +>C1 : C1 [Symbol.toStringTag]() { >Symbol.toStringTag : symbol diff --git a/tests/baselines/reference/symbolProperty27.types b/tests/baselines/reference/symbolProperty27.types index d65989a903d7e..d8ff2f2f11629 100644 --- a/tests/baselines/reference/symbolProperty27.types +++ b/tests/baselines/reference/symbolProperty27.types @@ -14,7 +14,7 @@ class C1 { class C2 extends C1 { >C2 : C2 ->C1 : typeof C1 +>C1 : C1 [Symbol.toStringTag]() { >Symbol.toStringTag : symbol diff --git a/tests/baselines/reference/symbolProperty28.types b/tests/baselines/reference/symbolProperty28.types index 14a1f64f409cb..6eddebf44d858 100644 --- a/tests/baselines/reference/symbolProperty28.types +++ b/tests/baselines/reference/symbolProperty28.types @@ -16,7 +16,7 @@ class C1 { class C2 extends C1 { } >C2 : C2 ->C1 : typeof C1 +>C1 : C1 var c: C2; >c : C2 diff --git a/tests/baselines/reference/typeGuardFunction.types b/tests/baselines/reference/typeGuardFunction.types index 8addafa2bc623..cf673f965f9bc 100644 --- a/tests/baselines/reference/typeGuardFunction.types +++ b/tests/baselines/reference/typeGuardFunction.types @@ -16,7 +16,7 @@ class B { class C extends A { >C : C ->A : typeof A +>A : A propC: number; >propC : number diff --git a/tests/baselines/reference/typeGuardFunctionGenerics.types b/tests/baselines/reference/typeGuardFunctionGenerics.types index 6e0ea52aea654..77162e55a40d4 100644 --- a/tests/baselines/reference/typeGuardFunctionGenerics.types +++ b/tests/baselines/reference/typeGuardFunctionGenerics.types @@ -16,7 +16,7 @@ class B { class C extends A { >C : C ->A : typeof A +>A : A propC: number; >propC : number diff --git a/tests/baselines/reference/typeGuardOfFormInstanceOf.types b/tests/baselines/reference/typeGuardOfFormInstanceOf.types index 060c0caa37fbf..891e8c1bea276 100644 --- a/tests/baselines/reference/typeGuardOfFormInstanceOf.types +++ b/tests/baselines/reference/typeGuardOfFormInstanceOf.types @@ -19,7 +19,7 @@ class C2 { } class D1 extends C1 { >D1 : D1 ->C1 : typeof C1 +>C1 : C1 p3: number; >p3 : number diff --git a/tests/baselines/reference/typeGuardOfFormIsType.types b/tests/baselines/reference/typeGuardOfFormIsType.types index fc62b84a79ac3..b14e5e2291048 100644 --- a/tests/baselines/reference/typeGuardOfFormIsType.types +++ b/tests/baselines/reference/typeGuardOfFormIsType.types @@ -14,7 +14,7 @@ class C2 { } class D1 extends C1 { >D1 : D1 ->C1 : typeof C1 +>C1 : C1 p3: number; >p3 : number diff --git a/tests/baselines/reference/typeOfSuperCall.types b/tests/baselines/reference/typeOfSuperCall.types index fc355df5413f7..92108bedc15cf 100644 --- a/tests/baselines/reference/typeOfSuperCall.types +++ b/tests/baselines/reference/typeOfSuperCall.types @@ -5,7 +5,7 @@ class C { class D extends C { >D : D ->C : typeof C +>C : C constructor() { var x: void = super(); diff --git a/tests/baselines/reference/typeParameterExtendingUnion1.types b/tests/baselines/reference/typeParameterExtendingUnion1.types index f907d65e0c3af..29b748bab7d9c 100644 --- a/tests/baselines/reference/typeParameterExtendingUnion1.types +++ b/tests/baselines/reference/typeParameterExtendingUnion1.types @@ -5,12 +5,12 @@ class Animal { run() { } } class Cat extends Animal { meow } >Cat : Cat ->Animal : typeof Animal +>Animal : Animal >meow : any class Dog extends Animal { woof } >Dog : Dog ->Animal : typeof Animal +>Animal : Animal >woof : any function run(a: Animal) { diff --git a/tests/baselines/reference/typeParameterExtendingUnion2.types b/tests/baselines/reference/typeParameterExtendingUnion2.types index cc7eb67fd46c8..0bb1e6a58af4a 100644 --- a/tests/baselines/reference/typeParameterExtendingUnion2.types +++ b/tests/baselines/reference/typeParameterExtendingUnion2.types @@ -5,12 +5,12 @@ class Animal { run() { } } class Cat extends Animal { meow } >Cat : Cat ->Animal : typeof Animal +>Animal : Animal >meow : any class Dog extends Animal { woof } >Dog : Dog ->Animal : typeof Animal +>Animal : Animal >woof : any function run(a: Cat | Dog) { diff --git a/tests/baselines/reference/typeofClass2.types b/tests/baselines/reference/typeofClass2.types index 663316b30e9da..8870d9a587474 100644 --- a/tests/baselines/reference/typeofClass2.types +++ b/tests/baselines/reference/typeofClass2.types @@ -31,7 +31,7 @@ class C { class D extends C { >D : D ->C : typeof C +>C : C static baz(x: number) { } >baz : (x: number) => void diff --git a/tests/baselines/reference/typesWithSpecializedCallSignatures.types b/tests/baselines/reference/typesWithSpecializedCallSignatures.types index 37d00550ed5ea..fa3ac7a4ba4d4 100644 --- a/tests/baselines/reference/typesWithSpecializedCallSignatures.types +++ b/tests/baselines/reference/typesWithSpecializedCallSignatures.types @@ -7,12 +7,12 @@ class Base { foo: string } class Derived1 extends Base { bar: string } >Derived1 : Derived1 ->Base : typeof Base +>Base : Base >bar : string class Derived2 extends Base { baz: string } >Derived2 : Derived2 ->Base : typeof Base +>Base : Base >baz : string class C { diff --git a/tests/baselines/reference/typesWithSpecializedConstructSignatures.types b/tests/baselines/reference/typesWithSpecializedConstructSignatures.types index 8f1f6a09b7fcb..66e274d917adc 100644 --- a/tests/baselines/reference/typesWithSpecializedConstructSignatures.types +++ b/tests/baselines/reference/typesWithSpecializedConstructSignatures.types @@ -7,12 +7,12 @@ class Base { foo: string } class Derived1 extends Base { bar: string } >Derived1 : Derived1 ->Base : typeof Base +>Base : Base >bar : string class Derived2 extends Base { baz: string } >Derived2 : Derived2 ->Base : typeof Base +>Base : Base >baz : string class C { diff --git a/tests/baselines/reference/undefinedIsSubtypeOfEverything.types b/tests/baselines/reference/undefinedIsSubtypeOfEverything.types index d80f95c3b5ebe..d89f032bf29c2 100644 --- a/tests/baselines/reference/undefinedIsSubtypeOfEverything.types +++ b/tests/baselines/reference/undefinedIsSubtypeOfEverything.types @@ -11,7 +11,7 @@ class Base { class D0 extends Base { >D0 : D0 ->Base : typeof Base +>Base : Base foo: any; >foo : any @@ -19,7 +19,7 @@ class D0 extends Base { class DA extends Base { >DA : DA ->Base : typeof Base +>Base : Base foo: typeof undefined; >foo : any @@ -28,7 +28,7 @@ class DA extends Base { class D1 extends Base { >D1 : D1 ->Base : typeof Base +>Base : Base foo: string; >foo : string @@ -36,7 +36,7 @@ class D1 extends Base { class D1A extends Base { >D1A : D1A ->Base : typeof Base +>Base : Base foo: String; >foo : String @@ -46,7 +46,7 @@ class D1A extends Base { class D2 extends Base { >D2 : D2 ->Base : typeof Base +>Base : Base foo: number; >foo : number @@ -54,7 +54,7 @@ class D2 extends Base { class D2A extends Base { >D2A : D2A ->Base : typeof Base +>Base : Base foo: Number; >foo : Number @@ -64,7 +64,7 @@ class D2A extends Base { class D3 extends Base { >D3 : D3 ->Base : typeof Base +>Base : Base foo: boolean; >foo : boolean @@ -72,7 +72,7 @@ class D3 extends Base { class D3A extends Base { >D3A : D3A ->Base : typeof Base +>Base : Base foo: Boolean; >foo : Boolean @@ -82,7 +82,7 @@ class D3A extends Base { class D4 extends Base { >D4 : D4 ->Base : typeof Base +>Base : Base foo: RegExp; >foo : RegExp @@ -91,7 +91,7 @@ class D4 extends Base { class D5 extends Base { >D5 : D5 ->Base : typeof Base +>Base : Base foo: Date; >foo : Date @@ -101,7 +101,7 @@ class D5 extends Base { class D6 extends Base { >D6 : D6 ->Base : typeof Base +>Base : Base foo: number[]; >foo : number[] @@ -109,7 +109,7 @@ class D6 extends Base { class D7 extends Base { >D7 : D7 ->Base : typeof Base +>Base : Base foo: { bar: number }; >foo : { bar: number; } @@ -119,7 +119,7 @@ class D7 extends Base { class D8 extends Base { >D8 : D8 ->Base : typeof Base +>Base : Base foo: D7; >foo : D7 @@ -134,7 +134,7 @@ interface I1 { } class D9 extends Base { >D9 : D9 ->Base : typeof Base +>Base : Base foo: I1; >foo : I1 @@ -144,7 +144,7 @@ class D9 extends Base { class D10 extends Base { >D10 : D10 ->Base : typeof Base +>Base : Base foo: () => number; >foo : () => number @@ -156,7 +156,7 @@ enum E { A } class D11 extends Base { >D11 : D11 ->Base : typeof Base +>Base : Base foo: E; >foo : E @@ -175,7 +175,7 @@ module f { } class D12 extends Base { >D12 : D12 ->Base : typeof Base +>Base : Base foo: typeof f; >foo : typeof f @@ -196,7 +196,7 @@ module c { } class D13 extends Base { >D13 : D13 ->Base : typeof Base +>Base : Base foo: typeof c; >foo : typeof c @@ -207,7 +207,7 @@ class D13 extends Base { class D14 extends Base { >D14 : D14 >T : T ->Base : typeof Base +>Base : Base foo: T; >foo : T @@ -219,7 +219,7 @@ class D15 extends Base { >D15 : D15 >T : T >U : U ->Base : typeof Base +>Base : Base foo: U; >foo : U @@ -233,7 +233,7 @@ class D15 extends Base { class D16 extends Base { >D16 : D16 ->Base : typeof Base +>Base : Base foo: Object; >foo : Object @@ -243,7 +243,7 @@ class D16 extends Base { class D17 extends Base { >D17 : D17 ->Base : typeof Base +>Base : Base foo: {}; >foo : {} diff --git a/tests/baselines/reference/underscoreMapFirst.types b/tests/baselines/reference/underscoreMapFirst.types index c22d127ab34b9..4de320604bd7d 100644 --- a/tests/baselines/reference/underscoreMapFirst.types +++ b/tests/baselines/reference/underscoreMapFirst.types @@ -112,7 +112,7 @@ interface ISeries { class MyView extends View { >MyView : MyView ->View : typeof View +>View : View public getDataSeries(): ISeries[] { >getDataSeries : () => ISeries[] diff --git a/tests/baselines/reference/unionTypeFromArrayLiteral.types b/tests/baselines/reference/unionTypeFromArrayLiteral.types index 83fc69560f5c1..63aefdd214c06 100644 --- a/tests/baselines/reference/unionTypeFromArrayLiteral.types +++ b/tests/baselines/reference/unionTypeFromArrayLiteral.types @@ -58,12 +58,12 @@ class D { foo2() { } } class E extends C { foo3() { } } >E : E ->C : typeof C +>C : C >foo3 : () => void class F extends C { foo4() { } } >F : F ->C : typeof C +>C : C >foo4 : () => void var c: C, d: D, e: E, f: F; diff --git a/tests/baselines/reference/validUseOfThisInSuper.types b/tests/baselines/reference/validUseOfThisInSuper.types index 75a2d8df9dc54..d7c882496e27b 100644 --- a/tests/baselines/reference/validUseOfThisInSuper.types +++ b/tests/baselines/reference/validUseOfThisInSuper.types @@ -9,7 +9,7 @@ class Base { } class Super extends Base { >Super : Super ->Base : typeof Base +>Base : Base constructor() { super((() => this)()); // ok since this is not the case: The constructor declares parameter properties or the containing class declares instance member variables with initializers. diff --git a/tests/baselines/reference/varArgsOnConstructorTypes.types b/tests/baselines/reference/varArgsOnConstructorTypes.types index c595476a039c6..5ac9babd42698 100644 --- a/tests/baselines/reference/varArgsOnConstructorTypes.types +++ b/tests/baselines/reference/varArgsOnConstructorTypes.types @@ -8,7 +8,7 @@ export class A { export class B extends A { >B : B ->A : typeof A +>A : A private p1: number; >p1 : number From de8eb229c8c212f001ab5210f393fad8cda5b570 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Tue, 16 Jun 2015 11:49:15 -0700 Subject: [PATCH 10/16] Adding comments and doing a bit of renaming --- src/compiler/checker.ts | 46 ++++++++++++++++++++++++++--------------- src/compiler/types.ts | 7 ++----- 2 files changed, 31 insertions(+), 22 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 8ad4061ddf748..88ab42b9bed45 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2623,11 +2623,16 @@ module ts { return signatures; } + // The base constructor of a class can resolve to + // undefinedType if the class has no extends clause, + // unknownType if an error occurred during resolution of the extends expression, + // nullType if the extends expression is the null value, or + // an object type with at least one construct signature. function getBaseConstructorTypeOfClass(type: InterfaceType): ObjectType { - if (!type.baseConstructorType) { + if (!type.resolvedBaseConstructorType) { let baseTypeNode = getBaseTypeNodeOfClass(type); if (!baseTypeNode) { - return type.baseConstructorType = undefinedType; + return type.resolvedBaseConstructorType = undefinedType; } if (!pushTypeResolution(type)) { return unknownType; @@ -2639,35 +2644,34 @@ module ts { } if (!popTypeResolution()) { error(type.symbol.valueDeclaration, Diagnostics._0_is_referenced_directly_or_indirectly_in_its_own_base_expression, symbolToString(type.symbol)); - return type.baseConstructorType = unknownType; + return type.resolvedBaseConstructorType = unknownType; } if (baseConstructorType !== unknownType && baseConstructorType !== nullType && !isConstructorType(baseConstructorType)) { error(baseTypeNode.expression, Diagnostics.Base_expression_is_not_of_a_constructor_function_type); - return type.baseConstructorType = unknownType; + return type.resolvedBaseConstructorType = unknownType; } - type.baseConstructorType = baseConstructorType; + type.resolvedBaseConstructorType = baseConstructorType; } - return type.baseConstructorType; + return type.resolvedBaseConstructorType; } function getBaseTypes(type: InterfaceType): ObjectType[] { - let typeWithBaseTypes = type; - if (!typeWithBaseTypes.baseTypes) { + if (!type.resolvedBaseTypes) { if (type.symbol.flags & SymbolFlags.Class) { - resolveBaseTypesOfClass(typeWithBaseTypes); + resolveBaseTypesOfClass(type); } else if (type.symbol.flags & SymbolFlags.Interface) { - resolveBaseTypesOfInterface(typeWithBaseTypes); + resolveBaseTypesOfInterface(type); } else { Debug.fail("type must be class or interface"); } } - return typeWithBaseTypes.baseTypes; + return type.resolvedBaseTypes; } - function resolveBaseTypesOfClass(type: InterfaceTypeWithBaseTypes): void { - type.baseTypes = emptyArray; + function resolveBaseTypesOfClass(type: InterfaceType): void { + type.resolvedBaseTypes = emptyArray; let baseContructorType = getBaseConstructorTypeOfClass(type); if (!(baseContructorType.flags & TypeFlags.ObjectType)) { return; @@ -2675,9 +2679,15 @@ module ts { let baseTypeNode = getBaseTypeNodeOfClass(type); let baseType: Type; if (baseContructorType.symbol && baseContructorType.symbol.flags & SymbolFlags.Class) { + // When base constructor type is a class we know that the constructors all have the same type parameters as the + // class and all return the instance type of the class. There is no need for further checks and we can apply the + // type arguments in the same manner as a type reference to get the same error reporting experience. baseType = getTypeFromClassOrInterfaceReference(baseTypeNode, baseContructorType.symbol); } else { + // The class derives from a "class-like" constructor function, check that we have at least one construct signature + // with a matching number of type parameters and use the return type of the first instantiated signature. Elsewhere + // we check that all instantiated signatures return the same type. let constructors = getInstantiatedConstructorsForTypeArguments(baseContructorType, baseTypeNode.typeArguments); if (!constructors.length) { error(baseTypeNode.expression, Diagnostics.No_base_constructor_has_the_specified_number_of_type_arguments); @@ -2697,11 +2707,11 @@ module ts { typeToString(type, /*enclosingDeclaration*/ undefined, TypeFormatFlags.WriteArrayAsGenericType)); return; } - type.baseTypes = [baseType]; + type.resolvedBaseTypes = [baseType]; } - function resolveBaseTypesOfInterface(type: InterfaceTypeWithBaseTypes): void { - type.baseTypes = []; + function resolveBaseTypesOfInterface(type: InterfaceType): void { + type.resolvedBaseTypes = []; for (let declaration of type.symbol.declarations) { if (declaration.kind === SyntaxKind.InterfaceDeclaration && getInterfaceBaseTypeNodes(declaration)) { for (let node of getInterfaceBaseTypeNodes(declaration)) { @@ -2709,7 +2719,7 @@ module ts { if (baseType !== unknownType) { if (getTargetType(baseType).flags & (TypeFlags.Class | TypeFlags.Interface)) { if (type !== baseType && !hasBaseType(baseType, type)) { - type.baseTypes.push(baseType); + type.resolvedBaseTypes.push(baseType); } else { error(declaration, Diagnostics.Type_0_recursively_references_itself_as_a_base_type, typeToString(type, /*enclosingDeclaration*/ undefined, TypeFormatFlags.WriteArrayAsGenericType)); @@ -7421,6 +7431,8 @@ module ts { if (node.expression.kind === SyntaxKind.SuperKeyword) { let superType = checkSuperExpression(node.expression); if (superType !== unknownType) { + // In super call, the candidate signatures are the matching arity signatures of the base constructor function instantiated + // with the type arguments specified in the extends clause. let baseTypeNode = getClassExtendsHeritageClauseElement(getAncestor(node, SyntaxKind.ClassDeclaration)); let baseConstructors = getInstantiatedConstructorsForTypeArguments(superType, baseTypeNode.typeArguments); return resolveCall(node, baseConstructors, candidatesOutArray); diff --git a/src/compiler/types.ts b/src/compiler/types.ts index c4c3722613345..177aaf10af076 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -1660,11 +1660,8 @@ module ts { typeParameters: TypeParameter[]; // Type parameters (undefined if non-generic) outerTypeParameters: TypeParameter[]; // Outer type parameters (undefined if none) localTypeParameters: TypeParameter[]; // Local type parameters (undefined if none) - baseConstructorType?: Type; // Base constructor type of class - } - - export interface InterfaceTypeWithBaseTypes extends InterfaceType { - baseTypes: ObjectType[]; + resolvedBaseConstructorType?: Type; // Resolved base constructor type of class + resolvedBaseTypes: ObjectType[]; // Resolved base types } export interface InterfaceTypeWithDeclaredMembers extends InterfaceType { From 38e3d9f71809231a99d73b382ca8ddc351fa74b2 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Tue, 16 Jun 2015 11:53:00 -0700 Subject: [PATCH 11/16] Adding another comment --- src/compiler/checker.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 88ab42b9bed45..e0407261e9dbd 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -10662,6 +10662,8 @@ module ts { checkTypeAssignableTo(staticType, getTypeWithoutSignatures(staticBaseType), node.name || node, Diagnostics.Class_static_side_0_incorrectly_extends_base_class_static_side_1); if (!(staticBaseType.symbol && staticBaseType.symbol.flags & SymbolFlags.Class)) { + // When the static base type is a "class-like" constructor function (but not actually a class), we verify + // that all instantiated base constructor signatures return the same type. let constructors = getInstantiatedConstructorsForTypeArguments(staticBaseType, baseTypeNode.typeArguments); if (forEach(constructors, sig => getReturnTypeOfSignature(sig) !== baseType)) { error(baseTypeNode.expression, Diagnostics.Base_constructors_must_all_have_the_same_return_type); From f6bcf7074caac8df6b4cd9b55269315cf2f03331 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Tue, 16 Jun 2015 12:07:49 -0700 Subject: [PATCH 12/16] Accepting new baselines after merge --- .../reference/genericTypeConstraints.errors.txt | 9 +++------ .../strictModeReservedWordInClassDeclaration.errors.txt | 7 +++++-- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/baselines/reference/genericTypeConstraints.errors.txt b/tests/baselines/reference/genericTypeConstraints.errors.txt index 9fd8b5f15be2f..ae97572b56ac0 100644 --- a/tests/baselines/reference/genericTypeConstraints.errors.txt +++ b/tests/baselines/reference/genericTypeConstraints.errors.txt @@ -1,9 +1,8 @@ -tests/cases/compiler/genericTypeConstraints.ts(9,27): error TS2344: Type 'FooExtended' does not satisfy the constraint 'Foo'. - Property 'fooMethod' is missing in type 'FooExtended'. tests/cases/compiler/genericTypeConstraints.ts(9,31): error TS2344: Type 'FooExtended' does not satisfy the constraint 'Foo'. + Property 'fooMethod' is missing in type 'FooExtended'. -==== tests/cases/compiler/genericTypeConstraints.ts (2 errors) ==== +==== tests/cases/compiler/genericTypeConstraints.ts (1 errors) ==== class Foo { fooMethod() {} } @@ -13,11 +12,9 @@ tests/cases/compiler/genericTypeConstraints.ts(9,31): error TS2344: Type 'FooExt class Bar { } class BarExtended extends Bar { - ~~~~~~~~~~~~~~~~ -!!! error TS2344: Type 'FooExtended' does not satisfy the constraint 'Foo'. -!!! error TS2344: Property 'fooMethod' is missing in type 'FooExtended'. ~~~~~~~~~~~ !!! error TS2344: Type 'FooExtended' does not satisfy the constraint 'Foo'. +!!! error TS2344: Property 'fooMethod' is missing in type 'FooExtended'. constructor() { super(); } diff --git a/tests/baselines/reference/strictModeReservedWordInClassDeclaration.errors.txt b/tests/baselines/reference/strictModeReservedWordInClassDeclaration.errors.txt index b8e004a5ea3fc..0b868960bed02 100644 --- a/tests/baselines/reference/strictModeReservedWordInClassDeclaration.errors.txt +++ b/tests/baselines/reference/strictModeReservedWordInClassDeclaration.errors.txt @@ -21,10 +21,11 @@ tests/cases/compiler/strictModeReservedWordInClassDeclaration.ts(26,21): error T tests/cases/compiler/strictModeReservedWordInClassDeclaration.ts(26,21): error TS2503: Cannot find namespace 'public'. tests/cases/compiler/strictModeReservedWordInClassDeclaration.ts(27,17): error TS1213: Identifier expected. 'package' is a reserved word in strict mode. Class definitions are automatically in strict mode. tests/cases/compiler/strictModeReservedWordInClassDeclaration.ts(27,17): error TS2304: Cannot find name 'package'. +tests/cases/compiler/strictModeReservedWordInClassDeclaration.ts(28,17): error TS1213: Identifier expected. 'package' is a reserved word in strict mode. Class definitions are automatically in strict mode. tests/cases/compiler/strictModeReservedWordInClassDeclaration.ts(28,17): error TS2304: Cannot find name 'package'. -==== tests/cases/compiler/strictModeReservedWordInClassDeclaration.ts (23 errors) ==== +==== tests/cases/compiler/strictModeReservedWordInClassDeclaration.ts (25 errors) ==== interface public { } class Foo { @@ -100,4 +101,6 @@ tests/cases/compiler/strictModeReservedWordInClassDeclaration.ts(28,17): error T !!! error TS2304: Cannot find name 'package'. class H extends package.A { } ~~~~~~~ -!!! error TS2304: Cannot find name 'package'. +!!! error TS1213: Identifier expected. 'package' is a reserved word in strict mode. Class definitions are automatically in strict mode. + ~~~~~~~ +!!! error TS2304: Cannot find name 'package'. \ No newline at end of file From d71af8a3fb485880866e097cbb6963d5aab62678 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Wed, 17 Jun 2015 13:28:39 -0700 Subject: [PATCH 13/16] Addressing CR feedback --- src/compiler/checker.ts | 41 +++++++++++-------- .../diagnosticInformationMap.generated.ts | 4 +- src/compiler/diagnosticMessages.json | 4 +- src/compiler/utilities.ts | 8 ++-- src/harness/typeWriter.ts | 2 +- src/services/services.ts | 2 +- 6 files changed, 35 insertions(+), 26 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 935f5ae33402c..bf42e584f09d7 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2639,7 +2639,8 @@ namespace ts { } let baseConstructorType = checkExpression(baseTypeNode.expression); if (baseConstructorType.flags & TypeFlags.ObjectType) { - // Force resolution of members such that we catch circularities + // Resolving the members of a class requires us to resolve the base class of that class. + // We force resolution here such that we catch circularities now. resolveObjectOrUnionTypeMembers(baseConstructorType); } if (!popTypeResolution()) { @@ -2647,7 +2648,7 @@ namespace ts { return type.resolvedBaseConstructorType = unknownType; } if (baseConstructorType !== unknownType && baseConstructorType !== nullType && !isConstructorType(baseConstructorType)) { - error(baseTypeNode.expression, Diagnostics.Base_expression_is_not_of_a_constructor_function_type); + error(baseTypeNode.expression, Diagnostics.Type_0_is_not_a_constructor_function_type, typeToString(baseConstructorType)); return type.resolvedBaseConstructorType = unknownType; } type.resolvedBaseConstructorType = baseConstructorType; @@ -2699,7 +2700,7 @@ namespace ts { return; } if (!(getTargetType(baseType).flags & (TypeFlags.Class | TypeFlags.Interface))) { - error(baseTypeNode.expression, Diagnostics.Base_constructor_does_not_return_a_class_or_interface_type); + error(baseTypeNode.expression, Diagnostics.Base_constructor_return_type_0_is_not_a_class_or_interface_type, typeToString(baseType)); return; } if (type === baseType || hasBaseType(baseType, type)) { @@ -5962,7 +5963,9 @@ namespace ts { let baseClassType = classType && getBaseTypes(classType)[0]; if (!baseClassType) { - error(node, Diagnostics.super_can_only_be_referenced_in_a_derived_class); + if (!classDeclaration || !getClassExtendsHeritageClauseElement(classDeclaration)) { + error(node, Diagnostics.super_can_only_be_referenced_in_a_derived_class); + } return unknownType; } @@ -8970,13 +8973,14 @@ namespace ts { checkDecorators(node); } - function checkTypeArgumentsAndConstraints(typeParameters: TypeParameter[], typeArguments: TypeNode[]) { - for (let i = 0; i < typeArguments.length; i++) { - let typeArgument = typeArguments[i]; - checkSourceElement(typeArgument); - let constraint = getConstraintOfTypeParameter(typeParameters[i]); - if (produceDiagnostics && constraint) { - checkTypeAssignableTo(getTypeFromTypeNode(typeArgument), constraint, typeArgument, Diagnostics.Type_0_does_not_satisfy_the_constraint_1); + function checkTypeArgumentConstraints(typeParameters: TypeParameter[], typeArguments: TypeNode[]) { + if (produceDiagnostics) { + for (let i = 0; i < typeParameters.length; i++) { + let constraint = getConstraintOfTypeParameter(typeParameters[i]); + if (constraint) { + let typeArgument = typeArguments[i]; + checkTypeAssignableTo(getTypeFromTypeNode(typeArgument), constraint, typeArgument, Diagnostics.Type_0_does_not_satisfy_the_constraint_1); + } } } } @@ -8986,9 +8990,10 @@ namespace ts { let type = getTypeFromTypeReference(node); if (type !== unknownType && node.typeArguments) { // Do type argument local checks only if referenced type is successfully resolved + forEach(node.typeArguments, checkSourceElement); let symbol = getNodeLinks(node).resolvedSymbol; let typeParameters = symbol.flags & SymbolFlags.TypeAlias ? getSymbolLinks(symbol).typeParameters : (type).target.localTypeParameters; - checkTypeArgumentsAndConstraints(typeParameters, node.typeArguments); + checkTypeArgumentConstraints(typeParameters, node.typeArguments); } } @@ -10588,15 +10593,19 @@ namespace ts { let baseType = baseTypes[0]; let staticBaseType = getBaseConstructorTypeOfClass(type); if (baseTypeNode.typeArguments) { - let constructors = getConstructorsForTypeArguments(staticBaseType, baseTypeNode.typeArguments); - checkTypeArgumentsAndConstraints(constructors[0].typeParameters, baseTypeNode.typeArguments); + forEach(baseTypeNode.typeArguments, checkSourceElement); + for (let constructor of getConstructorsForTypeArguments(staticBaseType, baseTypeNode.typeArguments)) { + checkTypeArgumentConstraints(constructor.typeParameters, baseTypeNode.typeArguments); + } } checkTypeAssignableTo(type, baseType, node.name || node, Diagnostics.Class_0_incorrectly_extends_base_class_1); checkTypeAssignableTo(staticType, getTypeWithoutSignatures(staticBaseType), node.name || node, Diagnostics.Class_static_side_0_incorrectly_extends_base_class_static_side_1); if (!(staticBaseType.symbol && staticBaseType.symbol.flags & SymbolFlags.Class)) { // When the static base type is a "class-like" constructor function (but not actually a class), we verify - // that all instantiated base constructor signatures return the same type. + // that all instantiated base constructor signatures return the same type. We can simply compare the type + // references (as opposed to checking the structure of the types) because elsewhere we have already checked + // that the base type is a class or interface type (and not, for example, an anonymous object type). let constructors = getInstantiatedConstructorsForTypeArguments(staticBaseType, baseTypeNode.typeArguments); if (forEach(constructors, sig => getReturnTypeOfSignature(sig) !== baseType)) { error(baseTypeNode.expression, Diagnostics.Base_constructors_must_all_have_the_same_return_type); @@ -11997,7 +12006,7 @@ namespace ts { return getTypeOfExpression(node); } - if (isClassExtendsExpressionWithTypeArguments(node)) { + if (isExpressionWithTypeArgumentsInClassExtendsClause(node)) { // A SyntaxKind.ExpressionWithTypeArguments is considered a type node, except when it occurs in the // extends clause of a class. We handle that case here. return getBaseTypes(getDeclaredTypeOfSymbol(getSymbolOfNode(node.parent.parent)))[0]; diff --git a/src/compiler/diagnosticInformationMap.generated.ts b/src/compiler/diagnosticInformationMap.generated.ts index 2eada488a68e3..09b009711fee2 100644 --- a/src/compiler/diagnosticInformationMap.generated.ts +++ b/src/compiler/diagnosticInformationMap.generated.ts @@ -385,9 +385,9 @@ namespace ts { No_best_common_type_exists_among_yield_expressions: { code: 2504, category: DiagnosticCategory.Error, key: "No best common type exists among yield expressions." }, A_generator_cannot_have_a_void_type_annotation: { code: 2505, category: DiagnosticCategory.Error, key: "A generator cannot have a 'void' type annotation." }, _0_is_referenced_directly_or_indirectly_in_its_own_base_expression: { code: 2506, category: DiagnosticCategory.Error, key: "'{0}' is referenced directly or indirectly in its own base expression." }, - Base_expression_is_not_of_a_constructor_function_type: { code: 2507, category: DiagnosticCategory.Error, key: "Base expression is not of a constructor function type." }, + Type_0_is_not_a_constructor_function_type: { code: 2507, category: DiagnosticCategory.Error, key: "Type '{0}' is not a constructor function type." }, No_base_constructor_has_the_specified_number_of_type_arguments: { code: 2508, category: DiagnosticCategory.Error, key: "No base constructor has the specified number of type arguments." }, - Base_constructor_does_not_return_a_class_or_interface_type: { code: 2509, category: DiagnosticCategory.Error, key: "Base constructor does not return a class or interface type." }, + Base_constructor_return_type_0_is_not_a_class_or_interface_type: { code: 2509, category: DiagnosticCategory.Error, key: "Base constructor return type '{0}' is not a class or interface type." }, Base_constructors_must_all_have_the_same_return_type: { code: 2510, category: DiagnosticCategory.Error, key: "Base constructors must all have the same return type." }, Import_declaration_0_is_using_private_name_1: { code: 4000, category: DiagnosticCategory.Error, key: "Import declaration '{0}' is using private name '{1}'." }, Type_parameter_0_of_exported_class_has_or_is_using_private_name_1: { code: 4002, category: DiagnosticCategory.Error, key: "Type parameter '{0}' of exported class has or is using private name '{1}'." }, diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json index dae42d20e2757..fee46a84c1e4e 100644 --- a/src/compiler/diagnosticMessages.json +++ b/src/compiler/diagnosticMessages.json @@ -1529,7 +1529,7 @@ "category": "Error", "code": 2506 }, - "Base expression is not of a constructor function type.": { + "Type '{0}' is not a constructor function type.": { "category": "Error", "code": 2507 }, @@ -1537,7 +1537,7 @@ "category": "Error", "code": 2508 }, - "Base constructor does not return a class or interface type.": { + "Base constructor return type '{0}' is not a class or interface type.": { "category": "Error", "code": 2509 }, diff --git a/src/compiler/utilities.ts b/src/compiler/utilities.ts index dc55b9fac5f0d..45b34f8b43ca0 100644 --- a/src/compiler/utilities.ts +++ b/src/compiler/utilities.ts @@ -426,7 +426,7 @@ namespace ts { // Specialized signatures can have string literals as their parameters' type names return node.parent.kind === SyntaxKind.Parameter; case SyntaxKind.ExpressionWithTypeArguments: - return !isClassExtendsExpressionWithTypeArguments(node); + return !isExpressionWithTypeArgumentsInClassExtendsClause(node); // Identifiers and qualified names may be type nodes, depending on their context. Climb // above them to find the lowest container @@ -460,7 +460,7 @@ namespace ts { } switch (parent.kind) { case SyntaxKind.ExpressionWithTypeArguments: - return !isClassExtendsExpressionWithTypeArguments(parent); + return !isExpressionWithTypeArgumentsInClassExtendsClause(parent); case SyntaxKind.TypeParameter: return node === (parent).constraint; case SyntaxKind.PropertyDeclaration: @@ -920,7 +920,7 @@ namespace ts { case SyntaxKind.Decorator: return true; case SyntaxKind.ExpressionWithTypeArguments: - return isClassExtendsExpressionWithTypeArguments(parent); + return (parent).expression === node && isExpressionWithTypeArgumentsInClassExtendsClause(parent); default: if (isExpression(parent)) { return true; @@ -1914,7 +1914,7 @@ namespace ts { return token >= SyntaxKind.FirstAssignment && token <= SyntaxKind.LastAssignment; } - export function isClassExtendsExpressionWithTypeArguments(node: Node): boolean { + export function isExpressionWithTypeArgumentsInClassExtendsClause(node: Node): boolean { return node.kind === SyntaxKind.ExpressionWithTypeArguments && (node.parent).token === SyntaxKind.ExtendsKeyword && node.parent.parent.kind === SyntaxKind.ClassDeclaration; diff --git a/src/harness/typeWriter.ts b/src/harness/typeWriter.ts index ac695fc23a480..b68e606c79d3a 100644 --- a/src/harness/typeWriter.ts +++ b/src/harness/typeWriter.ts @@ -43,7 +43,7 @@ class TypeWriterWalker { // Workaround to ensure we output 'C' instead of 'typeof C' for base class expressions // var type = this.checker.getTypeAtLocation(node); - var type = node.parent && ts.isClassExtendsExpressionWithTypeArguments(node.parent) && this.checker.getTypeAtLocation(node.parent) || this.checker.getTypeAtLocation(node); + var type = node.parent && ts.isExpressionWithTypeArgumentsInClassExtendsClause(node.parent) && this.checker.getTypeAtLocation(node.parent) || this.checker.getTypeAtLocation(node); ts.Debug.assert(type !== undefined, "type doesn't exist"); var symbol = this.checker.getSymbolAtLocation(node); diff --git a/src/services/services.ts b/src/services/services.ts index 9d57ff75679a3..280386513d39b 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -5812,7 +5812,7 @@ namespace ts { } return node.parent.kind === SyntaxKind.TypeReference || - (node.parent.kind === SyntaxKind.ExpressionWithTypeArguments && !isClassExtendsExpressionWithTypeArguments(node.parent)); + (node.parent.kind === SyntaxKind.ExpressionWithTypeArguments && !isExpressionWithTypeArgumentsInClassExtendsClause(node.parent)); } function isNamespaceReference(node: Node): boolean { From 471f6e05360d87aac2ad88d9ad506c954a51e7ab Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Wed, 17 Jun 2015 13:29:08 -0700 Subject: [PATCH 14/16] Accepting new baselines --- .../classExtendingNonConstructor.errors.txt | 28 +++++++++---------- .../classExtendingPrimitive.errors.txt | 8 +++--- ...ithModuleNotReferingConstructor.errors.txt | 4 +-- ...useClassNotReferringConstructor.errors.txt | 4 +-- .../classExtendsEveryObjectType.errors.txt | 20 ++++++------- .../classExtendsEveryObjectType2.errors.txt | 8 +++--- ...endsShadowedConstructorFunction.errors.txt | 4 +-- ...ExtendsValidConstructorFunction.errors.txt | 4 +-- .../extendNonClassSymbol2.errors.txt | 4 +-- .../reference/generatorTypeCheck40.errors.txt | 4 +-- .../reference/generatorTypeCheck60.errors.txt | 4 +-- .../reference/importAsBaseClass.errors.txt | 4 +-- ...-does-not-affect-class-heritage.errors.txt | 4 +-- ...IncorrectNumberOfTypeArguments1.errors.txt | 5 +--- ...ericTypeButWithNoTypeArguments1.errors.txt | 5 +--- ...enericTypeButWithTypeArguments1.errors.txt | 5 +--- .../thisInInvalidContexts.errors.txt | 4 +-- ...InInvalidContextsExternalModule.errors.txt | 4 +-- 18 files changed, 57 insertions(+), 66 deletions(-) diff --git a/tests/baselines/reference/classExtendingNonConstructor.errors.txt b/tests/baselines/reference/classExtendingNonConstructor.errors.txt index b1e3994cf1ccc..17b3610d25242 100644 --- a/tests/baselines/reference/classExtendingNonConstructor.errors.txt +++ b/tests/baselines/reference/classExtendingNonConstructor.errors.txt @@ -1,10 +1,10 @@ -tests/cases/conformance/classes/classDeclarations/classExtendingNonConstructor.ts(7,18): error TS2507: Base expression is not of a constructor function type. -tests/cases/conformance/classes/classDeclarations/classExtendingNonConstructor.ts(8,18): error TS2507: Base expression is not of a constructor function type. -tests/cases/conformance/classes/classDeclarations/classExtendingNonConstructor.ts(9,18): error TS2507: Base expression is not of a constructor function type. -tests/cases/conformance/classes/classDeclarations/classExtendingNonConstructor.ts(10,18): error TS2507: Base expression is not of a constructor function type. -tests/cases/conformance/classes/classDeclarations/classExtendingNonConstructor.ts(11,18): error TS2507: Base expression is not of a constructor function type. -tests/cases/conformance/classes/classDeclarations/classExtendingNonConstructor.ts(12,18): error TS2507: Base expression is not of a constructor function type. -tests/cases/conformance/classes/classDeclarations/classExtendingNonConstructor.ts(13,18): error TS2507: Base expression is not of a constructor function type. +tests/cases/conformance/classes/classDeclarations/classExtendingNonConstructor.ts(7,18): error TS2507: Type 'undefined' is not a constructor function type. +tests/cases/conformance/classes/classDeclarations/classExtendingNonConstructor.ts(8,18): error TS2507: Type 'boolean' is not a constructor function type. +tests/cases/conformance/classes/classDeclarations/classExtendingNonConstructor.ts(9,18): error TS2507: Type 'boolean' is not a constructor function type. +tests/cases/conformance/classes/classDeclarations/classExtendingNonConstructor.ts(10,18): error TS2507: Type 'number' is not a constructor function type. +tests/cases/conformance/classes/classDeclarations/classExtendingNonConstructor.ts(11,18): error TS2507: Type 'string' is not a constructor function type. +tests/cases/conformance/classes/classDeclarations/classExtendingNonConstructor.ts(12,18): error TS2507: Type '{}' is not a constructor function type. +tests/cases/conformance/classes/classDeclarations/classExtendingNonConstructor.ts(13,18): error TS2507: Type '() => void' is not a constructor function type. ==== tests/cases/conformance/classes/classDeclarations/classExtendingNonConstructor.ts (7 errors) ==== @@ -16,23 +16,23 @@ tests/cases/conformance/classes/classDeclarations/classExtendingNonConstructor.t class C1 extends undefined { } ~~~~~~~~~ -!!! error TS2507: Base expression is not of a constructor function type. +!!! error TS2507: Type 'undefined' is not a constructor function type. class C2 extends true { } ~~~~ -!!! error TS2507: Base expression is not of a constructor function type. +!!! error TS2507: Type 'boolean' is not a constructor function type. class C3 extends false { } ~~~~~ -!!! error TS2507: Base expression is not of a constructor function type. +!!! error TS2507: Type 'boolean' is not a constructor function type. class C4 extends 42 { } ~~ -!!! error TS2507: Base expression is not of a constructor function type. +!!! error TS2507: Type 'number' is not a constructor function type. class C5 extends "hello" { } ~~~~~~~ -!!! error TS2507: Base expression is not of a constructor function type. +!!! error TS2507: Type 'string' is not a constructor function type. class C6 extends x { } ~ -!!! error TS2507: Base expression is not of a constructor function type. +!!! error TS2507: Type '{}' is not a constructor function type. class C7 extends foo { } ~~~ -!!! error TS2507: Base expression is not of a constructor function type. +!!! error TS2507: Type '() => void' is not a constructor function type. \ No newline at end of file diff --git a/tests/baselines/reference/classExtendingPrimitive.errors.txt b/tests/baselines/reference/classExtendingPrimitive.errors.txt index 68525a1eabd74..554e0fbecbc64 100644 --- a/tests/baselines/reference/classExtendingPrimitive.errors.txt +++ b/tests/baselines/reference/classExtendingPrimitive.errors.txt @@ -4,9 +4,9 @@ tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/cla tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(6,18): error TS2304: Cannot find name 'Void'. tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(7,19): error TS1109: Expression expected. tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(8,18): error TS2304: Cannot find name 'Null'. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(10,18): error TS2507: Base expression is not of a constructor function type. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(10,18): error TS2507: Type 'undefined' is not a constructor function type. tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(11,18): error TS2304: Cannot find name 'Undefined'. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(14,18): error TS2507: Base expression is not of a constructor function type. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts(14,18): error TS2507: Type 'typeof E' is not a constructor function type. ==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendingPrimitive.ts (9 errors) ==== @@ -33,7 +33,7 @@ tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/cla class C5a extends null { } class C6 extends undefined { } ~~~~~~~~~ -!!! error TS2507: Base expression is not of a constructor function type. +!!! error TS2507: Type 'undefined' is not a constructor function type. class C7 extends Undefined { } ~~~~~~~~~ !!! error TS2304: Cannot find name 'Undefined'. @@ -41,4 +41,4 @@ tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/cla enum E { A } class C8 extends E { } ~ -!!! error TS2507: Base expression is not of a constructor function type. \ No newline at end of file +!!! error TS2507: Type 'typeof E' is not a constructor function type. \ No newline at end of file diff --git a/tests/baselines/reference/classExtendsClauseClassMergedWithModuleNotReferingConstructor.errors.txt b/tests/baselines/reference/classExtendsClauseClassMergedWithModuleNotReferingConstructor.errors.txt index b1c5d253b5608..dfac4f68885ab 100644 --- a/tests/baselines/reference/classExtendsClauseClassMergedWithModuleNotReferingConstructor.errors.txt +++ b/tests/baselines/reference/classExtendsClauseClassMergedWithModuleNotReferingConstructor.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/classExtendsClauseClassMergedWithModuleNotReferingConstructor.ts(10,21): error TS2507: Base expression is not of a constructor function type. +tests/cases/compiler/classExtendsClauseClassMergedWithModuleNotReferingConstructor.ts(10,21): error TS2507: Type 'number' is not a constructor function type. ==== tests/cases/compiler/classExtendsClauseClassMergedWithModuleNotReferingConstructor.ts (1 errors) ==== @@ -13,7 +13,7 @@ tests/cases/compiler/classExtendsClauseClassMergedWithModuleNotReferingConstruct var A = 1; class B extends A { ~ -!!! error TS2507: Base expression is not of a constructor function type. +!!! error TS2507: Type 'number' is not a constructor function type. b: string; } } \ No newline at end of file diff --git a/tests/baselines/reference/classExtendsClauseClassNotReferringConstructor.errors.txt b/tests/baselines/reference/classExtendsClauseClassNotReferringConstructor.errors.txt index 448167d739d65..ff355ec653c28 100644 --- a/tests/baselines/reference/classExtendsClauseClassNotReferringConstructor.errors.txt +++ b/tests/baselines/reference/classExtendsClauseClassNotReferringConstructor.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/classExtendsClauseClassNotReferringConstructor.ts(4,21): error TS2507: Base expression is not of a constructor function type. +tests/cases/compiler/classExtendsClauseClassNotReferringConstructor.ts(4,21): error TS2507: Type 'number' is not a constructor function type. ==== tests/cases/compiler/classExtendsClauseClassNotReferringConstructor.ts (1 errors) ==== @@ -7,6 +7,6 @@ tests/cases/compiler/classExtendsClauseClassNotReferringConstructor.ts(4,21): er var A = 1; class B extends A { b: string; } ~ -!!! error TS2507: Base expression is not of a constructor function type. +!!! error TS2507: Type 'number' is not a constructor function type. } \ No newline at end of file diff --git a/tests/baselines/reference/classExtendsEveryObjectType.errors.txt b/tests/baselines/reference/classExtendsEveryObjectType.errors.txt index e1f1c785bbccd..0339dfad13a44 100644 --- a/tests/baselines/reference/classExtendsEveryObjectType.errors.txt +++ b/tests/baselines/reference/classExtendsEveryObjectType.errors.txt @@ -1,11 +1,11 @@ tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(4,17): error TS2304: Cannot find name 'I'. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(6,18): error TS2507: Base expression is not of a constructor function type. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(6,18): error TS2507: Type '{ foo: any; }' is not a constructor function type. tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(6,25): error TS2304: Cannot find name 'string'. tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(6,31): error TS1005: ',' expected. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(8,18): error TS2507: Base expression is not of a constructor function type. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(11,18): error TS2507: Base expression is not of a constructor function type. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(14,18): error TS2507: Base expression is not of a constructor function type. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(16,18): error TS2507: Base expression is not of a constructor function type. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(8,18): error TS2507: Type '{ foo: string; }' is not a constructor function type. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(11,18): error TS2507: Type 'typeof M' is not a constructor function type. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(14,18): error TS2507: Type '() => void' is not a constructor function type. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts(16,18): error TS2507: Type 'undefined[]' is not a constructor function type. ==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType.ts (8 errors) ==== @@ -18,7 +18,7 @@ tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/cla class C2 extends { foo: string; } { } // error ~~~~~~~~~~~~~~~~ -!!! error TS2507: Base expression is not of a constructor function type. +!!! error TS2507: Type '{ foo: any; }' is not a constructor function type. ~~~~~~ !!! error TS2304: Cannot find name 'string'. ~ @@ -26,18 +26,18 @@ tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/cla var x: { foo: string; } class C3 extends x { } // error ~ -!!! error TS2507: Base expression is not of a constructor function type. +!!! error TS2507: Type '{ foo: string; }' is not a constructor function type. module M { export var x = 1; } class C4 extends M { } // error ~ -!!! error TS2507: Base expression is not of a constructor function type. +!!! error TS2507: Type 'typeof M' is not a constructor function type. function foo() { } class C5 extends foo { } // error ~~~ -!!! error TS2507: Base expression is not of a constructor function type. +!!! error TS2507: Type '() => void' is not a constructor function type. class C6 extends []{ } // error ~~ -!!! error TS2507: Base expression is not of a constructor function type. \ No newline at end of file +!!! error TS2507: Type 'undefined[]' is not a constructor function type. \ No newline at end of file diff --git a/tests/baselines/reference/classExtendsEveryObjectType2.errors.txt b/tests/baselines/reference/classExtendsEveryObjectType2.errors.txt index 650c4e4886eb4..af52a248b5419 100644 --- a/tests/baselines/reference/classExtendsEveryObjectType2.errors.txt +++ b/tests/baselines/reference/classExtendsEveryObjectType2.errors.txt @@ -1,13 +1,13 @@ -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType2.ts(1,18): error TS2507: Base expression is not of a constructor function type. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType2.ts(1,18): error TS2507: Type '{ foo: any; }' is not a constructor function type. tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType2.ts(1,25): error TS2304: Cannot find name 'string'. tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType2.ts(1,31): error TS1005: ',' expected. -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType2.ts(3,18): error TS2507: Base expression is not of a constructor function type. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType2.ts(3,18): error TS2507: Type 'undefined[]' is not a constructor function type. ==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsEveryObjectType2.ts (4 errors) ==== class C2 extends { foo: string; } { } // error ~~~~~~~~~~~~~~~~ -!!! error TS2507: Base expression is not of a constructor function type. +!!! error TS2507: Type '{ foo: any; }' is not a constructor function type. ~~~~~~ !!! error TS2304: Cannot find name 'string'. ~ @@ -15,4 +15,4 @@ tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/cla class C6 extends []{ } // error ~~ -!!! error TS2507: Base expression is not of a constructor function type. \ No newline at end of file +!!! error TS2507: Type 'undefined[]' is not a constructor function type. \ No newline at end of file diff --git a/tests/baselines/reference/classExtendsShadowedConstructorFunction.errors.txt b/tests/baselines/reference/classExtendsShadowedConstructorFunction.errors.txt index 475a980e4e610..3d8c7454255b0 100644 --- a/tests/baselines/reference/classExtendsShadowedConstructorFunction.errors.txt +++ b/tests/baselines/reference/classExtendsShadowedConstructorFunction.errors.txt @@ -1,4 +1,4 @@ -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsShadowedConstructorFunction.ts(5,21): error TS2507: Base expression is not of a constructor function type. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsShadowedConstructorFunction.ts(5,21): error TS2507: Type 'number' is not a constructor function type. ==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsShadowedConstructorFunction.ts (1 errors) ==== @@ -8,7 +8,7 @@ tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/cla var C = 1; class D extends C { // error, C must evaluate to constructor function ~ -!!! error TS2507: Base expression is not of a constructor function type. +!!! error TS2507: Type 'number' is not a constructor function type. bar: string; } } \ No newline at end of file diff --git a/tests/baselines/reference/classExtendsValidConstructorFunction.errors.txt b/tests/baselines/reference/classExtendsValidConstructorFunction.errors.txt index 6ebd818e54748..fdfd9110ce658 100644 --- a/tests/baselines/reference/classExtendsValidConstructorFunction.errors.txt +++ b/tests/baselines/reference/classExtendsValidConstructorFunction.errors.txt @@ -1,4 +1,4 @@ -tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsValidConstructorFunction.ts(5,17): error TS2507: Base expression is not of a constructor function type. +tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsValidConstructorFunction.ts(5,17): error TS2507: Type '() => void' is not a constructor function type. ==== tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/classExtendsValidConstructorFunction.ts (1 errors) ==== @@ -8,4 +8,4 @@ tests/cases/conformance/classes/classDeclarations/classHeritageSpecification/cla class C extends foo { } // error, cannot extend it though ~~~ -!!! error TS2507: Base expression is not of a constructor function type. \ No newline at end of file +!!! error TS2507: Type '() => void' is not a constructor function type. \ No newline at end of file diff --git a/tests/baselines/reference/extendNonClassSymbol2.errors.txt b/tests/baselines/reference/extendNonClassSymbol2.errors.txt index 882a8b447f8a6..5554ff60a2625 100644 --- a/tests/baselines/reference/extendNonClassSymbol2.errors.txt +++ b/tests/baselines/reference/extendNonClassSymbol2.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/extendNonClassSymbol2.ts(5,17): error TS2507: Base expression is not of a constructor function type. +tests/cases/compiler/extendNonClassSymbol2.ts(5,17): error TS2507: Type '() => void' is not a constructor function type. ==== tests/cases/compiler/extendNonClassSymbol2.ts (1 errors) ==== @@ -8,4 +8,4 @@ tests/cases/compiler/extendNonClassSymbol2.ts(5,17): error TS2507: Base expressi var x = new Foo(); // legal, considered a constructor function class C extends Foo {} // error, could not find symbol Foo ~~~ -!!! error TS2507: Base expression is not of a constructor function type. \ No newline at end of file +!!! error TS2507: Type '() => void' is not a constructor function type. \ No newline at end of file diff --git a/tests/baselines/reference/generatorTypeCheck40.errors.txt b/tests/baselines/reference/generatorTypeCheck40.errors.txt index 6341ec9ae0a05..ba93862c8d538 100644 --- a/tests/baselines/reference/generatorTypeCheck40.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck40.errors.txt @@ -1,4 +1,4 @@ -tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck40.ts(2,21): error TS2507: Base expression is not of a constructor function type. +tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck40.ts(2,21): error TS2507: Type 'any' is not a constructor function type. tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck40.ts(2,22): error TS1163: A 'yield' expression is only allowed in a generator body. @@ -6,7 +6,7 @@ tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck40.ts(2,22): erro function* g() { class C extends (yield 0) { } ~~~~~~~~~ -!!! error TS2507: Base expression is not of a constructor function type. +!!! error TS2507: Type 'any' is not a constructor function type. ~~~~~ !!! error TS1163: A 'yield' expression is only allowed in a generator body. } \ No newline at end of file diff --git a/tests/baselines/reference/generatorTypeCheck60.errors.txt b/tests/baselines/reference/generatorTypeCheck60.errors.txt index 4d230a81b5b28..5330cd186b704 100644 --- a/tests/baselines/reference/generatorTypeCheck60.errors.txt +++ b/tests/baselines/reference/generatorTypeCheck60.errors.txt @@ -1,4 +1,4 @@ -tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck60.ts(2,21): error TS2507: Base expression is not of a constructor function type. +tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck60.ts(2,21): error TS2507: Type 'any' is not a constructor function type. tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck60.ts(2,22): error TS1163: A 'yield' expression is only allowed in a generator body. @@ -6,7 +6,7 @@ tests/cases/conformance/es6/yieldExpressions/generatorTypeCheck60.ts(2,22): erro function* g() { class C extends (yield) {}; ~~~~~~~ -!!! error TS2507: Base expression is not of a constructor function type. +!!! error TS2507: Type 'any' is not a constructor function type. ~~~~~ !!! error TS1163: A 'yield' expression is only allowed in a generator body. } \ No newline at end of file diff --git a/tests/baselines/reference/importAsBaseClass.errors.txt b/tests/baselines/reference/importAsBaseClass.errors.txt index 4b923ea232391..835fd143f7046 100644 --- a/tests/baselines/reference/importAsBaseClass.errors.txt +++ b/tests/baselines/reference/importAsBaseClass.errors.txt @@ -1,11 +1,11 @@ -tests/cases/compiler/importAsBaseClass_1.ts(2,21): error TS2507: Base expression is not of a constructor function type. +tests/cases/compiler/importAsBaseClass_1.ts(2,21): error TS2507: Type 'typeof "tests/cases/compiler/importAsBaseClass_0"' is not a constructor function type. ==== tests/cases/compiler/importAsBaseClass_1.ts (1 errors) ==== import Greeter = require("importAsBaseClass_0"); class Hello extends Greeter { } ~~~~~~~ -!!! error TS2507: Base expression is not of a constructor function type. +!!! error TS2507: Type 'typeof "tests/cases/compiler/importAsBaseClass_0"' is not a constructor function type. ==== tests/cases/compiler/importAsBaseClass_0.ts (0 errors) ==== export class Greeter { diff --git a/tests/baselines/reference/qualifiedName_entity-name-resolution-does-not-affect-class-heritage.errors.txt b/tests/baselines/reference/qualifiedName_entity-name-resolution-does-not-affect-class-heritage.errors.txt index 3c67ff44fd3f2..e6929df9baeb1 100644 --- a/tests/baselines/reference/qualifiedName_entity-name-resolution-does-not-affect-class-heritage.errors.txt +++ b/tests/baselines/reference/qualifiedName_entity-name-resolution-does-not-affect-class-heritage.errors.txt @@ -1,4 +1,4 @@ -tests/cases/compiler/qualifiedName_entity-name-resolution-does-not-affect-class-heritage.ts(5,20): error TS2507: Base expression is not of a constructor function type. +tests/cases/compiler/qualifiedName_entity-name-resolution-does-not-affect-class-heritage.ts(5,20): error TS2507: Type 'number' is not a constructor function type. ==== tests/cases/compiler/qualifiedName_entity-name-resolution-does-not-affect-class-heritage.ts (1 errors) ==== @@ -8,5 +8,5 @@ tests/cases/compiler/qualifiedName_entity-name-resolution-does-not-affect-class- class Beta extends Alpha.x { ~~~~~~~ -!!! error TS2507: Base expression is not of a constructor function type. +!!! error TS2507: Type 'number' is not a constructor function type. } \ No newline at end of file diff --git a/tests/baselines/reference/superCallFromClassThatDerivesFromGenericTypeButWithIncorrectNumberOfTypeArguments1.errors.txt b/tests/baselines/reference/superCallFromClassThatDerivesFromGenericTypeButWithIncorrectNumberOfTypeArguments1.errors.txt index 14905b224ad84..f491cac9f0c70 100644 --- a/tests/baselines/reference/superCallFromClassThatDerivesFromGenericTypeButWithIncorrectNumberOfTypeArguments1.errors.txt +++ b/tests/baselines/reference/superCallFromClassThatDerivesFromGenericTypeButWithIncorrectNumberOfTypeArguments1.errors.txt @@ -1,8 +1,7 @@ tests/cases/compiler/superCallFromClassThatDerivesFromGenericTypeButWithIncorrectNumberOfTypeArguments1.ts(8,17): error TS2314: Generic type 'A' requires 2 type argument(s). -tests/cases/compiler/superCallFromClassThatDerivesFromGenericTypeButWithIncorrectNumberOfTypeArguments1.ts(9,21): error TS2335: 'super' can only be referenced in a derived class. -==== tests/cases/compiler/superCallFromClassThatDerivesFromGenericTypeButWithIncorrectNumberOfTypeArguments1.ts (2 errors) ==== +==== tests/cases/compiler/superCallFromClassThatDerivesFromGenericTypeButWithIncorrectNumberOfTypeArguments1.ts (1 errors) ==== class A { constructor(private map: (value: T1) => T2) { @@ -14,6 +13,4 @@ tests/cases/compiler/superCallFromClassThatDerivesFromGenericTypeButWithIncorrec ~~~~~~~~~ !!! error TS2314: Generic type 'A' requires 2 type argument(s). constructor() { super(value => String(value)); } - ~~~~~ -!!! error TS2335: 'super' can only be referenced in a derived class. } \ No newline at end of file diff --git a/tests/baselines/reference/superCallFromClassThatDerivesFromGenericTypeButWithNoTypeArguments1.errors.txt b/tests/baselines/reference/superCallFromClassThatDerivesFromGenericTypeButWithNoTypeArguments1.errors.txt index d402272df1bf9..32047f3b41719 100644 --- a/tests/baselines/reference/superCallFromClassThatDerivesFromGenericTypeButWithNoTypeArguments1.errors.txt +++ b/tests/baselines/reference/superCallFromClassThatDerivesFromGenericTypeButWithNoTypeArguments1.errors.txt @@ -1,8 +1,7 @@ tests/cases/compiler/superCallFromClassThatDerivesFromGenericTypeButWithNoTypeArguments1.ts(8,17): error TS2314: Generic type 'A' requires 2 type argument(s). -tests/cases/compiler/superCallFromClassThatDerivesFromGenericTypeButWithNoTypeArguments1.ts(9,21): error TS2335: 'super' can only be referenced in a derived class. -==== tests/cases/compiler/superCallFromClassThatDerivesFromGenericTypeButWithNoTypeArguments1.ts (2 errors) ==== +==== tests/cases/compiler/superCallFromClassThatDerivesFromGenericTypeButWithNoTypeArguments1.ts (1 errors) ==== class A { constructor(private map: (value: T1) => T2) { @@ -14,6 +13,4 @@ tests/cases/compiler/superCallFromClassThatDerivesFromGenericTypeButWithNoTypeAr ~ !!! error TS2314: Generic type 'A' requires 2 type argument(s). constructor() { super(value => String(value)); } - ~~~~~ -!!! error TS2335: 'super' can only be referenced in a derived class. } \ No newline at end of file diff --git a/tests/baselines/reference/superCallFromClassThatDerivesNonGenericTypeButWithTypeArguments1.errors.txt b/tests/baselines/reference/superCallFromClassThatDerivesNonGenericTypeButWithTypeArguments1.errors.txt index 8bbf8b87cd310..4aa9e5a134b29 100644 --- a/tests/baselines/reference/superCallFromClassThatDerivesNonGenericTypeButWithTypeArguments1.errors.txt +++ b/tests/baselines/reference/superCallFromClassThatDerivesNonGenericTypeButWithTypeArguments1.errors.txt @@ -1,8 +1,7 @@ tests/cases/compiler/superCallFromClassThatDerivesNonGenericTypeButWithTypeArguments1.ts(8,17): error TS2315: Type 'A' is not generic. -tests/cases/compiler/superCallFromClassThatDerivesNonGenericTypeButWithTypeArguments1.ts(9,21): error TS2335: 'super' can only be referenced in a derived class. -==== tests/cases/compiler/superCallFromClassThatDerivesNonGenericTypeButWithTypeArguments1.ts (2 errors) ==== +==== tests/cases/compiler/superCallFromClassThatDerivesNonGenericTypeButWithTypeArguments1.ts (1 errors) ==== class A { constructor(private map: (value: number) => string) { @@ -14,6 +13,4 @@ tests/cases/compiler/superCallFromClassThatDerivesNonGenericTypeButWithTypeArgum ~~~~~~~~~~~~~~~~~ !!! error TS2315: Type 'A' is not generic. constructor() { super(value => String(value)); } - ~~~~~ -!!! error TS2335: 'super' can only be referenced in a derived class. } \ No newline at end of file diff --git a/tests/baselines/reference/thisInInvalidContexts.errors.txt b/tests/baselines/reference/thisInInvalidContexts.errors.txt index 9cb554ab5dfc6..d6f24cbcfdce3 100644 --- a/tests/baselines/reference/thisInInvalidContexts.errors.txt +++ b/tests/baselines/reference/thisInInvalidContexts.errors.txt @@ -1,7 +1,7 @@ tests/cases/conformance/expressions/thisKeyword/thisInInvalidContexts.ts(3,16): error TS2334: 'this' cannot be referenced in a static property initializer. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContexts.ts(22,15): error TS2332: 'this' cannot be referenced in current location. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContexts.ts(28,13): error TS2331: 'this' cannot be referenced in a module or namespace body. -tests/cases/conformance/expressions/thisKeyword/thisInInvalidContexts.ts(38,25): error TS2507: Base expression is not of a constructor function type. +tests/cases/conformance/expressions/thisKeyword/thisInInvalidContexts.ts(38,25): error TS2507: Type 'any' is not a constructor function type. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContexts.ts(44,9): error TS2332: 'this' cannot be referenced in current location. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContexts.ts(45,9): error TS2332: 'this' cannot be referenced in current location. @@ -52,7 +52,7 @@ tests/cases/conformance/expressions/thisKeyword/thisInInvalidContexts.ts(45,9): class ErrClass3 extends this { ~~~~ -!!! error TS2507: Base expression is not of a constructor function type. +!!! error TS2507: Type 'any' is not a constructor function type. } diff --git a/tests/baselines/reference/thisInInvalidContextsExternalModule.errors.txt b/tests/baselines/reference/thisInInvalidContextsExternalModule.errors.txt index 96fab807f5e9d..df47901d771c3 100644 --- a/tests/baselines/reference/thisInInvalidContextsExternalModule.errors.txt +++ b/tests/baselines/reference/thisInInvalidContextsExternalModule.errors.txt @@ -1,7 +1,7 @@ tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalModule.ts(3,16): error TS2334: 'this' cannot be referenced in a static property initializer. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalModule.ts(22,15): error TS2332: 'this' cannot be referenced in current location. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalModule.ts(28,13): error TS2331: 'this' cannot be referenced in a module or namespace body. -tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalModule.ts(38,25): error TS2507: Base expression is not of a constructor function type. +tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalModule.ts(38,25): error TS2507: Type 'any' is not a constructor function type. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalModule.ts(44,9): error TS2332: 'this' cannot be referenced in current location. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalModule.ts(45,9): error TS2332: 'this' cannot be referenced in current location. tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalModule.ts(48,1): error TS1148: Cannot compile modules unless the '--module' flag is provided. @@ -53,7 +53,7 @@ tests/cases/conformance/expressions/thisKeyword/thisInInvalidContextsExternalMod class ErrClass3 extends this { ~~~~ -!!! error TS2507: Base expression is not of a constructor function type. +!!! error TS2507: Type 'any' is not a constructor function type. } From efcccaa4f8db014d1a5348b7d6f0340e9dd6e67f Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Wed, 17 Jun 2015 14:04:05 -0700 Subject: [PATCH 15/16] Addressing more CR feedback --- src/compiler/checker.ts | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index bf42e584f09d7..0c1db9df22f4d 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -8973,16 +8973,16 @@ namespace ts { checkDecorators(node); } - function checkTypeArgumentConstraints(typeParameters: TypeParameter[], typeArguments: TypeNode[]) { - if (produceDiagnostics) { - for (let i = 0; i < typeParameters.length; i++) { - let constraint = getConstraintOfTypeParameter(typeParameters[i]); - if (constraint) { - let typeArgument = typeArguments[i]; - checkTypeAssignableTo(getTypeFromTypeNode(typeArgument), constraint, typeArgument, Diagnostics.Type_0_does_not_satisfy_the_constraint_1); - } + function checkTypeArgumentConstraints(typeParameters: TypeParameter[], typeArguments: TypeNode[]): boolean { + let result = true; + for (let i = 0; i < typeParameters.length; i++) { + let constraint = getConstraintOfTypeParameter(typeParameters[i]); + if (constraint) { + let typeArgument = typeArguments[i]; + result = result && checkTypeAssignableTo(getTypeFromTypeNode(typeArgument), constraint, typeArgument, Diagnostics.Type_0_does_not_satisfy_the_constraint_1); } } + return result; } function checkTypeReferenceNode(node: TypeReferenceNode | ExpressionWithTypeArguments) { @@ -8991,9 +8991,11 @@ namespace ts { if (type !== unknownType && node.typeArguments) { // Do type argument local checks only if referenced type is successfully resolved forEach(node.typeArguments, checkSourceElement); - let symbol = getNodeLinks(node).resolvedSymbol; - let typeParameters = symbol.flags & SymbolFlags.TypeAlias ? getSymbolLinks(symbol).typeParameters : (type).target.localTypeParameters; - checkTypeArgumentConstraints(typeParameters, node.typeArguments); + if (produceDiagnostics) { + let symbol = getNodeLinks(node).resolvedSymbol; + let typeParameters = symbol.flags & SymbolFlags.TypeAlias ? getSymbolLinks(symbol).typeParameters : (type).target.localTypeParameters; + checkTypeArgumentConstraints(typeParameters, node.typeArguments); + } } } @@ -10595,7 +10597,9 @@ namespace ts { if (baseTypeNode.typeArguments) { forEach(baseTypeNode.typeArguments, checkSourceElement); for (let constructor of getConstructorsForTypeArguments(staticBaseType, baseTypeNode.typeArguments)) { - checkTypeArgumentConstraints(constructor.typeParameters, baseTypeNode.typeArguments); + if (!checkTypeArgumentConstraints(constructor.typeParameters, baseTypeNode.typeArguments)) { + break; + } } } checkTypeAssignableTo(type, baseType, node.name || node, Diagnostics.Class_0_incorrectly_extends_base_class_1); From 5b9a1b5e20696be8c6e27480cd43034f74fbac34 Mon Sep 17 00:00:00 2001 From: Anders Hejlsberg Date: Wed, 17 Jun 2015 14:17:52 -0700 Subject: [PATCH 16/16] Accepting new baselines after master merge --- tests/baselines/reference/classExtendingBuiltinType.js | 3 +-- tests/baselines/reference/classExtendingClassLikeType.js | 3 +-- tests/baselines/reference/classExtendingNonConstructor.js | 3 +-- tests/baselines/reference/classExtendingNull.js | 3 +-- 4 files changed, 4 insertions(+), 8 deletions(-) diff --git a/tests/baselines/reference/classExtendingBuiltinType.js b/tests/baselines/reference/classExtendingBuiltinType.js index 666ada395054b..8a4b0dd38491a 100644 --- a/tests/baselines/reference/classExtendingBuiltinType.js +++ b/tests/baselines/reference/classExtendingBuiltinType.js @@ -15,8 +15,7 @@ class C10 extends Array { } 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; } - __.prototype = b.prototype; - d.prototype = new __(); + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; var C1 = (function (_super) { __extends(C1, _super); diff --git a/tests/baselines/reference/classExtendingClassLikeType.js b/tests/baselines/reference/classExtendingClassLikeType.js index 88a5dc8dcd36a..4634b22e493ad 100644 --- a/tests/baselines/reference/classExtendingClassLikeType.js +++ b/tests/baselines/reference/classExtendingClassLikeType.js @@ -62,8 +62,7 @@ class D5 extends getBadBase() { 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; } - __.prototype = b.prototype; - d.prototype = new __(); + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; // Error, no Base constructor function var D0 = (function (_super) { diff --git a/tests/baselines/reference/classExtendingNonConstructor.js b/tests/baselines/reference/classExtendingNonConstructor.js index f796b30ddd690..dff2fdf9ca9dd 100644 --- a/tests/baselines/reference/classExtendingNonConstructor.js +++ b/tests/baselines/reference/classExtendingNonConstructor.js @@ -18,8 +18,7 @@ class C7 extends foo { } 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; } - __.prototype = b.prototype; - d.prototype = new __(); + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; var x; function foo() { diff --git a/tests/baselines/reference/classExtendingNull.js b/tests/baselines/reference/classExtendingNull.js index f0c3ea69626cb..ac8009b9cd97d 100644 --- a/tests/baselines/reference/classExtendingNull.js +++ b/tests/baselines/reference/classExtendingNull.js @@ -7,8 +7,7 @@ class C2 extends (null) { } 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; } - __.prototype = b.prototype; - d.prototype = new __(); + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; var C1 = (function (_super) { __extends(C1, _super);