Properly handle 'void' return type when checking signature compatibility

This commit is contained in:
dcodeIO
2018-03-21 01:16:46 +01:00
parent 477669d7a3
commit 8c1847b316
8 changed files with 62 additions and 23 deletions

View File

@ -2978,22 +2978,14 @@ export class ClassPrototype extends Element {
internalName + INSTANCE_DELIMITER + member.simpleName,
this
);
let partialGetterPrototype = (
(<FunctionPrototype>(<Property>member).getterPrototype).resolvePartial(
typeArguments
)
);
let partialGetterPrototype = getterPrototype.resolvePartial(typeArguments);
if (!partialGetterPrototype) return null;
partialGetterPrototype.internalName = (
internalName + INSTANCE_DELIMITER + partialGetterPrototype.simpleName
);
instanceProperty.getterPrototype = partialGetterPrototype;
if (setterPrototype) {
let partialSetterPrototype = (
(<FunctionPrototype>(<Property>member).setterPrototype).resolvePartial(
typeArguments
)
);
let partialSetterPrototype = setterPrototype.resolvePartial(typeArguments);
if (!partialSetterPrototype) return null;
partialSetterPrototype.internalName = (
internalName + INSTANCE_DELIMITER + partialSetterPrototype.simpleName
@ -3003,10 +2995,7 @@ export class ClassPrototype extends Element {
instance.members.set(member.simpleName, instanceProperty);
break;
}
default: {
assert(false);
break;
}
default: assert(false);
}
}
}

View File

@ -539,7 +539,9 @@ export class Signature {
}
// check return type
return this.returnType.isAssignableTo(target.returnType);
var thisReturnType = this.returnType;
var targetReturnType = target.returnType;
return thisReturnType == targetReturnType || this.returnType.isAssignableTo(target.returnType);
}
/** Converts this signature to a function type string. */