mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-16 07:13:45 -05:00
Merge pull request #16502 from Microsoft/fix16211
Fix 'extends' with type parameter default returned from superclass construct signature
This commit is contained in:
@@ -4826,12 +4826,9 @@ namespace ts {
|
||||
}
|
||||
|
||||
function getInstantiatedConstructorsForTypeArguments(type: Type, typeArgumentNodes: TypeNode[], location: Node): Signature[] {
|
||||
let signatures = getConstructorsForTypeArguments(type, typeArgumentNodes, location);
|
||||
if (typeArgumentNodes) {
|
||||
const typeArguments = map(typeArgumentNodes, getTypeFromTypeNode);
|
||||
signatures = map(signatures, sig => getSignatureInstantiation(sig, typeArguments));
|
||||
}
|
||||
return signatures;
|
||||
const signatures = getConstructorsForTypeArguments(type, typeArgumentNodes, location);
|
||||
const typeArguments = map(typeArgumentNodes, getTypeFromTypeNode);
|
||||
return sameMap(signatures, sig => some(sig.typeParameters) ? getSignatureInstantiation(sig, typeArguments) : sig);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -20946,7 +20943,7 @@ namespace ts {
|
||||
const staticBaseType = getApparentType(baseConstructorType);
|
||||
checkBaseTypeAccessibility(staticBaseType, baseTypeNode);
|
||||
checkSourceElement(baseTypeNode.expression);
|
||||
if (baseTypeNode.typeArguments) {
|
||||
if (some(baseTypeNode.typeArguments)) {
|
||||
forEach(baseTypeNode.typeArguments, checkSourceElement);
|
||||
for (const constructor of getConstructorsForTypeArguments(staticBaseType, baseTypeNode.typeArguments, baseTypeNode)) {
|
||||
if (!checkTypeArgumentConstraints(constructor.typeParameters, baseTypeNode.typeArguments)) {
|
||||
@@ -23929,6 +23926,11 @@ namespace ts {
|
||||
const sourceFile = getSourceFileOfNode(node);
|
||||
return grammarErrorAtPos(sourceFile, types.pos, 0, Diagnostics._0_list_cannot_be_empty, listType);
|
||||
}
|
||||
return forEach(types, checkGrammarExpressionWithTypeArguments);
|
||||
}
|
||||
|
||||
function checkGrammarExpressionWithTypeArguments(node: ExpressionWithTypeArguments) {
|
||||
return checkGrammarTypeArguments(node, node.typeArguments);
|
||||
}
|
||||
|
||||
function checkGrammarClassDeclarationHeritageClauses(node: ClassLikeDeclaration) {
|
||||
|
||||
Reference in New Issue
Block a user