From 4527c56f6d7621f7ef2968a6fbdd22bf5bf67291 Mon Sep 17 00:00:00 2001 From: Erokhin Stanislav Date: Fri, 20 Dec 2013 23:04:04 +0400 Subject: [PATCH] JS backend: Fix super property access call --- .../k2js/translate/reference/VarialbeCallCases.kt | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/reference/VarialbeCallCases.kt b/js/js.translator/src/org/jetbrains/k2js/translate/reference/VarialbeCallCases.kt index 6b3600e2e57..64dae28eb2a 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/reference/VarialbeCallCases.kt +++ b/js/js.translator/src/org/jetbrains/k2js/translate/reference/VarialbeCallCases.kt @@ -115,11 +115,22 @@ class DelegatePropertyAccessIntrinsic(callInfo: VariableAccessInfo) : VariableAc } } +class SuperPropertyAccessCase(callInfo: VariableAccessInfo) : VariableAccessCase(callInfo) { + override fun VariableAccessInfo.thisObject(): JsExpression { + val variableName = context.program().getStringLiteral(this.variableName.getIdent()) + return if (isGetAccess()) + JsInvocation(context.namer().getCallGetProperty(), JsLiteral.THIS, thisObject!!, variableName) + else + JsInvocation(context.namer().getCallSetProperty(), JsLiteral.THIS, thisObject!!, variableName, getSetToExpression()) + } +} + fun createVariableAccessCases(): CallCaseDispatcher { val caseDispatcher = CallCaseDispatcher() caseDispatcher.addCase { DelegatePropertyAccessIntrinsic(it).intrinsic() } - caseDispatcher.addCase(::ValueParameterAccessCase) { it.variableDescriptor is ValueParameterDescriptor} + caseDispatcher.addCase(::SuperPropertyAccessCase) { it.isSuperInvocation() } + //caseDispatcher.addCase(::ValueParameterAccessCase) { it.variableDescriptor is ValueParameterDescriptor} caseDispatcher.addCase(::NativeVariableAccessCase) { it.isNative() } caseDispatcher.addCase(::DefaultVariableAccessCase) { true } // TODO: fix this return caseDispatcher