From 2a31eb56d2b2dd5ad27ef86f07e92b97563f066f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sa=C3=BAl=20Cabrera?= Date: Tue, 13 Apr 2021 12:39:50 -0400 Subject: [PATCH 1/3] fix: Fix assert when calling a setter property --- src/compiler.ts | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/compiler.ts b/src/compiler.ts index ed85dc097c..583de050de 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -6335,7 +6335,16 @@ export class Compiler extends DiagnosticEmitter { } case ElementKind.PROPERTY: { let propertyInstance = target; - let getterInstance = assert(propertyInstance.getterInstance); + let getterInstance = propertyInstance.getterInstance; + + if (!getterInstance) { + this.error( + DiagnosticCode.Cannot_invoke_an_expression_whose_type_lacks_a_call_signature_Type_0_has_no_compatible_call_signatures, + expression.range, this.currentType.toString() + ); + return module.unreachable(); + } + let thisArg: ExpressionRef = 0; if (propertyInstance.is(CommonFlags.INSTANCE)) { thisArg = this.compileExpression( From bbf6a3769258de5b45e4bdc7aa0fa995c4f54c5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sa=C3=BAl=20Cabrera?= Date: Mon, 19 Apr 2021 15:59:55 -0400 Subject: [PATCH 2/3] Remove assertion on void type --- src/resolver.ts | 1 - 1 file changed, 1 deletion(-) 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; From ee03cb1529b6ef10c4b49cd21ad7b7aede6f4b47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sa=C3=BAl=20Cabrera?= Date: Mon, 19 Apr 2021 16:00:15 -0400 Subject: [PATCH 3/3] Use resolver#getTypeOfElement --- src/compiler.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/compiler.ts b/src/compiler.ts index 583de050de..bc2df9de3c 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -6336,11 +6336,12 @@ export class Compiler extends DiagnosticEmitter { case ElementKind.PROPERTY: { let propertyInstance = target; 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, this.currentType.toString() + expression.range, type.toString() ); return module.unreachable(); }