mirror of
https://github.com/microsoft/pyright.git
synced 2024-10-05 12:27:30 +03:00
Fixed bug that resulted in a false positive error when an abstract class is used for a NewType
and the new type is constructed. This addresses #8256.
This commit is contained in:
parent
353a17cdec
commit
8a9ba9b77b
@ -13006,14 +13006,12 @@ export function createTypeEvaluator(
|
||||
);
|
||||
}
|
||||
|
||||
let classFlags = baseClass.details.flags & ~(ClassTypeFlags.BuiltInClass | ClassTypeFlags.SpecialBuiltIn);
|
||||
classFlags |= ClassTypeFlags.Final | ClassTypeFlags.NewTypeClass | ClassTypeFlags.ValidTypeAliasClass;
|
||||
const classType = ClassType.createInstantiable(
|
||||
className,
|
||||
ParseTreeUtils.getClassFullName(errorNode, fileInfo.moduleName, className),
|
||||
fileInfo.moduleName,
|
||||
fileInfo.fileUri,
|
||||
classFlags,
|
||||
ClassTypeFlags.Final | ClassTypeFlags.NewTypeClass | ClassTypeFlags.ValidTypeAliasClass,
|
||||
ParseTreeUtils.getTypeSourceId(errorNode),
|
||||
/* declaredMetaclass */ undefined,
|
||||
baseClass.details.effectiveMetaclass
|
||||
|
@ -1,6 +1,7 @@
|
||||
# This sample tests the type handler's handling of the
|
||||
# built-in NewType function.
|
||||
|
||||
from abc import ABC, abstractmethod
|
||||
from typing import Any, NewType, TypeVar, TypedDict
|
||||
|
||||
MyString = NewType("MyString", "str")
|
||||
@ -76,3 +77,17 @@ def func2(x: MyString):
|
||||
# with a NewType.
|
||||
if issubclass(type(x), (MyString, int)):
|
||||
pass
|
||||
|
||||
|
||||
class AbstractBase(ABC):
|
||||
@abstractmethod
|
||||
def method1(self, /) -> int: ...
|
||||
|
||||
|
||||
class DerivedBase(AbstractBase):
|
||||
def method1(self, /) -> int:
|
||||
return 0
|
||||
|
||||
|
||||
NewDerived = NewType("NewDerived", AbstractBase)
|
||||
new_derived = NewDerived(DerivedBase())
|
||||
|
Loading…
Reference in New Issue
Block a user