Added support for properties whose type is defined using a generic typevar type.

This commit is contained in:
Eric Traut 2019-08-09 15:14:05 -07:00
parent 59571876e6
commit 84766dd91d

View File

@ -998,7 +998,19 @@ export class ExpressionEvaluator {
if (!(flags & MemberAccessFlags.SkipGetCheck)) {
if (type instanceof PropertyType) {
if (usage.method === 'get') {
return makeClassMember(type.getEffectiveReturnType());
// Use the property's getter function to determine
// the return type.
const selfArg: FunctionArgument = {
argumentCategory: ArgumentCategory.Simple,
type: new ObjectType(classType)
};
let propertyReturnType = this._validateCallArguments(
errorNode, [selfArg], type.getGetter(), new TypeVarMap(), true);
if (!propertyReturnType) {
propertyReturnType = UnknownType.create();
}
return makeClassMember(propertyReturnType);
} else if (usage.method === 'set') {
let setterFunctionType = type.getSetter();
if (setterFunctionType) {