Refactoring property access translation code.
This commit is contained in:
Generated
+403
-310
@@ -8,15 +8,19 @@
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="f02ef53d-47a4-4f5e-a1aa-3df68aae9b20" name="Default" comment="">
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/BinaryOperationTranslator.java" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/UnaryOperationTranslator.java" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/kotlinLib/cases/commaExpression.js" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/overloadedCallOnProperty.kt" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/postfixOnProperty.kt" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/prefixIncReturnsCorrectValue.kt" />
|
||||
<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/BindingUtils.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/BindingUtils.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/js/src/com/google/dart/compiler/util/AstUtil.java" afterPath="$PROJECT_DIR$/js/src/com/google/dart/compiler/util/AstUtil.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/BinaryOperationTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/BinaryOperationTranslator.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/OperationTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/OperationTranslator.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/Translation.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/Translation.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/KotlinLibTest.java" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/KotlinLibTest.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/PropertyAccessTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/PropertyAccessTranslator.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ReferenceTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ReferenceTranslator.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslationUtils.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslationUtils.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/UnaryOperationTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/UnaryOperationTranslator.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/OperatorOverloadingTest.java" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/OperatorOverloadingTest.java" />
|
||||
</list>
|
||||
<ignored path="k2js.iws" />
|
||||
<ignored path=".idea/workspace.xml" />
|
||||
@@ -47,21 +51,6 @@
|
||||
<disable_hints />
|
||||
</component>
|
||||
<component name="DebuggerManager">
|
||||
<line_breakpoints>
|
||||
<breakpoint url="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/AbstractInitializerVisitor.java" line="39" class="org.jetbrains.k2js.translate.AbstractInitializerVisitor" package="org.jetbrains.k2js.translate">
|
||||
<option name="ENABLED" value="true" />
|
||||
<option name="LOG_ENABLED" value="false" />
|
||||
<option name="LOG_EXPRESSION_ENABLED" value="false" />
|
||||
<option name="SUSPEND_POLICY" value="SuspendAll" />
|
||||
<option name="COUNT_FILTER_ENABLED" value="false" />
|
||||
<option name="COUNT_FILTER" value="0" />
|
||||
<option name="CONDITION_ENABLED" value="false" />
|
||||
<option name="CLASS_FILTERS_ENABLED" value="false" />
|
||||
<option name="INSTANCE_FILTERS_ENABLED" value="false" />
|
||||
<option name="CONDITION" value="" />
|
||||
<option name="LOG_MESSAGE" value="" />
|
||||
</breakpoint>
|
||||
</line_breakpoints>
|
||||
<breakpoint_any>
|
||||
<breakpoint>
|
||||
<option name="NOTIFY_CAUGHT" value="true" />
|
||||
@@ -101,94 +90,96 @@
|
||||
<favorites_list name="k2js" />
|
||||
</component>
|
||||
<component name="FileEditorManager">
|
||||
<splitter split-orientation="horizontal" split-proportion="0.42956766">
|
||||
<splitter split-orientation="horizontal" split-proportion="0.59483963">
|
||||
<split-first>
|
||||
<leaf>
|
||||
<file leaf-file-name="OperatorOverloadingTest.java" pinned="false" current="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/OperatorOverloadingTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="22" column="16" selection-start="438" selection-end="438" vertical-scroll-proportion="0.6130653">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="OperationTranslator.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/OperationTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="43" column="46" selection-start="1632" selection-end="1632" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="BinaryOperationTranslator.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/BinaryOperationTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="22" column="41" selection-start="833" selection-end="833" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="UnaryOperationTranslator.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/UnaryOperationTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="49" column="0" selection-start="1924" selection-end="1924" vertical-scroll-proportion="0.0">
|
||||
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<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/PropertyAccessTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="103" column="42" selection-start="4424" selection-end="4424" 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/TranslationUtils.java">
|
||||
<file leaf-file-name="AstUtil.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/util/AstUtil.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="41" column="1" selection-start="1625" selection-end="1625" vertical-scroll-proportion="0.0">
|
||||
<state line="307" column="15" selection-start="10810" selection-end="10810" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="JsVars.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/backend/js/ast/JsVars.java">
|
||||
<file leaf-file-name="overloadedCallOnProperty.kt" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/overloadedCallOnProperty.kt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="20" column="22" selection-start="630" selection-end="630" vertical-scroll-proportion="0.0">
|
||||
<state line="16" column="40" selection-start="0" selection-end="159" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<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/BindingUtils.java">
|
||||
<file leaf-file-name="overloadedCallOnProperty.js" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/out/overloadedCallOnProperty.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="178" column="21" selection-start="8380" selection-end="8380" vertical-scroll-proportion="0.0">
|
||||
<state line="26" column="79" selection-start="0" selection-end="621" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="BindingContext.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContext.java">
|
||||
<file leaf-file-name="postfixOnProperty.kt" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/postfixOnProperty.kt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="45" column="58" selection-start="2746" selection-end="2746" vertical-scroll-proportion="0.0">
|
||||
<state line="16" column="34" selection-start="204" selection-end="204" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="BasicExpressionTypingVisitor.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java">
|
||||
<file leaf-file-name="postfixIncOverload.kt" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/postfixIncOverload.kt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="582" column="69" selection-start="31363" selection-end="31376" vertical-scroll-proportion="0.0">
|
||||
<state line="0" column="0" selection-start="0" selection-end="162" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="ExpressionTypingVisitorForStatements.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingVisitorForStatements.java">
|
||||
<file leaf-file-name="prefixDecOverload.kt" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/prefixDecOverload.kt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="139" column="110" selection-start="7255" selection-end="7255" vertical-scroll-proportion="0.0">
|
||||
<state line="15" column="78" selection-start="0" selection-end="162" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="OperatorOverloadingTest.java" pinned="false" current="true" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/OperatorOverloadingTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="37" column="83" selection-start="857" selection-end="857" vertical-scroll-proportion="0.589372">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="AbstractInitializerVisitor.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/AbstractInitializerVisitor.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="39" column="0" selection-start="1376" selection-end="1376" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
@@ -198,64 +189,19 @@
|
||||
</split-first>
|
||||
<split-second>
|
||||
<leaf>
|
||||
<file leaf-file-name="JsNode.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/backend/js/ast/JsNode.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="14" column="22" selection-start="638" selection-end="638" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="JsValueLiteral.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/backend/js/ast/JsValueLiteral.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="9" column="22" selection-start="340" selection-end="340" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="JsEmpty.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/backend/js/ast/JsEmpty.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="9" column="13" selection-start="336" selection-end="336" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="JsDoWhile.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/backend/js/ast/JsDoWhile.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="9" column="13" selection-start="336" selection-end="336" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="JsCatchScope.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/backend/js/ast/JsCatchScope.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="13" column="13" selection-start="465" selection-end="465" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="JsBinaryOperator.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/backend/js/ast/JsBinaryOperator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="9" column="12" selection-start="348" selection-end="348" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="commaExpression.js" pinned="false" current="true" current-in-tab="true">
|
||||
<file leaf-file-name="commaExpression.js" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/kotlinLib/cases/commaExpression.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="1" column="28" selection-start="34" selection-end="34" vertical-scroll-proportion="0.026356589">
|
||||
<state line="1" column="5" selection-start="11" selection-end="11" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="Pair.class" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="jar://C:/Program Files (x86)/JetBrains/IntelliJ IDEA Community Edition 110.283/lib/util.jar!/com/intellij/openapi/util/Pair.class">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="5" column="13" selection-start="163" selection-end="163" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
@@ -273,7 +219,52 @@
|
||||
<file leaf-file-name="ExpressionVisitor.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="330" column="71" selection-start="14725" selection-end="14725" vertical-scroll-proportion="-18.423077">
|
||||
<state line="267" column="12" selection-start="11940" selection-end="11940" vertical-scroll-proportion="-9.884615">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="BasicClassTest.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/BasicClassTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="38" column="16" selection-start="933" selection-end="933" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="BinaryOperationTranslator.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/BinaryOperationTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="44" column="27" selection-start="1506" selection-end="1506" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="FunctionTest.java" pinned="false" current="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/FunctionTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="37" column="16" selection-start="833" selection-end="833" vertical-scroll-proportion="0.8342059">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<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/ReferenceTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="50" column="20" selection-start="1805" selection-end="1805" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="WhileTest.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/WhileTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="21" column="16" selection-start="405" selection-end="405" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
@@ -282,7 +273,7 @@
|
||||
<file leaf-file-name="Translation.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/Translation.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="60" column="4" selection-start="2241" selection-end="2241" vertical-scroll-proportion="0.0">
|
||||
<state line="18" column="19" selection-start="723" selection-end="723" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
@@ -309,22 +300,22 @@
|
||||
<component name="IdeDocumentHistory">
|
||||
<option name="changedFiles">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/PatternTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslationContext.java" />
|
||||
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/postfixInc.kt" />
|
||||
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/out/postfixInc.js" />
|
||||
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/postfixIncOverload.kt" />
|
||||
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/OperatorOverloadingTest.java" />
|
||||
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/prefixDecOverload.kt" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/OperationTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/BindingUtils.java" />
|
||||
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/KotlinLibTest.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/BinaryOperationTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/Translation.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/UnaryOperationTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslationUtils.java" />
|
||||
<option value="$PROJECT_DIR$/translator/testFiles/kotlinLib/cases/commaExpression.js" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslationUtils.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/OperationTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/prefixIncReturnsCorrectValue.kt" />
|
||||
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/overloadedCallOnProperty.kt" />
|
||||
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/postfixOnProperty.kt" />
|
||||
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/OperatorOverloadingTest.java" />
|
||||
<option value="$PROJECT_DIR$/js/src/com/google/dart/compiler/util/AstUtil.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ReferenceTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/BinaryOperationTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/UnaryOperationTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/PropertyAccessTranslator.java" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
@@ -399,6 +390,50 @@
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="k2js" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="translator" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="testFiles" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="operatorOverloading" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="out" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="k2js" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="translator" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="testFiles" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="operatorOverloading" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="cases" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="k2js" />
|
||||
@@ -439,6 +474,64 @@
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="k2js" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="translator" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="testFiles" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="inheritance" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="out" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="k2js" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="translator" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="testFiles" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="inheritance" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="k2js" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="translator" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="testFiles" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="expression" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="k2js" />
|
||||
@@ -626,113 +719,6 @@
|
||||
</key>
|
||||
</component>
|
||||
<component name="RunManager" selected="JUnit.All in translator">
|
||||
<configuration default="false" name="PropertyAccessorTest.accessToInstanceProperty" type="JUnit" factoryName="JUnit" temporary="true">
|
||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" />
|
||||
<module name="translator" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" value="" />
|
||||
<option name="PACKAGE_NAME" value="org.jetbrains.k2js.test" />
|
||||
<option name="MAIN_CLASS_NAME" value="org.jetbrains.k2js.test.PropertyAccessorTest" />
|
||||
<option name="METHOD_NAME" value="accessToInstanceProperty" />
|
||||
<option name="TEST_OBJECT" value="method" />
|
||||
<option name="VM_PARAMETERS" value="-ea" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/translator" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<option name="TEST_SEARCH_SCOPE">
|
||||
<value defaultName="moduleWithDependencies" />
|
||||
</option>
|
||||
<envs />
|
||||
<patterns />
|
||||
<RunnerSettings RunnerId="Debug">
|
||||
<option name="DEBUG_PORT" value="49383" />
|
||||
<option name="TRANSPORT" value="0" />
|
||||
<option name="LOCAL" value="true" />
|
||||
</RunnerSettings>
|
||||
<ConfigurationWrapper RunnerId="Debug" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="false" name="All in translator" type="JUnit" factoryName="JUnit" temporary="true">
|
||||
<extension name="coverage" enabled="false" merge="false" runner="idea">
|
||||
<pattern>
|
||||
<option name="PATTERN" value="org.jetbrains.k2js.test.*" />
|
||||
<option name="ENABLED" value="false" />
|
||||
</pattern>
|
||||
<pattern>
|
||||
<option name="PATTERN" value="org.jetbrains.k2js.declarations.*" />
|
||||
<option name="ENABLED" value="true" />
|
||||
</pattern>
|
||||
<pattern>
|
||||
<option name="PATTERN" value="org.jetbrains.k2js.generate.*" />
|
||||
<option name="ENABLED" value="true" />
|
||||
</pattern>
|
||||
<pattern>
|
||||
<option name="PATTERN" value="org.jetbrains.k2js.translate.*" />
|
||||
<option name="ENABLED" value="true" />
|
||||
</pattern>
|
||||
<pattern>
|
||||
<option name="PATTERN" value="org.jetbrains.k2js.utils.*" />
|
||||
<option name="ENABLED" value="true" />
|
||||
</pattern>
|
||||
</extension>
|
||||
<module name="translator" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" value="" />
|
||||
<option name="PACKAGE_NAME" value="" />
|
||||
<option name="MAIN_CLASS_NAME" value="" />
|
||||
<option name="METHOD_NAME" value="" />
|
||||
<option name="TEST_OBJECT" value="package" />
|
||||
<option name="VM_PARAMETERS" value="-ea" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/translator" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<option name="TEST_SEARCH_SCOPE">
|
||||
<value defaultName="moduleWithDependencies" />
|
||||
</option>
|
||||
<envs />
|
||||
<patterns />
|
||||
<RunnerSettings RunnerId="Cover" />
|
||||
<RunnerSettings RunnerId="Debug">
|
||||
<option name="DEBUG_PORT" value="" />
|
||||
<option name="TRANSPORT" value="0" />
|
||||
<option name="LOCAL" value="true" />
|
||||
</RunnerSettings>
|
||||
<RunnerSettings RunnerId="Run" />
|
||||
<ConfigurationWrapper RunnerId="Cover" />
|
||||
<ConfigurationWrapper RunnerId="Debug" />
|
||||
<ConfigurationWrapper RunnerId="Run" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="false" name="KotlinLibTest" type="JUnit" factoryName="JUnit" temporary="true">
|
||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true">
|
||||
<pattern>
|
||||
<option name="PATTERN" value="org.jetbrains.k2js.test.*" />
|
||||
<option name="ENABLED" value="true" />
|
||||
</pattern>
|
||||
</extension>
|
||||
<module name="translator" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" />
|
||||
<option name="PACKAGE_NAME" value="org.jetbrains.k2js.test" />
|
||||
<option name="MAIN_CLASS_NAME" value="org.jetbrains.k2js.test.KotlinLibTest" />
|
||||
<option name="METHOD_NAME" />
|
||||
<option name="TEST_OBJECT" value="class" />
|
||||
<option name="VM_PARAMETERS" />
|
||||
<option name="PARAMETERS" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<option name="TEST_SEARCH_SCOPE">
|
||||
<value defaultName="moduleWithDependencies" />
|
||||
</option>
|
||||
<envs />
|
||||
<patterns />
|
||||
<RunnerSettings RunnerId="Run" />
|
||||
<ConfigurationWrapper RunnerId="Run" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="false" name="PropertyAccessorTest" type="JUnit" factoryName="JUnit" temporary="true">
|
||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
|
||||
<pattern>
|
||||
@@ -809,6 +795,111 @@
|
||||
<ConfigurationWrapper RunnerId="Debug" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="false" name="OperatorOverloadingTest.prefixIncReturnsCorrectValue" type="JUnit" factoryName="JUnit" temporary="true">
|
||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
|
||||
<pattern>
|
||||
<option name="PATTERN" value="org.jetbrains.k2js.test.*" />
|
||||
<option name="ENABLED" value="true" />
|
||||
</pattern>
|
||||
</extension>
|
||||
<module name="translator" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" value="" />
|
||||
<option name="PACKAGE_NAME" value="org.jetbrains.k2js.test" />
|
||||
<option name="MAIN_CLASS_NAME" value="org.jetbrains.k2js.test.OperatorOverloadingTest" />
|
||||
<option name="METHOD_NAME" value="prefixIncReturnsCorrectValue" />
|
||||
<option name="TEST_OBJECT" value="method" />
|
||||
<option name="VM_PARAMETERS" value="-ea" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/translator" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<option name="TEST_SEARCH_SCOPE">
|
||||
<value defaultName="moduleWithDependencies" />
|
||||
</option>
|
||||
<envs />
|
||||
<patterns />
|
||||
<RunnerSettings RunnerId="Debug">
|
||||
<option name="DEBUG_PORT" value="" />
|
||||
<option name="TRANSPORT" value="0" />
|
||||
<option name="LOCAL" value="true" />
|
||||
</RunnerSettings>
|
||||
<RunnerSettings RunnerId="Run" />
|
||||
<ConfigurationWrapper RunnerId="Debug" />
|
||||
<ConfigurationWrapper RunnerId="Run" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="false" name="FunctionTest.loopClosure" type="JUnit" factoryName="JUnit" temporary="true">
|
||||
<extension name="coverage" enabled="false" merge="false" runner="idea">
|
||||
<pattern>
|
||||
<option name="PATTERN" value="org.jetbrains.k2js.test.*" />
|
||||
<option name="ENABLED" value="false" />
|
||||
</pattern>
|
||||
<pattern>
|
||||
<option name="PATTERN" value="org.jetbrains.k2js.declarations.*" />
|
||||
<option name="ENABLED" value="true" />
|
||||
</pattern>
|
||||
<pattern>
|
||||
<option name="PATTERN" value="org.jetbrains.k2js.generate.*" />
|
||||
<option name="ENABLED" value="true" />
|
||||
</pattern>
|
||||
<pattern>
|
||||
<option name="PATTERN" value="org.jetbrains.k2js.translate.*" />
|
||||
<option name="ENABLED" value="true" />
|
||||
</pattern>
|
||||
<pattern>
|
||||
<option name="PATTERN" value="org.jetbrains.k2js.utils.*" />
|
||||
<option name="ENABLED" value="true" />
|
||||
</pattern>
|
||||
</extension>
|
||||
<module name="translator" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" value="" />
|
||||
<option name="PACKAGE_NAME" value="org.jetbrains.k2js.test" />
|
||||
<option name="MAIN_CLASS_NAME" value="org.jetbrains.k2js.test.FunctionTest" />
|
||||
<option name="METHOD_NAME" value="loopClosure" />
|
||||
<option name="TEST_OBJECT" value="method" />
|
||||
<option name="VM_PARAMETERS" value="-ea" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/translator" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<option name="TEST_SEARCH_SCOPE">
|
||||
<value defaultName="moduleWithDependencies" />
|
||||
</option>
|
||||
<envs />
|
||||
<patterns />
|
||||
<RunnerSettings RunnerId="Debug">
|
||||
<option name="DEBUG_PORT" value="" />
|
||||
<option name="TRANSPORT" value="0" />
|
||||
<option name="LOCAL" value="true" />
|
||||
</RunnerSettings>
|
||||
<ConfigurationWrapper RunnerId="Debug" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="false" name="All in translator" type="JUnit" factoryName="JUnit" temporary="true">
|
||||
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
|
||||
<module name="translator" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" value="" />
|
||||
<option name="PACKAGE_NAME" value="" />
|
||||
<option name="MAIN_CLASS_NAME" value="" />
|
||||
<option name="METHOD_NAME" value="" />
|
||||
<option name="TEST_OBJECT" value="package" />
|
||||
<option name="VM_PARAMETERS" value="-ea" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/translator" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<option name="TEST_SEARCH_SCOPE">
|
||||
<value defaultName="moduleWithDependencies" />
|
||||
</option>
|
||||
<envs />
|
||||
<patterns />
|
||||
<RunnerSettings RunnerId="Run" />
|
||||
<ConfigurationWrapper RunnerId="Run" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="true" type="Remote" factoryName="Remote">
|
||||
<option name="USE_SOCKET_TRANSPORT" value="true" />
|
||||
<option name="SERVER_MODE" value="false" />
|
||||
@@ -905,11 +996,11 @@
|
||||
</method>
|
||||
</configuration>
|
||||
<list size="5">
|
||||
<item index="0" class="java.lang.String" itemvalue="JUnit.PropertyAccessorTest.accessToInstanceProperty" />
|
||||
<item index="1" class="java.lang.String" itemvalue="JUnit.All in translator" />
|
||||
<item index="2" class="java.lang.String" itemvalue="JUnit.KotlinLibTest" />
|
||||
<item index="3" class="java.lang.String" itemvalue="JUnit.PropertyAccessorTest" />
|
||||
<item index="4" class="java.lang.String" itemvalue="JUnit.OperatorOverloadingTest.postfixInc" />
|
||||
<item index="0" class="java.lang.String" itemvalue="JUnit.PropertyAccessorTest" />
|
||||
<item index="1" class="java.lang.String" itemvalue="JUnit.OperatorOverloadingTest.postfixInc" />
|
||||
<item index="2" class="java.lang.String" itemvalue="JUnit.OperatorOverloadingTest.prefixIncReturnsCorrectValue" />
|
||||
<item index="3" class="java.lang.String" itemvalue="JUnit.FunctionTest.loopClosure" />
|
||||
<item index="4" class="java.lang.String" itemvalue="JUnit.All in translator" />
|
||||
</list>
|
||||
<configuration name="<template>" type="WebApp" default="true" selected="false">
|
||||
<Host>localhost</Host>
|
||||
@@ -945,7 +1036,7 @@
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="-8" y="-8" width="1936" height="1176" extended-state="6" />
|
||||
<editor active="false" />
|
||||
<editor active="true" />
|
||||
<layout>
|
||||
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32853025" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
@@ -963,7 +1054,7 @@
|
||||
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" 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.23356494" sideWeight="0.6666667" 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.33333334" sideWeight="0.5" 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.33333334" sideWeight="0.5" 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="Metrics" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3275862" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
|
||||
@@ -1007,7 +1098,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="Operator overloading: simple cases with ++ and --." />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="Refactoring operation translator code." />
|
||||
<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" />
|
||||
@@ -1020,7 +1111,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 support for simple case of safe qualified access." />
|
||||
<MESSAGE value="Added support for returning value from safe qualified expression." />
|
||||
<MESSAGE value="Added support for simple case of when expression." />
|
||||
<MESSAGE value="Supported another case of when expression." />
|
||||
@@ -1045,6 +1135,7 @@
|
||||
<MESSAGE value="Fixed design flaw which prevented base class from being inherited if it was defined after the derived class." />
|
||||
<MESSAGE value="Added test. Refactored test code: got rid of obsolete IncludeLibraryTest class." />
|
||||
<MESSAGE value="Operator overloading: simple cases with ++ and --." />
|
||||
<MESSAGE value="Refactoring operation translator code." />
|
||||
</component>
|
||||
<component name="XDebuggerManager">
|
||||
<breakpoint-manager />
|
||||
@@ -1054,6 +1145,13 @@
|
||||
<option name="FILTER_TARGETS" value="false" />
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/util/AstUtil.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="307" column="15" selection-start="10810" selection-end="10810" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/backend/js/ast/JsValueLiteral.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="9" column="22" selection-start="340" selection-end="340" vertical-scroll-proportion="0.0">
|
||||
@@ -1068,6 +1166,20 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/WhileTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="21" column="16" selection-start="405" selection-end="405" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/Translation.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="18" column="19" selection-start="723" selection-end="723" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/backend/js/ast/JsDoWhile.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="9" column="13" selection-start="336" selection-end="336" vertical-scroll-proportion="0.0">
|
||||
@@ -1075,6 +1187,27 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ReferenceTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="50" column="20" selection-start="1805" selection-end="1805" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="267" column="12" selection-start="11940" selection-end="11940" vertical-scroll-proportion="-9.884615">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/BasicClassTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="38" column="16" selection-start="933" selection-end="933" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/backend/js/ast/JsCatchScope.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="13" column="13" selection-start="465" selection-end="465" vertical-scroll-proportion="0.0">
|
||||
@@ -1082,6 +1215,13 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/BinaryOperationTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="44" column="27" selection-start="1506" selection-end="1506" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/backend/js/ast/JsBinaryOperator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="9" column="12" selection-start="348" selection-end="348" vertical-scroll-proportion="0.0">
|
||||
@@ -1089,79 +1229,32 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/BinaryOperationTranslator.java">
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/FunctionTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="22" column="41" selection-start="833" selection-end="833" vertical-scroll-proportion="0.0">
|
||||
<state line="37" column="16" selection-start="833" selection-end="833" vertical-scroll-proportion="0.8342059">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/Translation.java">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/PropertyAccessTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="60" column="4" selection-start="2241" selection-end="2241" vertical-scroll-proportion="0.0">
|
||||
<state line="103" column="42" selection-start="4424" selection-end="4424" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/UnaryOperationTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="49" column="0" selection-start="1924" selection-end="1924" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/postfixIncOverload.kt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="15" column="55" selection-start="162" selection-end="162" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/prefixDecOverload.kt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="13" column="6" selection-start="135" selection-end="135" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/backend/js/ast/JsVars.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="20" column="22" selection-start="630" selection-end="630" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslationUtils.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="41" column="1" selection-start="1625" selection-end="1625" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/OperatorOverloadingTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="22" column="16" selection-start="438" selection-end="438" vertical-scroll-proportion="0.6130653">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="330" column="71" selection-start="14725" selection-end="14725" vertical-scroll-proportion="-18.423077">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/KotlinLibTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="110" column="16" selection-start="3936" selection-end="3936" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/kotlinLib/cases/commaExpression.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="1" column="28" selection-start="34" selection-end="34" vertical-scroll-proportion="0.026356589">
|
||||
<state line="37" column="83" selection-start="857" selection-end="857" vertical-scroll-proportion="0.589372">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.google.dart.compiler.InternalCompilerException;
|
||||
import com.google.dart.compiler.backend.js.ast.*;
|
||||
import com.google.dart.compiler.common.SourceInfo;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@@ -320,4 +321,17 @@ public class AstUtil {
|
||||
public static JsExpression equalsTrue(JsExpression expression, JsProgram program) {
|
||||
return equals(expression, program.getTrueLiteral());
|
||||
}
|
||||
|
||||
public static JsBinaryOperation comma(JsExpression... expressions) {
|
||||
return comma(Arrays.asList(expressions));
|
||||
}
|
||||
|
||||
public static JsBinaryOperation comma(List<JsExpression> expressions) {
|
||||
assert expressions.size() >= 2 : "Comma operator applicable to two or more expressions";
|
||||
JsBinaryOperation result = new JsBinaryOperation(JsBinaryOperator.COMMA, expressions.get(0), expressions.get(1));
|
||||
for (int i = 2; i < expressions.size(); ++i) {
|
||||
result = new JsBinaryOperation(JsBinaryOperator.COMMA, result, expressions.get(i));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ public final class BinaryOperationTranslator extends OperationTranslator {
|
||||
return translateAsBinaryOperation();
|
||||
}
|
||||
|
||||
//TODO: think about the ways to improve logic here
|
||||
//TODO: method too long
|
||||
@Nullable
|
||||
public JsInvocation translateAsSetterCall() {
|
||||
JetToken jetOperationToken = getOperationToken();
|
||||
@@ -50,11 +50,11 @@ public final class BinaryOperationTranslator extends OperationTranslator {
|
||||
return null;
|
||||
}
|
||||
JetExpression leftExpression = expression.getLeft();
|
||||
JsInvocation setterCall = Translation.propertyAccessTranslator(translationContext()).
|
||||
translateAsPropertySetterCall(leftExpression);
|
||||
if (setterCall == null) {
|
||||
PropertyAccessTranslator propertyAccessTranslator = Translation.propertyAccessTranslator(translationContext());
|
||||
if (!propertyAccessTranslator.canBePropertySetterCall(leftExpression)) {
|
||||
return null;
|
||||
}
|
||||
JsInvocation setterCall = propertyAccessTranslator.translateAsPropertySetterCall(leftExpression);
|
||||
JsExpression right = translateRightExpression();
|
||||
setterCall.setArguments(Arrays.asList(right));
|
||||
return setterCall;
|
||||
|
||||
@@ -19,6 +19,12 @@ import java.util.List;
|
||||
*/
|
||||
public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
|
||||
|
||||
@NotNull
|
||||
private JsExpression translateAsExpression(@NotNull JetExpression expression,
|
||||
@NotNull TranslationContext context) {
|
||||
return AstUtil.convertToExpression(expression.accept(this, context));
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public JsNode visitConstantExpression(@NotNull JetConstantExpression expression,
|
||||
@@ -157,7 +163,8 @@ public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private JsStatement translateElseAsStatement(JetIfExpression expression, TranslationContext context) {
|
||||
private JsStatement translateElseAsStatement(@NotNull JetIfExpression expression,
|
||||
@NotNull TranslationContext context) {
|
||||
JetExpression jetElse = expression.getElse();
|
||||
if (jetElse == null) {
|
||||
return null;
|
||||
@@ -203,10 +210,6 @@ public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
|
||||
return translateAsExpression(expression, context);
|
||||
}
|
||||
|
||||
private JsExpression translateAsExpression(JetExpression expression, TranslationContext context) {
|
||||
return AstUtil.convertToExpression(expression.accept(this, context));
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public JsNode visitWhileExpression(@NotNull JetWhileExpression expression, @NotNull TranslationContext context) {
|
||||
@@ -261,19 +264,13 @@ public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
|
||||
@NotNull
|
||||
private JsExpression translateQualifiedExpression(@NotNull JetQualifiedExpression expression,
|
||||
@NotNull TranslationContext context) {
|
||||
JsInvocation getterCall = translateAsGetterCall(expression, context);
|
||||
if (getterCall != null) {
|
||||
return getterCall;
|
||||
PropertyAccessTranslator propertyAccessTranslator = Translation.propertyAccessTranslator(context);
|
||||
if (propertyAccessTranslator.canBePropertyGetterCall(expression)) {
|
||||
return propertyAccessTranslator.translateAsPropertyGetterCall(expression);
|
||||
}
|
||||
return translateAsQualifiedAccess(expression, context);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private JsInvocation translateAsGetterCall(@NotNull JetQualifiedExpression expression,
|
||||
@NotNull TranslationContext context) {
|
||||
return Translation.propertyAccessTranslator(context).resolveAsPropertyGet(expression);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsExpression translateAsQualifiedAccess(@NotNull JetQualifiedExpression expression,
|
||||
@NotNull TranslationContext context) {
|
||||
@@ -386,5 +383,12 @@ public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
|
||||
return Translation.functionTranslator(context).translateAsLiteral(expression.getFunctionLiteral());
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public JsNode visitThisExpression(@NotNull JetThisExpression expression,
|
||||
@NotNull TranslationContext context) {
|
||||
return new JsThisRef();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
package org.jetbrains.k2js.translate;
|
||||
|
||||
import com.google.dart.compiler.backend.js.ast.JsExpression;
|
||||
import com.google.dart.compiler.backend.js.ast.JsName;
|
||||
import com.google.dart.compiler.backend.js.ast.JsNameRef;
|
||||
import com.google.dart.compiler.util.AstUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||
@@ -43,4 +46,33 @@ public class OperationTranslator extends AbstractTranslator {
|
||||
return BindingUtils.getDescriptorForReferenceExpression
|
||||
(translationContext().bindingContext(), operationReference);
|
||||
}
|
||||
|
||||
|
||||
protected final class TemporaryVariable {
|
||||
|
||||
@NotNull
|
||||
private final JsExpression assignmentExpression;
|
||||
@NotNull
|
||||
private final JsName variableName;
|
||||
|
||||
private TemporaryVariable(@NotNull JsExpression initExpression) {
|
||||
this.variableName = translationContext().enclosingScope().declareTemporary();
|
||||
this.assignmentExpression = AstUtil.newAssignment(variableName.makeRef(), initExpression);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public JsNameRef nameReference() {
|
||||
return variableName.makeRef();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public JsExpression assignmentExpression() {
|
||||
return assignmentExpression;
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public TemporaryVariable declareTemporary(@NotNull JsExpression initExpression) {
|
||||
return new TemporaryVariable(initExpression);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -23,6 +23,9 @@ import org.jetbrains.jet.lang.resolve.calls.ResolvedCall;
|
||||
//TODO ask for code review. Class has messy code.
|
||||
public final class PropertyAccessTranslator extends AbstractTranslator {
|
||||
|
||||
private static String MESSAGE = "Cannot be accessor call. Use canBeProperty*Call to ensure this method " +
|
||||
"can be called safely.";
|
||||
|
||||
@NotNull
|
||||
public static PropertyAccessTranslator newInstance(@NotNull TranslationContext context) {
|
||||
return new PropertyAccessTranslator(context);
|
||||
@@ -32,28 +35,88 @@ public final class PropertyAccessTranslator extends AbstractTranslator {
|
||||
super(context);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public JsInvocation resolveAsPropertyGet(@NotNull JetQualifiedExpression expression) {
|
||||
JetExpression selectorExpression = expression.getSelectorExpression();
|
||||
assert selectorExpression != null : "Selector should not be null.";
|
||||
JsName getterName = getPropertyGetterName(selectorExpression);
|
||||
if (getterName == null) {
|
||||
return null;
|
||||
|
||||
//TODO: ask if these methods can be more clear
|
||||
public boolean canBePropertyGetterCall(@NotNull JetExpression expression) {
|
||||
if (expression instanceof JetQualifiedExpression) {
|
||||
JetSimpleNameExpression selector = getNullableSelector((JetQualifiedExpression) expression);
|
||||
if (selector == null) {
|
||||
return false;
|
||||
}
|
||||
return (getNullableGetterName(selector) != null);
|
||||
}
|
||||
if (expression instanceof JetSimpleNameExpression) {
|
||||
return (getNullableGetterName((JetSimpleNameExpression) expression) != null);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean canBePropertyAccess(@NotNull JetExpression expression) {
|
||||
return canBePropertyGetterCall(expression);
|
||||
}
|
||||
|
||||
public boolean canBePropertySetterCall(@NotNull JetExpression expression) {
|
||||
if (expression instanceof JetQualifiedExpression) {
|
||||
JetSimpleNameExpression selector = getNullableSelector((JetQualifiedExpression) expression);
|
||||
if (selector == null) {
|
||||
return false;
|
||||
}
|
||||
return (getNullableSetterName(selector) != null);
|
||||
}
|
||||
if (expression instanceof JetSimpleNameExpression) {
|
||||
return (getNullableSetterName((JetSimpleNameExpression) expression) != null);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public JsInvocation translateAsPropertyGetterCall(@NotNull JetExpression expression) {
|
||||
if (expression instanceof JetQualifiedExpression) {
|
||||
return resolveAsPropertyGet((JetQualifiedExpression) expression);
|
||||
}
|
||||
if (expression instanceof JetSimpleNameExpression) {
|
||||
return resolveAsPropertyGet((JetSimpleNameExpression) expression);
|
||||
}
|
||||
throw new AssertionError(MESSAGE);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsInvocation resolveAsPropertyGet(@NotNull JetQualifiedExpression expression) {
|
||||
JsName getterName = getNotNullGetterName(getNotNullSelector(expression));
|
||||
return translateReceiverAndReturnAccessorInvocation(expression, getterName);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
JsInvocation resolveAsPropertyGet(@NotNull JetSimpleNameExpression expression) {
|
||||
JsName getterName = getPropertyGetterName(expression);
|
||||
if (getterName == null) {
|
||||
return null;
|
||||
}
|
||||
JsNameRef getterReference =
|
||||
TranslationUtils.getReference(translationContext(), expression, getterName);
|
||||
@NotNull
|
||||
private JsInvocation resolveAsPropertyGet(@NotNull JetSimpleNameExpression expression) {
|
||||
JsName getterName = getNotNullGetterName(expression);
|
||||
JsNameRef getterReference = TranslationUtils.getReference(translationContext(), expression, getterName);
|
||||
return AstUtil.newInvocation(getterReference);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public JsInvocation translateAsPropertySetterCall(@NotNull JetExpression expression) {
|
||||
if (expression instanceof JetDotQualifiedExpression) {
|
||||
return resolveAsPropertySet((JetDotQualifiedExpression) expression);
|
||||
}
|
||||
if (expression instanceof JetSimpleNameExpression) {
|
||||
return resolveAsPropertySet((JetSimpleNameExpression) expression);
|
||||
}
|
||||
throw new AssertionError(MESSAGE);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsInvocation resolveAsPropertySet(@NotNull JetDotQualifiedExpression dotQualifiedExpression) {
|
||||
JsName setterName = getNotNullSetterName(getNotNullSelector(dotQualifiedExpression));
|
||||
return translateReceiverAndReturnAccessorInvocation(dotQualifiedExpression, setterName);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsInvocation resolveAsPropertySet(@NotNull JetSimpleNameExpression expression) {
|
||||
JsName setterName = getNotNullSetterName(expression);
|
||||
JsNameRef setterReference = Translation.generateCorrectReference(translationContext(), expression, setterName);
|
||||
return AstUtil.newInvocation(setterReference);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsInvocation translateReceiverAndReturnAccessorInvocation
|
||||
(@NotNull JetQualifiedExpression qualifiedExpression, @NotNull JsName accessorName) {
|
||||
@@ -65,39 +128,32 @@ public final class PropertyAccessTranslator extends AbstractTranslator {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public JsInvocation translateAsPropertySetterCall(@NotNull JetExpression expression) {
|
||||
if (expression instanceof JetDotQualifiedExpression) {
|
||||
return resolveAsPropertySet((JetDotQualifiedExpression) expression);
|
||||
}
|
||||
if (expression instanceof JetSimpleNameExpression) {
|
||||
return resolveAsPropertySet((JetSimpleNameExpression) expression);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private JsInvocation resolveAsPropertySet(@NotNull JetDotQualifiedExpression dotQualifiedExpression) {
|
||||
JetExpression selectorExpression = dotQualifiedExpression.getSelectorExpression();
|
||||
private JetSimpleNameExpression getNullableSelector(@NotNull JetQualifiedExpression expression) {
|
||||
JetExpression selectorExpression = expression.getSelectorExpression();
|
||||
assert selectorExpression != null : "Selector should not be null.";
|
||||
JsName setterName = getPropertySetterName(selectorExpression);
|
||||
if (setterName == null) {
|
||||
if (!(selectorExpression instanceof JetSimpleNameExpression)) {
|
||||
return null;
|
||||
}
|
||||
return translateReceiverAndReturnAccessorInvocation(dotQualifiedExpression, setterName);
|
||||
return (JetSimpleNameExpression) selectorExpression;
|
||||
}
|
||||
|
||||
|
||||
@NotNull
|
||||
private JetSimpleNameExpression getNotNullSelector(@NotNull JetQualifiedExpression expression) {
|
||||
JetSimpleNameExpression selectorExpression = getNullableSelector(expression);
|
||||
assert selectorExpression != null : MESSAGE;
|
||||
return selectorExpression;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsName getNotNullGetterName(@NotNull JetSimpleNameExpression selectorExpression) {
|
||||
JsName getterName = getNullableGetterName(selectorExpression);
|
||||
assert getterName != null : MESSAGE;
|
||||
return getterName;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
JsInvocation resolveAsPropertySet(@NotNull JetSimpleNameExpression expression) {
|
||||
JsName setterName = getPropertySetterName(expression);
|
||||
if (setterName == null) {
|
||||
return null;
|
||||
}
|
||||
JsNameRef setterReference = Translation.generateCorrectReference(translationContext(), expression, setterName);
|
||||
return AstUtil.newInvocation(setterReference);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public JsName getPropertyGetterName(@NotNull JetExpression expression) {
|
||||
private JsName getNullableGetterName(@NotNull JetSimpleNameExpression expression) {
|
||||
PropertyDescriptor property = getPropertyDescriptor(expression);
|
||||
if (property == null) {
|
||||
return null;
|
||||
@@ -109,8 +165,16 @@ public final class PropertyAccessTranslator extends AbstractTranslator {
|
||||
return translationContext().getNameForDescriptor(getter);
|
||||
}
|
||||
|
||||
|
||||
@NotNull
|
||||
private JsName getNotNullSetterName(@NotNull JetSimpleNameExpression selectorExpression) {
|
||||
JsName setterName = getNullableSetterName(selectorExpression);
|
||||
assert setterName != null : MESSAGE;
|
||||
return setterName;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public JsName getPropertySetterName(@NotNull JetExpression expression) {
|
||||
private JsName getNullableSetterName(@NotNull JetSimpleNameExpression expression) {
|
||||
PropertyDescriptor property = getPropertyDescriptor(expression);
|
||||
if (property == null) {
|
||||
return null;
|
||||
@@ -123,7 +187,7 @@ public final class PropertyAccessTranslator extends AbstractTranslator {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private PropertyDescriptor getPropertyDescriptor(@NotNull JetExpression expression) {
|
||||
private PropertyDescriptor getPropertyDescriptor(@NotNull JetSimpleNameExpression expression) {
|
||||
ResolvedCall<?> resolvedCall =
|
||||
BindingUtils.getResolvedCall(translationContext().bindingContext(), expression);
|
||||
if (resolvedCall != null) {
|
||||
|
||||
@@ -43,7 +43,12 @@ public class ReferenceTranslator extends AbstractTranslator {
|
||||
|
||||
@Nullable
|
||||
private JsInvocation resolveAsPropertyAccess(@NotNull JetSimpleNameExpression expression) {
|
||||
return Translation.propertyAccessTranslator(translationContext()).resolveAsPropertyGet(expression);
|
||||
|
||||
PropertyAccessTranslator propertyAccessTranslator = Translation.propertyAccessTranslator(translationContext());
|
||||
if (propertyAccessTranslator.canBePropertyGetterCall(expression)) {
|
||||
return propertyAccessTranslator.translateAsPropertyGetterCall(expression);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
@@ -38,5 +38,4 @@ public final class TranslationUtils {
|
||||
@NotNull String name) {
|
||||
return context.enclosingScope().findExistingName(name);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -4,9 +4,12 @@ import com.google.dart.compiler.backend.js.ast.*;
|
||||
import com.google.dart.compiler.util.AstUtil;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.psi.*;
|
||||
import org.jetbrains.jet.lexer.JetToken;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
/**
|
||||
* @author Talanov Pavel
|
||||
*/
|
||||
@@ -27,34 +30,120 @@ public final class UnaryOperationTranslator extends OperationTranslator {
|
||||
|
||||
@NotNull
|
||||
private final JetUnaryExpression expression;
|
||||
@NotNull
|
||||
private final JsExpression baseExpression;
|
||||
private final boolean isPrefix;
|
||||
private final boolean isVariableReassignment;
|
||||
private final boolean isStatement;
|
||||
private final boolean isPropertyAccess;
|
||||
@Nullable
|
||||
private final JsNameRef operationReference;
|
||||
|
||||
private UnaryOperationTranslator(@NotNull TranslationContext context, @NotNull JetUnaryExpression expression,
|
||||
boolean isPrefix) {
|
||||
super(context);
|
||||
this.expression = expression;
|
||||
this.isPrefix = isPrefix;
|
||||
this.isVariableReassignment = BindingUtils.isVariableReassignment
|
||||
this.isVariableReassignment = isVariableReassignment(expression);
|
||||
this.isStatement = BindingUtils.isStatement(translationContext().bindingContext(), expression);
|
||||
this.baseExpression = translateBaseExpression();
|
||||
this.isPropertyAccess = isPropertyAccess();
|
||||
this.operationReference = getOverloadedOperationReference(expression);
|
||||
}
|
||||
|
||||
private boolean isPropertyAccess() {
|
||||
return Translation.propertyAccessTranslator(translationContext()).canBePropertyAccess(getBaseExpression());
|
||||
|
||||
}
|
||||
|
||||
private boolean isVariableReassignment(JetUnaryExpression expression) {
|
||||
return BindingUtils.isVariableReassignment
|
||||
(translationContext().bindingContext(), expression);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
JsExpression translate() {
|
||||
JsExpression baseExpression = translateBaseExpression();
|
||||
JsNameRef operationReference = getOverloadedOperationReference(expression);
|
||||
if (operationReference != null) {
|
||||
if (isPrefix && !isVariableReassignment) {
|
||||
return overloadedMethodInvocation(baseExpression, operationReference);
|
||||
} else if (isPrefix) {
|
||||
|
||||
}
|
||||
return translateOverload();
|
||||
}
|
||||
return jsUnaryExpression(baseExpression);
|
||||
return jsUnaryExpression();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsExpression jsUnaryExpression(@NotNull JsExpression baseExpression) {
|
||||
private JsExpression translateOverload() {
|
||||
if (isStatement || isPrefix) {
|
||||
return asPrefix();
|
||||
}
|
||||
if (isVariableReassignment) {
|
||||
return asPostfixWithReassignment();
|
||||
} else {
|
||||
return asPostfixWithNoReassignment();
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsExpression asPrefix() {
|
||||
if (isVariableReassignment) {
|
||||
return variableReassignment();
|
||||
}
|
||||
return overloadedMethodInvocation(baseExpression);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsExpression asPostfixWithReassignment() {
|
||||
// code fragment: expr(a++)
|
||||
// generate: expr( (t = a, a = a.inc(), t) )
|
||||
TemporaryVariable t = declareTemporary(baseExpression);
|
||||
JsExpression variableReassignment = variableReassignment();
|
||||
return AstUtil.comma(t.assignmentExpression(), variableReassignment, t.nameReference());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsExpression asPostfixWithNoReassignment() {
|
||||
// code fragment: expr(a++)
|
||||
// generate: expr( (t1 = a, t2 = t1, t2.inc(), t1) )
|
||||
assert operationReference != null;
|
||||
TemporaryVariable t1 = declareTemporary(baseExpression);
|
||||
TemporaryVariable t2 = declareTemporary(t1.nameReference());
|
||||
JsExpression methodCall = overloadedMethodInvocation(t2.nameReference());
|
||||
JsExpression returnedValue = t1.nameReference();
|
||||
return AstUtil.comma(t1.assignmentExpression(), t2.assignmentExpression(), methodCall, returnedValue);
|
||||
}
|
||||
|
||||
|
||||
//TODO: should modify this for properties
|
||||
@NotNull
|
||||
private JsExpression variableReassignment() {
|
||||
if (isPropertyAccess) {
|
||||
return propertyReassignment();
|
||||
}
|
||||
return localVariableReassignment();
|
||||
}
|
||||
|
||||
private JsExpression localVariableReassignment() {
|
||||
assert baseExpression instanceof JsNameRef : "Base expression should be an l-value";
|
||||
return AstUtil.newAssignment((JsNameRef) baseExpression, overloadedMethodInvocation(baseExpression));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsExpression propertyReassignment() {
|
||||
JetExpression jetBaseExpression = getBaseExpression();
|
||||
PropertyAccessTranslator propertyAccessTranslator = Translation.propertyAccessTranslator(translationContext());
|
||||
JsInvocation setterCall = propertyAccessTranslator.translateAsPropertySetterCall(jetBaseExpression);
|
||||
assert propertyAccessTranslator.canBePropertyGetterCall(jetBaseExpression) : "Should be a getter call";
|
||||
JsExpression overloadedMethodCallOnPropertyGetter = overloadedMethodInvocation(baseExpression);
|
||||
setterCall.setArguments(Arrays.asList(overloadedMethodCallOnPropertyGetter));
|
||||
return setterCall;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsExpression overloadedMethodInvocation(@NotNull JsExpression receiver) {
|
||||
AstUtil.setQualifier(operationReference, receiver);
|
||||
return AstUtil.newInvocation(operationReference);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsExpression jsUnaryExpression() {
|
||||
JsUnaryOperator operator = OperatorTable.getUnaryOperator(getOperationToken());
|
||||
if (isPrefix) {
|
||||
return new JsPrefixOperation(operator, baseExpression);
|
||||
@@ -65,16 +154,14 @@ public final class UnaryOperationTranslator extends OperationTranslator {
|
||||
|
||||
@NotNull
|
||||
private JsExpression translateBaseExpression() {
|
||||
JetExpression baseExpression = expression.getBaseExpression();
|
||||
assert baseExpression != null : "Unary expression should have a base expression";
|
||||
JetExpression baseExpression = getBaseExpression();
|
||||
return Translation.translateAsExpression(baseExpression, translationContext());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsExpression overloadedMethodInvocation(@NotNull JsExpression receiver,
|
||||
@NotNull JsNameRef operationReference) {
|
||||
AstUtil.setQualifier(operationReference, receiver);
|
||||
return AstUtil.newInvocation(operationReference);
|
||||
private JetExpression getBaseExpression() {
|
||||
JetExpression baseExpression = expression.getBaseExpression();
|
||||
assert baseExpression != null : "Unary expression should have a base expression";
|
||||
return baseExpression;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -28,4 +28,19 @@ public class OperatorOverloadingTest extends TranslationTest {
|
||||
public void prefixInc() throws Exception {
|
||||
testFooBoxIsTrue("prefixDecOverload.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void prefixIncReturnsCorrectValue() throws Exception {
|
||||
testFooBoxIsTrue("prefixIncReturnsCorrectValue.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void overloadedCallOnProperty() throws Exception {
|
||||
testFooBoxIsTrue("overloadedCallOnProperty.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void postfixOnProperty() throws Exception {
|
||||
testFooBoxIsTrue("postfixOnProperty.kt");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
namespace foo
|
||||
|
||||
var a = MyInt()
|
||||
|
||||
class MyInt() {
|
||||
var b = 0
|
||||
|
||||
fun inc() {
|
||||
b = b + 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun box() : Boolean {
|
||||
a++;
|
||||
return (a.b == 1);
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
namespace foo
|
||||
|
||||
var a = MyInt()
|
||||
|
||||
class MyInt() {
|
||||
var b = 0
|
||||
|
||||
fun inc() : MyInt {
|
||||
b = b + 1;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun box() : Boolean {
|
||||
val d = a++;
|
||||
return (a.b == 1) && (d.b == 1);
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
namespace foo
|
||||
|
||||
class MyInt() {
|
||||
var b = 0
|
||||
|
||||
fun dec() : MyInt {
|
||||
b = b + 1;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
fun box() : Boolean {
|
||||
var c = MyInt()
|
||||
val d = --c;
|
||||
return (c.b == 1);
|
||||
}
|
||||
Reference in New Issue
Block a user