From 5dff5ae3262f4e374a8c426f00b9bd650b54856e Mon Sep 17 00:00:00 2001 From: Eric Traut Date: Fri, 24 Nov 2023 17:15:57 -0800 Subject: [PATCH] Fixed bug that led to incorrect conversion from a class constructor to a function when it involves a `__new__` method that returns `Self`. This addresses #6529. --- packages/pyright-internal/src/analyzer/constructors.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/pyright-internal/src/analyzer/constructors.ts b/packages/pyright-internal/src/analyzer/constructors.ts index 7aedef1af4c9..0d26a7050d9f 100644 --- a/packages/pyright-internal/src/analyzer/constructors.ts +++ b/packages/pyright-internal/src/analyzer/constructors.ts @@ -51,6 +51,7 @@ import { isAnyOrUnknown, isClassInstance, isFunction, + isInstantiableClass, isNever, isOverloadedFunction, isTypeVar, @@ -804,7 +805,7 @@ export function createFunctionFromConstructor( let constructorFunction = evaluator.bindFunctionToClassOrObject( objectType, initSubtype, - /* memberClass */ undefined, + initInfo && isInstantiableClass(initInfo.classType) ? initInfo.classType : undefined, /* treatConstructorAsClassMember */ undefined, selfType, /* diag */ undefined, @@ -873,7 +874,7 @@ export function createFunctionFromConstructor( let constructorFunction = evaluator.bindFunctionToClassOrObject( classType, newSubtype, - /* memberClass */ undefined, + newInfo && isInstantiableClass(newInfo.classType) ? newInfo.classType : undefined, /* treatConstructorAsClassMember */ true, selfType, /* diag */ undefined,