From 1d93877e7c8a7d42c27a369011377d9e214431ef Mon Sep 17 00:00:00 2001 From: dcodeIO Date: Thu, 29 Nov 2018 13:12:06 +0100 Subject: [PATCH] Fix unsupported element access on 'this', see #349 --- src/resolver.ts | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/resolver.ts b/src/resolver.ts index 7d23410e..7b79b09c 100644 --- a/src/resolver.ts +++ b/src/resolver.ts @@ -505,7 +505,7 @@ export class Resolver extends DiagnosticEmitter { } break; } - case ElementKind.CLASS: { // element access on element access + case ElementKind.CLASS: { let indexedGet = (target).lookupOverload(OperatorKind.INDEXED_GET); if (!indexedGet) { if (reportMode == ReportMode.REPORT) { @@ -516,13 +516,18 @@ export class Resolver extends DiagnosticEmitter { } return null; } - let returnType = indexedGet.signature.returnType; - if (target = returnType.classReference) { - this.currentThisExpression = targetExpression; - this.currentElementExpression = elementAccess.elementExpression; - return target; + if (targetExpression.kind == NodeKind.ELEMENTACCESS) { // nested element access + let returnType = indexedGet.signature.returnType; + if (target = returnType.classReference) { + this.currentThisExpression = targetExpression; + this.currentElementExpression = elementAccess.elementExpression; + return target; + } + return null; } - break; + this.currentThisExpression = targetExpression; + this.currentElementExpression = elementAccess.elementExpression; + return target; } } if (reportMode == ReportMode.REPORT) {