refactor ReferenceTranslator
This commit is contained in:
Generated
+99
-95
@@ -4,9 +4,11 @@
|
||||
<bookmark url="file://$PROJECT_DIR$/translator/testFiles/propertyAccess/cases/safeCallReturnsNullIfFails.kt" line="3" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="f02ef53d-47a4-4f5e-a1aa-3df68aae9b20" name="Default" comment="refactor and improve. Adopt standard class array implementation">
|
||||
<list default="true" id="f02ef53d-47a4-4f5e-a1aa-3df68aae9b20" name="Default" comment="">
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java" />
|
||||
</list>
|
||||
<ignored path="k2js.iws" />
|
||||
@@ -201,27 +203,9 @@
|
||||
<favorites_list name="k2js" />
|
||||
</component>
|
||||
<component name="FileEditorManager">
|
||||
<splitter split-orientation="horizontal" split-proportion="0.31848854">
|
||||
<splitter split-orientation="horizontal" split-proportion="0.4777328">
|
||||
<split-first>
|
||||
<leaf>
|
||||
<file leaf-file-name="comparison.kt" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/operation/cases/comparison.kt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="comparison.js" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/operation/out/comparison.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="PrimitiveUnaryOperationIntrinsic.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/intrinsic/primitive/PrimitiveUnaryOperationIntrinsic.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
@@ -234,16 +218,34 @@
|
||||
<file leaf-file-name="DescriptorUtils.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/DescriptorUtils.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="93" column="13" selection-start="3662" selection-end="3662" vertical-scroll-proportion="0.0">
|
||||
<state line="16" column="19" selection-start="455" selection-end="455" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="StandardClassesTest.java" pinned="false" current="false" current-in-tab="false">
|
||||
<file leaf-file-name="BindingUtils.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="23" column="19" selection-start="836" selection-end="836" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="TranslationUtils.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="221" column="5" selection-start="10200" selection-end="10200" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="StandardClassesTest.java" pinned="false" current="true" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/StandardClassesTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="16" column="16" selection-start="317" selection-end="317" vertical-scroll-proportion="0.0">
|
||||
<state line="25" column="40" selection-start="500" selection-end="500" vertical-scroll-proportion="0.64786583">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
@@ -258,7 +260,7 @@
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="array.js" pinned="false" current="false" current-in-tab="true">
|
||||
<file leaf-file-name="array.js" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/standardClasses/out/array.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
|
||||
@@ -318,10 +320,10 @@
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="CallTranslator.java" pinned="false" current="true" current-in-tab="true">
|
||||
<file leaf-file-name="CallTranslator.java" pinned="false" current="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="138" column="67" selection-start="6559" selection-end="6559" vertical-scroll-proportion="0.525">
|
||||
<state line="57" column="71" selection-start="3098" selection-end="3098" vertical-scroll-proportion="0.3732504">
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
@@ -377,17 +379,19 @@
|
||||
<file leaf-file-name="ReferenceTranslator.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="39" column="22" selection-start="1773" selection-end="1773" vertical-scroll-proportion="0.0">
|
||||
<state line="72" column="2" selection-start="2847" selection-end="2847" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="JsConstructExpressionVisitor.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/backend/js/JsConstructExpressionVisitor.java">
|
||||
<file leaf-file-name="PropertyAccessTranslator.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="101" column="0" selection-start="2699" selection-end="2699" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
<state line="199" column="89" selection-start="8449" selection-end="8449" vertical-scroll-proportion="0.0">
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@@ -424,10 +428,10 @@
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/PsiUtils.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/declaration/ClassTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/translator/testFiles/standardClasses/out/array.js" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java" />
|
||||
</list>
|
||||
</option>
|
||||
@@ -1195,7 +1199,7 @@
|
||||
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32977018" sideWeight="0.728146" order="4" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3997862" sideWeight="0.6705998" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.20791021" sideWeight="0.7002882" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Run" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.29971182" sideWeight="0.64190274" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.29971182" sideWeight="0.64190274" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Dependency Viewer" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="12" side_tool="false" content_ui="tabs" />
|
||||
@@ -1238,7 +1242,7 @@
|
||||
<option name="INCLUDE_TEXT_INTO_SHELF" value="false" />
|
||||
<option name="CREATE_PATCH_EXPAND_DETAILS_DEFAULT" value="true" />
|
||||
<option name="FORCE_NON_EMPTY_COMMENT" value="false" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="refactor and improve. Adopt standard class array implementation" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="Refactor call translator." />
|
||||
<option name="MAKE_NEW_CHANGELIST_ACTIVE" value="true" />
|
||||
<option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="true" />
|
||||
<option name="CHECK_FILES_UP_TO_DATE_BEFORE_COMMIT" value="false" />
|
||||
@@ -1251,7 +1255,6 @@
|
||||
<option name="UPDATE_GROUP_BY_CHANGELIST" value="false" />
|
||||
<option name="SHOW_FILE_HISTORY_AS_TREE" value="false" />
|
||||
<option name="FILE_HISTORY_SPLITTER_PROPORTION" value="0.6" />
|
||||
<MESSAGE value="Added array basic class." />
|
||||
<MESSAGE value="Added and sorted tests from jet repository. Fixed a bug with custom setter." />
|
||||
<MESSAGE value="Fixed a bug where you could not reference an object from a function literal defined inside a method. Also removed when conditional call code." />
|
||||
<MESSAGE value="Supported classes not calling ancestor constructor." />
|
||||
@@ -1276,6 +1279,7 @@
|
||||
<MESSAGE value="Reorganise context structure, refactor" />
|
||||
<MESSAGE value="fix "enclosingThis" bug" />
|
||||
<MESSAGE value="refactor and improve. Adopt standard class array implementation" />
|
||||
<MESSAGE value="Refactor call translator." />
|
||||
</component>
|
||||
<component name="XDebuggerManager">
|
||||
<breakpoint-manager />
|
||||
@@ -1285,57 +1289,6 @@
|
||||
<option name="FILTER_TARGETS" value="false" />
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/OperatorOverloadingTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="47" column="16" selection-start="1070" selection-end="1070" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/backend/js/ast/JsNameRef.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="100" column="0" selection-start="2106" selection-end="2106" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="198" column="41" selection-start="8314" selection-end="8314" vertical-scroll-proportion="0.0">
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/out/operatorOverloadOnPropertyCallGetterAndSetterOnlyOnce.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/backend/js/JsConstructExpressionVisitor.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="101" column="0" selection-start="2699" selection-end="2699" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/TraitTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="32" column="16" selection-start="734" selection-end="734" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ClassInheritanceTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="22" column="16" selection-start="490" selection-end="490" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="jar://$PROJECT_DIR$/translator/lib/junit-4.10.jar!/org/junit/internal/runners/model/ReflectiveCallable.class">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="11" column="40" selection-start="397" selection-end="397" vertical-scroll-proportion="-6.8">
|
||||
@@ -1364,9 +1317,9 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/StandardClassesTest.java">
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/FunctionTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="16" column="16" selection-start="317" selection-end="317" vertical-scroll-proportion="0.0">
|
||||
<state line="27" column="16" selection-start="603" selection-end="603" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
@@ -1378,29 +1331,80 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.java">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/DescriptorUtils.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="39" column="22" selection-start="1773" selection-end="1773" vertical-scroll-proportion="0.0">
|
||||
<state line="16" column="19" selection-start="455" selection-end="455" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/FunctionTest.java">
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/operation/cases/comparison.kt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="27" column="16" selection-start="603" selection-end="603" vertical-scroll-proportion="0.0">
|
||||
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="23" column="19" selection-start="836" selection-end="836" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/operation/out/comparison.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="72" column="2" selection-start="2847" selection-end="2847" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/backend/js/JsConstructExpressionVisitor.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="101" column="0" selection-start="2699" selection-end="2699" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="199" column="89" selection-start="8449" selection-end="8449" vertical-scroll-proportion="0.0">
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="138" column="67" selection-start="6559" selection-end="6559" vertical-scroll-proportion="0.525">
|
||||
<state line="57" column="71" selection-start="3098" selection-end="3098" vertical-scroll-proportion="0.3732504">
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="221" column="5" selection-start="10200" selection-end="10200" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/StandardClassesTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="25" column="40" selection-start="500" selection-end="500" vertical-scroll-proportion="0.64786583">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</component>
|
||||
<component name="masterDetails">
|
||||
<states>
|
||||
|
||||
@@ -55,7 +55,7 @@ public final class CallTranslator extends AbstractTranslator {
|
||||
@NotNull TranslationContext context) {
|
||||
DeclarationDescriptor descriptor =
|
||||
getFunctionDescriptorForCallExpression(context.bindingContext(), callExpression);
|
||||
JsExpression receiver = ReferenceTranslator.getImplicitReceiver(descriptor, context);
|
||||
JsExpression receiver = getImplicitReceiver(context, descriptor);
|
||||
List<JsExpression> arguments = translateArgumentList(context, callExpression.getValueArguments());
|
||||
return (new CallTranslator(receiver, arguments, (FunctionDescriptor) descriptor, context)).translate();
|
||||
}
|
||||
|
||||
@@ -21,6 +21,7 @@ import static org.jetbrains.k2js.translate.utils.BindingUtils.getDescriptorForRe
|
||||
import static org.jetbrains.k2js.translate.utils.PsiUtils.getSelectorAsSimpleName;
|
||||
import static org.jetbrains.k2js.translate.utils.PsiUtils.isBackingFieldReference;
|
||||
import static org.jetbrains.k2js.translate.utils.TranslationUtils.backingFieldReference;
|
||||
import static org.jetbrains.k2js.translate.utils.TranslationUtils.getImplicitReceiver;
|
||||
|
||||
/**
|
||||
* @author Talanov Pavel
|
||||
@@ -196,7 +197,7 @@ public final class PropertyAccessTranslator extends AccessTranslator {
|
||||
if (qualifier != null) {
|
||||
return Translation.translateAsExpression(qualifier, context());
|
||||
}
|
||||
JsExpression implicitReceiver = ReferenceTranslator.getImplicitReceiver(propertyDescriptor, context());
|
||||
JsExpression implicitReceiver = getImplicitReceiver(context(), propertyDescriptor);
|
||||
assert implicitReceiver != null : "Property can only be a member of class or a namespace.";
|
||||
return implicitReceiver;
|
||||
}
|
||||
|
||||
@@ -9,30 +9,15 @@ import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression;
|
||||
import org.jetbrains.k2js.translate.context.TranslationContext;
|
||||
import org.jetbrains.k2js.translate.general.AbstractTranslator;
|
||||
import org.jetbrains.k2js.translate.utils.BindingUtils;
|
||||
import org.jetbrains.k2js.translate.utils.TranslationUtils;
|
||||
|
||||
import static org.jetbrains.k2js.translate.utils.BindingUtils.getDescriptorForReferenceExpression;
|
||||
import static org.jetbrains.k2js.translate.utils.TranslationUtils.getImplicitReceiver;
|
||||
|
||||
/**
|
||||
* @author Talanov Pavel
|
||||
*/
|
||||
public class ReferenceTranslator extends AbstractTranslator {
|
||||
|
||||
// TODO: move to other util
|
||||
@Nullable
|
||||
public static JsExpression getImplicitReceiver(@NotNull DeclarationDescriptor referencedDescriptor,
|
||||
@NotNull TranslationContext context) {
|
||||
if (!context.isDeclared(referencedDescriptor)) return null;
|
||||
|
||||
if (BindingUtils.isOwnedByClass(referencedDescriptor)) {
|
||||
return TranslationUtils.getThisQualifier(context);
|
||||
}
|
||||
if (!BindingUtils.isOwnedByNamespace(referencedDescriptor)) return null;
|
||||
|
||||
return context.declarations().getQualifier(referencedDescriptor);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static JsExpression translateSimpleName(@NotNull JetSimpleNameExpression expression,
|
||||
@NotNull TranslationContext context) {
|
||||
@@ -41,25 +26,30 @@ public class ReferenceTranslator extends AbstractTranslator {
|
||||
}
|
||||
DeclarationDescriptor referencedDescriptor =
|
||||
getDescriptorForReferenceExpression(context.bindingContext(), expression);
|
||||
return (new ReferenceTranslator(referencedDescriptor, context)).translate();
|
||||
return (new ReferenceTranslator(referencedDescriptor, true, context)).translate();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static JsExpression translateReference(@NotNull DeclarationDescriptor referencedDescriptor,
|
||||
@NotNull TranslationContext context) {
|
||||
return (new ReferenceTranslator(referencedDescriptor, context)).translate();
|
||||
return (new ReferenceTranslator(referencedDescriptor, false, context)).translate();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private final DeclarationDescriptor referencedDescriptor;
|
||||
|
||||
private final boolean shouldQualify;
|
||||
|
||||
@Nullable
|
||||
private JsExpression result;
|
||||
|
||||
private ReferenceTranslator(@NotNull DeclarationDescriptor referencedDescriptor, @NotNull TranslationContext context) {
|
||||
private ReferenceTranslator(@NotNull DeclarationDescriptor referencedDescriptor,
|
||||
boolean shouldQualify,
|
||||
@NotNull TranslationContext context) {
|
||||
super(context);
|
||||
this.referencedDescriptor = referencedDescriptor;
|
||||
this.result = null;
|
||||
this.shouldQualify = shouldQualify;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -87,16 +77,12 @@ public class ReferenceTranslator extends AbstractTranslator {
|
||||
if (!context().isDeclared(referencedDescriptor)) return;
|
||||
|
||||
JsName referencedName = context().getNameForDescriptor(referencedDescriptor);
|
||||
JsExpression implicitReceiver = getImplicitReceiver(referencedDescriptor, context());
|
||||
JsExpression implicitReceiver = getImplicitReceiver(context(), referencedDescriptor);
|
||||
|
||||
generateReference(referencedName, implicitReceiver);
|
||||
}
|
||||
|
||||
private void generateReference(@NotNull JsName referencedName, @Nullable JsExpression implicitReceiver) {
|
||||
if (implicitReceiver != null) {
|
||||
if (shouldQualify && implicitReceiver != null) {
|
||||
result = AstUtil.qualified(referencedName, implicitReceiver);
|
||||
} else {
|
||||
result = context().getNameForDescriptor(referencedDescriptor).makeRef();
|
||||
result = referencedName.makeRef();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -220,5 +220,4 @@ public final class TranslationUtils {
|
||||
|
||||
return context.declarations().getQualifier(referencedDescriptor);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user