mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-04 21:53:42 -06:00
Don't instantiate-in-context-of when inferring to type variable
This commit is contained in:
parent
4fe27222ca
commit
8ffc42f5a6
@ -177,6 +177,7 @@ namespace ts {
|
||||
const enum ContextFlags {
|
||||
None = 0,
|
||||
Signature = 1 << 0, // Obtaining contextual signature
|
||||
NoConstraints = 1 << 1, // Don't obtain type variable constraints
|
||||
}
|
||||
|
||||
const enum AccessFlags {
|
||||
@ -19193,7 +19194,7 @@ namespace ts {
|
||||
getContextualTypeForObjectLiteralMethod(node, contextFlags) :
|
||||
getContextualType(node, contextFlags);
|
||||
const instantiatedType = instantiateContextualType(contextualType, node, contextFlags);
|
||||
if (instantiatedType) {
|
||||
if (instantiatedType && !(contextFlags && contextFlags & ContextFlags.NoConstraints && instantiatedType.flags & TypeFlags.TypeVariable)) {
|
||||
const apparentType = mapType(instantiatedType, getApparentType, /*noReductions*/ true);
|
||||
if (apparentType.flags & TypeFlags.Union) {
|
||||
if (isObjectLiteralExpression(node)) {
|
||||
@ -25098,8 +25099,8 @@ namespace ts {
|
||||
const constructSignature = getSingleSignature(type, SignatureKind.Construct, /*allowMembers*/ true);
|
||||
const signature = callSignature || constructSignature;
|
||||
if (signature && signature.typeParameters) {
|
||||
const contextualType = getApparentTypeOfContextualType(<Expression>node);
|
||||
if (contextualType && !isMixinConstructorType(contextualType)) {
|
||||
const contextualType = getApparentTypeOfContextualType(<Expression>node, ContextFlags.NoConstraints);
|
||||
if (contextualType) {
|
||||
const contextualSignature = getSingleSignature(getNonNullableType(contextualType), callSignature ? SignatureKind.Call : SignatureKind.Construct, /*allowMembers*/ false);
|
||||
if (contextualSignature && !contextualSignature.typeParameters) {
|
||||
if (checkMode & CheckMode.SkipGenericFunctions) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user