diff --git a/src/compiler.ts b/src/compiler.ts index ed85dc097c..bc2df9de3c 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -6335,7 +6335,17 @@ export class Compiler extends DiagnosticEmitter { } case ElementKind.PROPERTY: { let propertyInstance = target; - let getterInstance = assert(propertyInstance.getterInstance); + let getterInstance = propertyInstance.getterInstance; + let type = assert(this.resolver.getTypeOfElement(target)); + + if (!getterInstance) { + this.error( + DiagnosticCode.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures, + expression.range, type.toString() + ); + return module.unreachable(); + } + let thisArg: ExpressionRef = 0; if (propertyInstance.is(CommonFlags.INSTANCE)) { thisArg = this.compileExpression( diff --git a/src/resolver.ts b/src/resolver.ts index 1decddd6cd..0cbc34d00f 100644 --- a/src/resolver.ts +++ b/src/resolver.ts @@ -877,7 +877,6 @@ export class Resolver extends DiagnosticEmitter { } if (isTypedElement(kind)) { let type = (element).type; - assert(type != Type.void); let classReference = type.getClassOrWrapper(this.program); if (classReference) { let wrappedType = classReference.wrappedType;