Skip to content

Commit

Permalink
Merge pull request #31377 from microsoft/noThisParameterFiltering
Browse files Browse the repository at this point in the history
Revert this-parameter filtering in completions
  • Loading branch information
ahejlsberg committed May 14, 2019
2 parents 4da2c25 + d292346 commit 70950cb
Show file tree
Hide file tree
Showing 2 changed files with 2 additions and 39 deletions.
21 changes: 2 additions & 19 deletions src/compiler/checker.ts
Expand Up @@ -20386,25 +20386,8 @@ namespace ts {
}

function isValidPropertyAccessForCompletions(node: PropertyAccessExpression | ImportTypeNode | QualifiedName, type: Type, property: Symbol): boolean {
return isValidPropertyAccessWithType(node, node.kind === SyntaxKind.PropertyAccessExpression && node.expression.kind === SyntaxKind.SuperKeyword, property.escapedName, type)
&& (!(property.flags & SymbolFlags.Method) || isValidMethodAccess(property, type));
}
function isValidMethodAccess(method: Symbol, actualThisType: Type): boolean {
const propType = getTypeOfPropertyOfType(actualThisType, method.escapedName)!;
const signatures = getSignaturesOfType(getNonNullableType(propType), SignatureKind.Call);
Debug.assert(signatures.length !== 0);
return signatures.some(sig => {
const signatureThisType = getThisTypeOfSignature(sig);
return !signatureThisType || isTypeAssignableTo(actualThisType, getInstantiatedSignatureThisType(sig, signatureThisType, actualThisType));
});
}
function getInstantiatedSignatureThisType(sig: Signature, signatureThisType: Type, actualThisType: Type): Type {
if (!sig.typeParameters) {
return signatureThisType;
}
const context = createInferenceContext(sig.typeParameters, sig, InferenceFlags.None);
inferTypes(context.inferences, actualThisType, signatureThisType);
return instantiateType(signatureThisType, createSignatureTypeMapper(sig, getInferredTypes(context)));
return isValidPropertyAccessWithType(node, node.kind === SyntaxKind.PropertyAccessExpression && node.expression.kind === SyntaxKind.SuperKeyword, property.escapedName, type);
// Previously we validated the 'this' type of methods but this adversely affected performance. See #31377 for more context.
}

function isValidPropertyAccessWithType(
Expand Down
20 changes: 0 additions & 20 deletions tests/cases/fourslash/completionsMethodWithThisParameter.ts

This file was deleted.

0 comments on commit 70950cb

Please sign in to comment.