From 31611ce0d229525680d5f9f7d903b5f1c73150b9 Mon Sep 17 00:00:00 2001 From: dcode Date: Mon, 8 Feb 2021 23:01:47 +0100 Subject: [PATCH] Emit a diagnostic when 'super' is used in a non-derived class --- src/compiler.ts | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/compiler.ts b/src/compiler.ts index 6e4cefbbeb..44bef560e8 100644 --- a/src/compiler.ts +++ b/src/compiler.ts @@ -6155,7 +6155,14 @@ export class Compiler extends DiagnosticEmitter { let parent = assert(actualFunction.parent); assert(parent.kind == ElementKind.CLASS); let classInstance = parent; - let baseClassInstance = assert(classInstance.base); + let baseClassInstance = classInstance.base; + if (!baseClassInstance) { + this.error( + DiagnosticCode._super_can_only_be_referenced_in_a_derived_class, + expression.expression.range + ); + return module.unreachable(); + } let thisLocal = assert(flow.lookupLocal(CommonNames.this_)); let nativeSizeType = this.options.nativeSizeType;