Fix unsupported element access on 'this', see #349

This commit is contained in:
dcodeIO 2018-11-29 13:12:06 +01:00
parent 7596d73284
commit 1d93877e7c

View File

@ -505,7 +505,7 @@ export class Resolver extends DiagnosticEmitter {
} }
break; break;
} }
case ElementKind.CLASS: { // element access on element access case ElementKind.CLASS: {
let indexedGet = (<Class>target).lookupOverload(OperatorKind.INDEXED_GET); let indexedGet = (<Class>target).lookupOverload(OperatorKind.INDEXED_GET);
if (!indexedGet) { if (!indexedGet) {
if (reportMode == ReportMode.REPORT) { if (reportMode == ReportMode.REPORT) {
@ -516,13 +516,18 @@ export class Resolver extends DiagnosticEmitter {
} }
return null; return null;
} }
if (targetExpression.kind == NodeKind.ELEMENTACCESS) { // nested element access
let returnType = indexedGet.signature.returnType; let returnType = indexedGet.signature.returnType;
if (target = returnType.classReference) { if (target = returnType.classReference) {
this.currentThisExpression = targetExpression; this.currentThisExpression = targetExpression;
this.currentElementExpression = elementAccess.elementExpression; this.currentElementExpression = elementAccess.elementExpression;
return target; return target;
} }
break; return null;
}
this.currentThisExpression = targetExpression;
this.currentElementExpression = elementAccess.elementExpression;
return target;
} }
} }
if (reportMode == ReportMode.REPORT) { if (reportMode == ReportMode.REPORT) {