Lots of refactoring and code improvements.
This commit is contained in:
Generated
+300
-234
@@ -8,11 +8,25 @@
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="f02ef53d-47a4-4f5e-a1aa-3df68aae9b20" name="Default" comment="">
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/notOverload.kt" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/plusAndMinusAsAnExpression.kt" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/initializer/AbstractInitializerTranslator.java" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/initializer/ClassInitializerTranslator.java" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/initializer/InitializerVisitor.java" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/initializer/NamespaceInitializerTranslator.java" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/class/cases/constructorWithPropertiesAsParameters.kt" />
|
||||
<change type="DELETED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\src\org\jetbrains\k2js\translate\ClassInitializerVisitor.java" afterPath="" />
|
||||
<change type="DELETED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\src\org\jetbrains\k2js\translate\InitializerGenerator.java" afterPath="" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/compareTo.kt" afterPath="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/compareTo.kt" />
|
||||
<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" />
|
||||
<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/ClassDeclarationTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ClassDeclarationTranslator.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ClassTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ClassTranslator.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/DeclarationBodyVisitor.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/DeclarationBodyVisitor.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/NamespaceTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/NamespaceTranslator.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/src/org/jetbrains/k2js/translate/TranslationContext.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslationContext.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/TranslatorVisitor.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslatorVisitor.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/BasicClassTest.java" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/BasicClassTest.java" />
|
||||
</list>
|
||||
<ignored path="k2js.iws" />
|
||||
<ignored path=".idea/workspace.xml" />
|
||||
@@ -110,7 +124,7 @@
|
||||
<favorites_list name="k2js" />
|
||||
</component>
|
||||
<component name="FileEditorManager">
|
||||
<splitter split-orientation="horizontal" split-proportion="0.51374346">
|
||||
<splitter split-orientation="horizontal" split-proportion="0.32198954">
|
||||
<split-first>
|
||||
<leaf>
|
||||
<file leaf-file-name="UnaryOperationTranslator.java" pinned="false" current="false" current-in-tab="false">
|
||||
@@ -131,10 +145,10 @@
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="notOverload.kt" pinned="false" current="true" current-in-tab="true">
|
||||
<file leaf-file-name="notOverload.kt" pinned="false" current="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/notOverload.kt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="8" column="37" selection-start="87" selection-end="87" vertical-scroll-proportion="0.18553889">
|
||||
<state line="8" column="30" selection-start="87" selection-end="87" vertical-scroll-proportion="0.19181946">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
@@ -153,80 +167,17 @@
|
||||
</split-first>
|
||||
<split-second>
|
||||
<leaf>
|
||||
<file leaf-file-name="compareTo.kt" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/compareTo.kt">
|
||||
<file leaf-file-name="ClassInheritanceTest.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ClassInheritanceTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="16" column="1" selection-start="332" selection-end="332" vertical-scroll-proportion="0.0">
|
||||
<state line="37" column="16" selection-start="872" selection-end="872" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="plusAndMinusAsAnExpression.kt" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/plusAndMinusAsAnExpression.kt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="11" column="11" selection-start="138" selection-end="138" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="plusAndMinusAsAnExpression.js" pinned="false" current="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/out/plusAndMinusAsAnExpression.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="21" column="54" selection-start="416" selection-end="416" vertical-scroll-proportion="0.5211679">
|
||||
<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">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="177" column="0" selection-start="8328" selection-end="8328" 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">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="140" column="63" selection-start="7306" selection-end="7306" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="OperatorConventions.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/OperatorConventions.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="12" column="13" selection-start="357" selection-end="357" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="TemporaryBindingTrace.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TemporaryBindingTrace.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="22" column="0" selection-start="511" selection-end="511" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="OperatorOverloadingTest.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/OperatorOverloadingTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="88" column="16" selection-start="2165" selection-end="2165" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="compareTo.js" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/out/compareTo.js">
|
||||
<file leaf-file-name="valuePassedToAncestorConstructor.kt" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/inheritance/cases/valuePassedToAncestorConstructor.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 />
|
||||
@@ -234,10 +185,75 @@
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="plusAssignReassign.kt" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/plusAssignReassign.kt">
|
||||
<file leaf-file-name="AbstractInitializerTranslator.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/initializer/AbstractInitializerTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="11" column="14" selection-start="142" selection-end="142" vertical-scroll-proportion="0.0">
|
||||
<state line="47" column="66" selection-start="1886" selection-end="1886" vertical-scroll-proportion="0.0">
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="BasicClassTest.java" pinned="false" current="true" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/BasicClassTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="43" column="72" selection-start="1133" selection-end="1133" vertical-scroll-proportion="0.5726375">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="initializationOrder.js" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/inheritance/out/initializationOrder.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="10" column="36" selection-start="224" selection-end="224" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="ClassTranslator.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ClassTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="35" column="22" selection-start="1318" selection-end="1318" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="PropertyAccessorTest.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/PropertyAccessorTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="52" column="16" selection-start="1184" selection-end="1184" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="NamespaceTranslator.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/NamespaceTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="80" column="85" selection-start="3267" selection-end="3267" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<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="37" column="72" selection-start="1514" selection-end="1514" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="TranslationContext.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslationContext.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="86" column="35" selection-start="3339" selection-end="3339" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
@@ -264,22 +280,22 @@
|
||||
<component name="IdeDocumentHistory">
|
||||
<option name="changedFiles">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/binaryPlusOverload.kt" />
|
||||
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/binaryDivOverload.kt" />
|
||||
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/plusAssignNoReassign.kt" />
|
||||
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/out/plusAssignReassign.kt" />
|
||||
<option value="$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContext.java" />
|
||||
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/plusAssignReassign.kt" />
|
||||
<option value="$PROJECT_DIR$/js/src/com/google/dart/compiler/util/AstUtil.java" />
|
||||
<option value="$PROJECT_DIR$/js/src/com/google/dart/compiler/backend/js/ast/JsInvocation.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/UnaryOperationTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/BindingUtils.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/BinaryOperationTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/OperationTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/notOverload.kt" />
|
||||
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/compareTo.kt" />
|
||||
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/OperatorOverloadingTest.java" />
|
||||
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/plusAndMinusAsAnExpression.kt" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/AbstractInitializerTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/NamespaceInitializerTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ClassInitializerTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslationContext.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/initializer/InitializerGenerator.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/initializer/NamespaceInitializerTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslatorVisitor.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslationUtils.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ClassDeclarationTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/initializer/ClassInitializerTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/initializer/InitializerVisitor.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ClassTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/NamespaceTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/Translation.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/initializer/AbstractInitializerTranslator.java" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
@@ -411,68 +427,6 @@
|
||||
<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="patternMatching" />
|
||||
<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" />
|
||||
@@ -508,6 +462,10 @@
|
||||
<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>
|
||||
@@ -523,7 +481,55 @@
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="expression" />
|
||||
<option name="myItemId" value="inheritance" />
|
||||
<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" />
|
||||
<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="class" />
|
||||
<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="class" />
|
||||
<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>
|
||||
@@ -559,6 +565,54 @@
|
||||
<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="src" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="k2js" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="translate" />
|
||||
<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="src" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="k2js" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="translate" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="initializer" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="k2js" />
|
||||
@@ -946,23 +1000,23 @@
|
||||
<layout>
|
||||
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32853025" sideWeight="0.49812934" 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" />
|
||||
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32756963" sideWeight="0.4746125" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.24973261" sideWeight="0.7183908" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.28530258" sideWeight="0.7685729" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="IDEtalk Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.27185398" sideWeight="0.2709781" order="10" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.27185398" sideWeight="0.14270444" order="10" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
|
||||
<window_info id="IDEtalk" 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" />
|
||||
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32854405" sideWeight="0.5" order="13" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32853025" sideWeight="0.48743987" order="8" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32853025" sideWeight="0.4703367" order="8" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32949087" sideWeight="0.49812934" order="6" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="true" content_ui="tabs" />
|
||||
<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.18332443" sideWeight="0.728146" order="0" 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.27185398" sideWeight="0.7252806" 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.27185398" sideWeight="0.85355425" 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="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32756963" sideWeight="0.48957777" order="1" 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" />
|
||||
<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="11" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
|
||||
@@ -1004,7 +1058,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="Binary operation overloading for most cases (except contains, compareTo)." />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="Added test for operator overloading." />
|
||||
<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" />
|
||||
@@ -1017,7 +1071,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="Supported variable is value pattern matching." />
|
||||
<MESSAGE value="Added tests and support for binary with type RHS expressions." />
|
||||
<MESSAGE value="Added support for multiple cases in one when entry." />
|
||||
<MESSAGE value="Split expression tests into different categories." />
|
||||
@@ -1042,6 +1095,7 @@
|
||||
<MESSAGE value="Added test for unary operation on int properties." />
|
||||
<MESSAGE value="Refactoring BinaryOperationTranslator." />
|
||||
<MESSAGE value="Binary operation overloading for most cases (except contains, compareTo)." />
|
||||
<MESSAGE value="Added test for operator overloading." />
|
||||
</component>
|
||||
<component name="XDebuggerManager">
|
||||
<breakpoint-manager />
|
||||
@@ -1051,110 +1105,122 @@
|
||||
<option name="FILTER_TARGETS" value="false" />
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/BinaryOperationTranslator.java">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="62" column="58" selection-start="2486" selection-end="2486" vertical-scroll-proportion="0.0">
|
||||
<state line="105" column="56" selection-start="4505" selection-end="4505" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContext.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="45" column="61" selection-start="2749" selection-end="2749" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/BasicExpressionTypingVisitor.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="789" column="22" selection-start="43248" selection-end="43248" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/BindingUtils.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="177" column="0" selection-start="8328" selection-end="8328" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingVisitorForStatements.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="140" column="63" selection-start="7306" selection-end="7306" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/OperatorConventions.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="12" column="13" selection-start="357" selection-end="357" vertical-scroll-proportion="0.0" />
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TemporaryBindingTrace.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="22" column="0" selection-start="511" selection-end="511" vertical-scroll-proportion="0.0" />
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/OperationTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="45" column="0" selection-start="1750" selection-end="1750" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/binaryDivOverload.kt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="0" column="0" selection-start="0" selection-end="103" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/plusAssignReassign.kt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="11" column="14" selection-start="142" selection-end="142" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/out/compareTo.js">
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/class/out/classInstantiation.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/testFiles/operatorOverloading/cases/compareTo.kt">
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/class/out/propertyAccess.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="16" column="1" selection-start="332" selection-end="332" 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/initializer/ClassInitializerTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="45" column="64" selection-start="1788" selection-end="1788" vertical-scroll-proportion="0.0">
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
<element signature="e#2117#2130#0" expanded="true" />
|
||||
<element signature="e#3424#3437#0" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/initializer/InitializerVisitor.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="83" column="84" selection-start="3447" selection-end="3447" vertical-scroll-proportion="0.0">
|
||||
<folding>
|
||||
<element signature="e#3127#3140#0" 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="88" column="16" selection-start="2165" selection-end="2165" vertical-scroll-proportion="0.0">
|
||||
<state line="37" column="16" selection-start="812" selection-end="812" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/plusAndMinusAsAnExpression.kt">
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/inheritance/out/initializationOrder.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="11" column="11" selection-start="138" selection-end="138" vertical-scroll-proportion="0.0">
|
||||
<state line="10" column="36" selection-start="224" selection-end="224" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/out/plusAndMinusAsAnExpression.js">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslationContext.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="21" column="54" selection-start="416" selection-end="416" vertical-scroll-proportion="0.5211679">
|
||||
<state line="86" column="35" selection-start="3339" selection-end="3339" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/notOverload.kt">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ClassTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="8" column="37" selection-start="87" selection-end="87" vertical-scroll-proportion="0.18553889">
|
||||
<state line="35" column="22" selection-start="1318" selection-end="1318" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/PropertyAccessorTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="52" column="16" selection-start="1184" selection-end="1184" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/NamespaceTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="80" column="85" selection-start="3267" selection-end="3267" 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="37" column="72" selection-start="1514" selection-end="1514" 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="37" column="16" selection-start="872" selection-end="872" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/inheritance/cases/valuePassedToAncestorConstructor.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>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/initializer/AbstractInitializerTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="47" column="66" selection-start="1886" selection-end="1886" 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/BasicClassTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="43" column="72" selection-start="1133" selection-end="1133" vertical-scroll-proportion="0.5726375">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
|
||||
@@ -39,7 +39,7 @@ public final class BinaryOperationTranslator extends OperationTranslator {
|
||||
this.isVariableReassignment = isVariableReassignment(expression);
|
||||
this.operationReference = getOverloadedOperationReference(expression.getOperationReference());
|
||||
this.right = translateRightExpression();
|
||||
//TODO: decide whether it is harmful to possibly translate left expression more than once
|
||||
//TODO: decide whether it is harmful to possibly translateNamespace left expression more than once
|
||||
this.left = translateLeftExpression();
|
||||
}
|
||||
|
||||
|
||||
@@ -106,7 +106,7 @@ public final class ClassDeclarationTranslator extends AbstractTranslator {
|
||||
JsName localClassName = dummyFunctionScope.declareName(globalClassName.getIdent());
|
||||
localToGlobalClassName.put(localClassName, globalClassName);
|
||||
JsInvocation classDeclarationExpression =
|
||||
Translation.classTranslator(translationContext()).translateClass(declaration);
|
||||
Translation.translateClassDeclaration(declaration, translationContext());
|
||||
return AstUtil.newVar(localClassName, classDeclarationExpression);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,95 +0,0 @@
|
||||
package org.jetbrains.k2js.translate;
|
||||
|
||||
import com.google.dart.compiler.backend.js.ast.*;
|
||||
import com.google.dart.compiler.util.AstUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.psi.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Talanov Pavel
|
||||
*/
|
||||
public final class ClassInitializerVisitor extends AbstractInitializerVisitor {
|
||||
|
||||
@NotNull
|
||||
private final JetClass classDeclaration;
|
||||
|
||||
public ClassInitializerVisitor(@NotNull JetClass classDeclaration, @NotNull TranslationContext context) {
|
||||
super(context, new JsScope(context.getScopeForElement(classDeclaration),
|
||||
"initializer " + classDeclaration.getName()));
|
||||
this.classDeclaration = classDeclaration;
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public JsFunction generate() {
|
||||
JsFunction result = JsFunction.getAnonymousFunctionWithScope(initializerMethodScope);
|
||||
result.setParameters(translatePrimaryConstructorParameters(classDeclaration));
|
||||
result.setBody(generateInitializerMethodBody(classDeclaration, initializerMethodContext));
|
||||
return result;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsBlock generateInitializerMethodBody(@NotNull JetClass classDeclaration,
|
||||
@NotNull TranslationContext context) {
|
||||
|
||||
List<JsStatement> initializerStatements = generateCallToSuperMethod(classDeclaration, context);
|
||||
initializerStatements.addAll(classDeclaration.accept(this, context));
|
||||
return AstUtil.newBlock(initializerStatements);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private List<JsStatement> generateCallToSuperMethod(@NotNull JetClass classDeclaration,
|
||||
@NotNull TranslationContext context) {
|
||||
List<JsStatement> result = new ArrayList<JsStatement>();
|
||||
if (BindingUtils.hasAncestorClass(context.bindingContext(), classDeclaration)) {
|
||||
JsName superMethodName = initializerMethodScope.declareName(Namer.SUPER_METHOD_NAME);
|
||||
List<JsExpression> arguments = translateArguments(classDeclaration, context);
|
||||
result.add(AstUtil.convertToStatement
|
||||
(AstUtil.newInvocation(AstUtil.thisQualifiedReference(superMethodName), arguments)));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private List<JsExpression> translateArguments(@NotNull JetClass classDeclaration,
|
||||
@NotNull TranslationContext context) {
|
||||
JetDelegatorToSuperCall superCall = getSuperCall(classDeclaration);
|
||||
return translateArgumentList(superCall.getValueArguments(), context);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JetDelegatorToSuperCall getSuperCall(@NotNull JetClass classDeclaration) {
|
||||
JetDelegatorToSuperCall result = null;
|
||||
for (JetDelegationSpecifier specifier : classDeclaration.getDelegationSpecifiers()) {
|
||||
if (specifier instanceof JetDelegatorToSuperCall) {
|
||||
result = (JetDelegatorToSuperCall) specifier;
|
||||
}
|
||||
}
|
||||
assert result != null : "Class must call ancestor's constructor.";
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<JsStatement> visitClass(@NotNull JetClass expression, @NotNull TranslationContext context) {
|
||||
List<JsStatement> initializerStatements = new ArrayList<JsStatement>();
|
||||
for (JetDeclaration declaration : expression.getDeclarations()) {
|
||||
initializerStatements.addAll(declaration.accept(this, context));
|
||||
}
|
||||
return initializerStatements;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
List<JsParameter> translatePrimaryConstructorParameters(@NotNull JetClass expression) {
|
||||
List<JsParameter> result = new ArrayList<JsParameter>();
|
||||
List<JetParameter> parameters = expression.getPrimaryConstructorParameters();
|
||||
for (JetParameter parameter : parameters) {
|
||||
JsName parameterName = initializerMethodScope.declareName(parameter.getName());
|
||||
result.add(new JsParameter(parameterName));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -25,46 +25,48 @@ public final class ClassTranslator extends AbstractTranslator {
|
||||
private final DeclarationBodyVisitor declarationBodyVisitor = new DeclarationBodyVisitor();
|
||||
|
||||
@NotNull
|
||||
public static ClassTranslator newInstance(@NotNull TranslationContext context) {
|
||||
return new ClassTranslator(context);
|
||||
private final JetClass classDeclaration;
|
||||
|
||||
@NotNull
|
||||
static public JsInvocation translateClass(@NotNull JetClass classDeclaration, @NotNull TranslationContext context) {
|
||||
return (new ClassTranslator(classDeclaration, context)).translateClass();
|
||||
}
|
||||
|
||||
private ClassTranslator(TranslationContext context) {
|
||||
super(context);
|
||||
private ClassTranslator(@NotNull JetClass classDeclaration, @NotNull TranslationContext context) {
|
||||
super(context.newClass(classDeclaration));
|
||||
this.classDeclaration = classDeclaration;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public JsInvocation translateClass(@NotNull JetClass jetClassDeclaration) {
|
||||
JsInvocation jsClassDeclaration = classCreateMethodInvocation(jetClassDeclaration);
|
||||
addSuperclassReferences(jetClassDeclaration, jsClassDeclaration);
|
||||
addClassOwnDeclarations(jetClassDeclaration, jsClassDeclaration);
|
||||
private JsInvocation translateClass() {
|
||||
JsInvocation jsClassDeclaration = classCreateMethodInvocation();
|
||||
addSuperclassReferences(jsClassDeclaration);
|
||||
addClassOwnDeclarations(jsClassDeclaration);
|
||||
return jsClassDeclaration;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsInvocation classCreateMethodInvocation(@NotNull JetClass jetClassDeclaration) {
|
||||
if (jetClassDeclaration.isTrait()) {
|
||||
private JsInvocation classCreateMethodInvocation() {
|
||||
if (classDeclaration.isTrait()) {
|
||||
return AstUtil.newInvocation(Namer.traitCreationMethodReference());
|
||||
} else {
|
||||
return AstUtil.newInvocation(Namer.classCreationMethodReference());
|
||||
}
|
||||
}
|
||||
|
||||
private void addClassOwnDeclarations(@NotNull JetClass classDeclaration,
|
||||
@NotNull JsInvocation jsClassDeclaration) {
|
||||
JsObjectLiteral jsClassDescription = translateClassDeclarations(classDeclaration);
|
||||
private void addClassOwnDeclarations(@NotNull JsInvocation jsClassDeclaration) {
|
||||
JsObjectLiteral jsClassDescription = translateClassDeclarations();
|
||||
jsClassDeclaration.getArguments().add(jsClassDescription);
|
||||
}
|
||||
|
||||
private void addSuperclassReferences(@NotNull JetClass classDeclaration,
|
||||
@NotNull JsInvocation jsClassDeclaration) {
|
||||
for (JsNameRef superClassReference : getSuperclassNameReferences(classDeclaration)) {
|
||||
private void addSuperclassReferences(@NotNull JsInvocation jsClassDeclaration) {
|
||||
for (JsNameRef superClassReference : getSuperclassNameReferences()) {
|
||||
jsClassDeclaration.getArguments().add(superClassReference);
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private List<JsNameRef> getSuperclassNameReferences(@NotNull JetClass classDeclaration) {
|
||||
private List<JsNameRef> getSuperclassNameReferences() {
|
||||
List<JsNameRef> superclassReferences = new ArrayList<JsNameRef>();
|
||||
List<ClassDescriptor> superclassDescriptors =
|
||||
BindingUtils.getSuperclassDescriptors(translationContext().bindingContext(), classDeclaration);
|
||||
@@ -106,13 +108,13 @@ public final class ClassTranslator extends AbstractTranslator {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsObjectLiteral translateClassDeclarations(@NotNull JetClass classDeclaration) {
|
||||
private JsObjectLiteral translateClassDeclarations() {
|
||||
List<JsPropertyInitializer> propertyList = new ArrayList<JsPropertyInitializer>();
|
||||
if (!classDeclaration.isTrait()) {
|
||||
propertyList.add(InitializerGenerator.generateInitializeMethod(classDeclaration, translationContext()));
|
||||
propertyList.add(Translation.generateClassInitializerMethod(classDeclaration, translationContext()));
|
||||
}
|
||||
propertyList.addAll(declarationBodyVisitor.traverseClass(classDeclaration,
|
||||
translationContext().newClass(classDeclaration)));
|
||||
translationContext()));
|
||||
return new JsObjectLiteral(propertyList);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ public final class DeclarationBodyVisitor extends TranslatorVisitor<List<JsPrope
|
||||
@Override
|
||||
@NotNull
|
||||
public List<JsPropertyInitializer> visitClass(@NotNull JetClass expression, @NotNull TranslationContext context) {
|
||||
//TODO: we are interested only in class own declarations
|
||||
//TODO:
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
|
||||
@@ -103,7 +103,7 @@ public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
|
||||
@NotNull
|
||||
public JsNode visitCallExpression(JetCallExpression expression, TranslationContext context) {
|
||||
JsExpression callee = translateCallee(expression, context);
|
||||
List<JsExpression> arguments = translateArgumentList(expression.getValueArguments(), context);
|
||||
List<JsExpression> arguments = TranslationUtils.translateArgumentList(expression.getValueArguments(), context);
|
||||
if (isConstructorInvocation(expression, context)) {
|
||||
JsNew constructorCall = new JsNew(callee);
|
||||
constructorCall.setArguments(arguments);
|
||||
|
||||
@@ -1,56 +0,0 @@
|
||||
package org.jetbrains.k2js.translate;
|
||||
|
||||
import com.google.dart.compiler.backend.js.ast.JsFunction;
|
||||
import com.google.dart.compiler.backend.js.ast.JsPropertyInitializer;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.psi.JetClass;
|
||||
import org.jetbrains.jet.lang.psi.JetNamedDeclaration;
|
||||
import org.jetbrains.jet.lang.psi.JetNamespace;
|
||||
|
||||
|
||||
//TODO: thing about redesigning this class
|
||||
public class InitializerGenerator {
|
||||
|
||||
@NotNull
|
||||
private final TranslationContext context;
|
||||
@NotNull
|
||||
private final JetNamedDeclaration declaration;
|
||||
|
||||
static public JsPropertyInitializer generateInitializeMethod(@NotNull JetNamedDeclaration declaration,
|
||||
@NotNull TranslationContext context) {
|
||||
return (new InitializerGenerator(context, declaration)).generateInitializeMethod();
|
||||
}
|
||||
|
||||
private InitializerGenerator(@NotNull TranslationContext context, @NotNull JetNamedDeclaration declaration) {
|
||||
this.context = context;
|
||||
this.declaration = declaration;
|
||||
assert (declaration instanceof JetClass) || (declaration instanceof JetNamespace) :
|
||||
"Can create initializers for classes or namespaces only";
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public JsPropertyInitializer generateInitializeMethod() {
|
||||
JsPropertyInitializer initializer = new JsPropertyInitializer();
|
||||
initializer.setLabelExpr(context.program().getStringLiteral(Namer.INITIALIZE_METHOD_NAME));
|
||||
initializer.setValueExpr(generateInitializeFunction());
|
||||
return initializer;
|
||||
}
|
||||
|
||||
//TODO: track context change points, make them consistent, make sure that inside class declaration block
|
||||
// classes reference their ancestor by aliases
|
||||
@NotNull
|
||||
private JsFunction generateInitializeFunction() {
|
||||
AbstractInitializerVisitor visitor;
|
||||
if (declaration instanceof JetNamespace) {
|
||||
JetNamespace namespaceDeclaration = (JetNamespace) declaration;
|
||||
visitor = new NamespaceInitializerVisitor(namespaceDeclaration,
|
||||
context.newNamespace(namespaceDeclaration));
|
||||
} else {
|
||||
assert declaration instanceof JetClass;
|
||||
JetClass classDeclaration = (JetClass) declaration;
|
||||
visitor = new ClassInitializerVisitor(classDeclaration,
|
||||
context.newClass(classDeclaration));
|
||||
}
|
||||
return visitor.generate();
|
||||
}
|
||||
}
|
||||
@@ -21,13 +21,12 @@ public final class NamespaceTranslator extends AbstractTranslator {
|
||||
private final ClassDeclarationTranslator classDeclarationTranslator;
|
||||
|
||||
@NotNull
|
||||
public static JsStatement translate(@NotNull TranslationContext context,
|
||||
@NotNull JetNamespace namespace) {
|
||||
return (new NamespaceTranslator(context, namespace)).translateNamespace();
|
||||
public static JsStatement translateNamespace(@NotNull JetNamespace namespace, @NotNull TranslationContext context) {
|
||||
return (new NamespaceTranslator(namespace, context)).translateNamespace();
|
||||
}
|
||||
|
||||
private NamespaceTranslator(@NotNull TranslationContext context, @NotNull JetNamespace namespace) {
|
||||
super(context);
|
||||
private NamespaceTranslator(@NotNull JetNamespace namespace, @NotNull TranslationContext context) {
|
||||
super(context.newNamespace(namespace));
|
||||
this.namespace = namespace;
|
||||
this.namespaceName = context.getNameForElement(namespace);
|
||||
this.classDeclarationTranslator = new ClassDeclarationTranslator(context, namespace);
|
||||
@@ -78,9 +77,8 @@ public final class NamespaceTranslator extends AbstractTranslator {
|
||||
@NotNull
|
||||
private JsObjectLiteral translateNamespaceMemberDeclarations() {
|
||||
List<JsPropertyInitializer> propertyList = new ArrayList<JsPropertyInitializer>();
|
||||
propertyList.add(InitializerGenerator.generateInitializeMethod(namespace, translationContext()));
|
||||
propertyList.addAll(new DeclarationBodyVisitor().traverseNamespace(namespace,
|
||||
translationContext().newNamespace(namespace)));
|
||||
propertyList.add(Translation.generateNamespaceInitializerMethod(namespace, translationContext()));
|
||||
propertyList.addAll(new DeclarationBodyVisitor().traverseNamespace(namespace, translationContext()));
|
||||
return new JsObjectLiteral(propertyList);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,12 +3,11 @@ package org.jetbrains.k2js.translate;
|
||||
import com.google.dart.compiler.backend.js.ast.*;
|
||||
import com.google.dart.compiler.util.AstUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.psi.JetExpression;
|
||||
import org.jetbrains.jet.lang.psi.JetNamespace;
|
||||
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression;
|
||||
import org.jetbrains.jet.lang.psi.JetWhenExpression;
|
||||
import org.jetbrains.jet.lang.psi.*;
|
||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||
import org.jetbrains.k2js.declarations.Declarations;
|
||||
import org.jetbrains.k2js.translate.initializer.ClassInitializerTranslator;
|
||||
import org.jetbrains.k2js.translate.initializer.NamespaceInitializerTranslator;
|
||||
|
||||
/**
|
||||
* @author Talanov Pavel
|
||||
@@ -36,12 +35,13 @@ public final class Translation {
|
||||
@NotNull
|
||||
static public JsStatement translateNamespace(@NotNull JetNamespace namespace,
|
||||
@NotNull TranslationContext context) {
|
||||
return NamespaceTranslator.translate(context, namespace);
|
||||
return NamespaceTranslator.translateNamespace(namespace, context);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
static public ClassTranslator classTranslator(@NotNull TranslationContext context) {
|
||||
return ClassTranslator.newInstance(context);
|
||||
static public JsInvocation translateClassDeclaration(@NotNull JetClass classDeclaration,
|
||||
@NotNull TranslationContext context) {
|
||||
return ClassTranslator.translateClass(classDeclaration, context);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -74,6 +74,18 @@ public final class Translation {
|
||||
return WhenTranslator.translateWhenExpression(expression, context);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
static public JsPropertyInitializer generateClassInitializerMethod(@NotNull JetClass classDeclaration,
|
||||
@NotNull TranslationContext context) {
|
||||
return (new ClassInitializerTranslator(classDeclaration, context)).generateInitializeMethod();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
static public JsPropertyInitializer generateNamespaceInitializerMethod(@NotNull JetNamespace namespace,
|
||||
@NotNull TranslationContext context) {
|
||||
return (new NamespaceInitializerTranslator(namespace, context)).generateInitializeMethod();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
static public JsNameRef generateCorrectReference(@NotNull TranslationContext context,
|
||||
@NotNull JetSimpleNameExpression expression,
|
||||
|
||||
@@ -84,7 +84,7 @@ public final class TranslationContext {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
TranslationContext newClass(@NotNull JetClass declaration) {
|
||||
public TranslationContext newClass(@NotNull JetClass declaration) {
|
||||
return newClass(BindingUtils.getClassDescriptor(bindingContext, declaration));
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,12 @@ import com.google.dart.compiler.backend.js.ast.*;
|
||||
import com.google.dart.compiler.util.AstUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.psi.JetExpression;
|
||||
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression;
|
||||
import org.jetbrains.jet.lang.psi.ValueArgument;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Talanov Pavel
|
||||
@@ -38,4 +43,26 @@ public final class TranslationUtils {
|
||||
@NotNull String name) {
|
||||
return context.enclosingScope().findExistingName(name);
|
||||
}
|
||||
|
||||
|
||||
@NotNull
|
||||
static public List<JsExpression> translateArgumentList(@NotNull List<? extends ValueArgument> jetArguments,
|
||||
@NotNull TranslationContext context) {
|
||||
List<JsExpression> jsArguments = new ArrayList<JsExpression>();
|
||||
for (ValueArgument argument : jetArguments) {
|
||||
jsArguments.add(translateArgument(context, argument));
|
||||
}
|
||||
return jsArguments;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
static public JsExpression translateArgument(@NotNull TranslationContext context, @NotNull ValueArgument argument) {
|
||||
JetExpression jetExpression = argument.getArgumentExpression();
|
||||
if (jetExpression == null) {
|
||||
throw new AssertionError("Argument with no expression encountered!");
|
||||
}
|
||||
return Translation.translateAsExpression(jetExpression, context);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -6,10 +6,10 @@ 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.psi.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import org.jetbrains.jet.lang.psi.JetElement;
|
||||
import org.jetbrains.jet.lang.psi.JetExpression;
|
||||
import org.jetbrains.jet.lang.psi.JetProperty;
|
||||
import org.jetbrains.jet.lang.psi.JetVisitor;
|
||||
|
||||
/**
|
||||
* @author Talanov Pavel
|
||||
@@ -59,23 +59,4 @@ public class TranslatorVisitor<T> extends JetVisitor<T, TranslationContext> {
|
||||
}
|
||||
return jsInitExpression;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
protected List<JsExpression> translateArgumentList(@NotNull List<? extends ValueArgument> jetArguments,
|
||||
@NotNull TranslationContext context) {
|
||||
List<JsExpression> jsArguments = new ArrayList<JsExpression>();
|
||||
for (ValueArgument argument : jetArguments) {
|
||||
jsArguments.add(translateArgument(context, argument));
|
||||
}
|
||||
return jsArguments;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsExpression translateArgument(@NotNull TranslationContext context, @NotNull ValueArgument argument) {
|
||||
JetExpression jetExpression = argument.getArgumentExpression();
|
||||
if (jetExpression == null) {
|
||||
throw new AssertionError("Argument with no expression encountered!");
|
||||
}
|
||||
return Translation.translateAsExpression(jetExpression, context);
|
||||
}
|
||||
}
|
||||
|
||||
+47
@@ -0,0 +1,47 @@
|
||||
package org.jetbrains.k2js.translate.initializer;
|
||||
|
||||
import com.google.dart.compiler.backend.js.ast.JsFunction;
|
||||
import com.google.dart.compiler.backend.js.ast.JsPropertyInitializer;
|
||||
import com.google.dart.compiler.backend.js.ast.JsScope;
|
||||
import com.google.dart.compiler.backend.js.ast.JsStatement;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.psi.JetDeclaration;
|
||||
import org.jetbrains.k2js.translate.AbstractTranslator;
|
||||
import org.jetbrains.k2js.translate.Namer;
|
||||
import org.jetbrains.k2js.translate.TranslationContext;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Talanov Pavel
|
||||
*/
|
||||
public abstract class AbstractInitializerTranslator extends AbstractTranslator {
|
||||
|
||||
|
||||
@NotNull
|
||||
protected final InitializerVisitor visitor;
|
||||
@NotNull
|
||||
protected final JsScope initializerMethodScope;
|
||||
|
||||
protected AbstractInitializerTranslator(@NotNull JsScope initializerMethodScope, @NotNull TranslationContext context) {
|
||||
super(context.newEnclosingScope(initializerMethodScope));
|
||||
this.visitor = new InitializerVisitor();
|
||||
this.initializerMethodScope = initializerMethodScope;
|
||||
}
|
||||
|
||||
abstract protected JsFunction generateInitializerFunction();
|
||||
|
||||
|
||||
@NotNull
|
||||
public JsPropertyInitializer generateInitializeMethod() {
|
||||
JsPropertyInitializer initializer = new JsPropertyInitializer();
|
||||
initializer.setLabelExpr(translationContext().program().getStringLiteral(Namer.INITIALIZE_METHOD_NAME));
|
||||
initializer.setValueExpr(generateInitializerFunction());
|
||||
return initializer;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
protected List<JsStatement> translatePropertyAndAnonymousInitializers(@NotNull JetDeclaration declaration) {
|
||||
return visitor.traverse(declaration, translationContext());
|
||||
}
|
||||
}
|
||||
+95
@@ -0,0 +1,95 @@
|
||||
package org.jetbrains.k2js.translate.initializer;
|
||||
|
||||
import com.google.dart.compiler.backend.js.ast.*;
|
||||
import com.google.dart.compiler.util.AstUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.psi.JetClass;
|
||||
import org.jetbrains.jet.lang.psi.JetDelegationSpecifier;
|
||||
import org.jetbrains.jet.lang.psi.JetDelegatorToSuperCall;
|
||||
import org.jetbrains.jet.lang.psi.JetParameter;
|
||||
import org.jetbrains.k2js.translate.BindingUtils;
|
||||
import org.jetbrains.k2js.translate.Namer;
|
||||
import org.jetbrains.k2js.translate.TranslationContext;
|
||||
import org.jetbrains.k2js.translate.TranslationUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Talanov Pavel
|
||||
*/
|
||||
public final class ClassInitializerTranslator extends AbstractInitializerTranslator {
|
||||
|
||||
@NotNull
|
||||
private final JetClass classDeclaration;
|
||||
|
||||
public ClassInitializerTranslator(@NotNull JetClass classDeclaration, @NotNull TranslationContext context) {
|
||||
super(new JsScope(context.getScopeForElement(classDeclaration),
|
||||
"initializer " + classDeclaration.getName()), context);
|
||||
this.classDeclaration = classDeclaration;
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
protected JsFunction generateInitializerFunction() {
|
||||
JsFunction result = JsFunction.getAnonymousFunctionWithScope(initializerMethodScope);
|
||||
result.setParameters(translatePrimaryConstructorParameters());
|
||||
result.setBody(generateInitializerMethodBody());
|
||||
return result;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsBlock generateInitializerMethodBody() {
|
||||
|
||||
List<JsStatement> initializerStatements = generateCallToSuperMethod();
|
||||
// initializerStatements.addAll(initializersForParameterProperties());
|
||||
initializerStatements.addAll(translatePropertyAndAnonymousInitializers(classDeclaration));
|
||||
return AstUtil.newBlock(initializerStatements);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private List<JsStatement> initializersForParameterProperties() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private List<JsStatement> generateCallToSuperMethod() {
|
||||
List<JsStatement> result = new ArrayList<JsStatement>();
|
||||
if (BindingUtils.hasAncestorClass(translationContext().bindingContext(), classDeclaration)) {
|
||||
JsName superMethodName = initializerMethodScope.declareName(Namer.SUPER_METHOD_NAME);
|
||||
List<JsExpression> arguments = translateArguments();
|
||||
result.add(AstUtil.convertToStatement
|
||||
(AstUtil.newInvocation(AstUtil.thisQualifiedReference(superMethodName), arguments)));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private List<JsExpression> translateArguments() {
|
||||
JetDelegatorToSuperCall superCall = getSuperCall();
|
||||
return TranslationUtils.translateArgumentList(superCall.getValueArguments(), translationContext());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JetDelegatorToSuperCall getSuperCall() {
|
||||
JetDelegatorToSuperCall result = null;
|
||||
for (JetDelegationSpecifier specifier : classDeclaration.getDelegationSpecifiers()) {
|
||||
if (specifier instanceof JetDelegatorToSuperCall) {
|
||||
result = (JetDelegatorToSuperCall) specifier;
|
||||
}
|
||||
}
|
||||
assert result != null : "Class must call ancestor's constructor.";
|
||||
return result;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
List<JsParameter> translatePrimaryConstructorParameters() {
|
||||
List<JsParameter> result = new ArrayList<JsParameter>();
|
||||
List<JetParameter> parameters = classDeclaration.getPrimaryConstructorParameters();
|
||||
for (JetParameter parameter : parameters) {
|
||||
JsName parameterName = initializerMethodScope.declareName(parameter.getName());
|
||||
result.add(new JsParameter(parameterName));
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,91 @@
|
||||
package org.jetbrains.k2js.translate.initializer;
|
||||
|
||||
import com.google.dart.compiler.backend.js.ast.JsExpression;
|
||||
import com.google.dart.compiler.backend.js.ast.JsStatement;
|
||||
import com.google.dart.compiler.util.AstUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.psi.*;
|
||||
import org.jetbrains.k2js.translate.Translation;
|
||||
import org.jetbrains.k2js.translate.TranslationContext;
|
||||
import org.jetbrains.k2js.translate.TranslatorVisitor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Talanov Pavel
|
||||
*/
|
||||
public final class InitializerVisitor extends TranslatorVisitor<List<JsStatement>> {
|
||||
|
||||
|
||||
protected InitializerVisitor() {
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<JsStatement> visitProperty(@NotNull JetProperty expression, @NotNull TranslationContext context) {
|
||||
JetExpression initializer = expression.getInitializer();
|
||||
if (initializer == null) {
|
||||
return new ArrayList<JsStatement>();
|
||||
}
|
||||
return Arrays.asList(translateInitializer(expression, context, initializer));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsStatement translateInitializer(@NotNull JetProperty property, @NotNull TranslationContext context,
|
||||
@NotNull JetExpression initializer) {
|
||||
JsExpression initExpression = Translation.translateAsExpression(initializer, context);
|
||||
return assignmentToBackingField(property, initExpression, context);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
JsStatement assignmentToBackingField(@NotNull JetProperty property, @NotNull JsExpression initExpression,
|
||||
@NotNull TranslationContext context) {
|
||||
|
||||
return AstUtil.newAssignmentStatement(backingFieldReference(property, context), initExpression);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<JsStatement> visitAnonymousInitializer(@NotNull JetClassInitializer initializer,
|
||||
@NotNull TranslationContext context) {
|
||||
return Arrays.asList(Translation.translateAsStatement(initializer.getBody(), context));
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
// Not interested in other types of declarations, they do not contain initializers.
|
||||
public List<JsStatement> visitDeclaration(@NotNull JetDeclaration expression, @NotNull TranslationContext context) {
|
||||
return new ArrayList<JsStatement>();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public List<JsStatement> traverseClass(@NotNull JetClass expression, @NotNull TranslationContext context) {
|
||||
List<JsStatement> initializerStatements = new ArrayList<JsStatement>();
|
||||
for (JetDeclaration declaration : expression.getDeclarations()) {
|
||||
initializerStatements.addAll(declaration.accept(this, context));
|
||||
}
|
||||
return initializerStatements;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public List<JsStatement> traverseNamespace(@NotNull JetNamespace expression, @NotNull TranslationContext context) {
|
||||
List<JsStatement> initializerStatements = new ArrayList<JsStatement>();
|
||||
for (JetDeclaration declaration : expression.getDeclarations()) {
|
||||
initializerStatements.addAll(declaration.accept(this, context));
|
||||
}
|
||||
return initializerStatements;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public List<JsStatement> traverse(@NotNull JetDeclaration declaration, @NotNull TranslationContext context) {
|
||||
if (declaration instanceof JetNamespace) {
|
||||
return traverseNamespace((JetNamespace) declaration, context);
|
||||
}
|
||||
if (declaration instanceof JetClass) {
|
||||
return traverseClass((JetClass) declaration, context);
|
||||
}
|
||||
throw new AssertionError("Cannot traverse anything else.");
|
||||
}
|
||||
}
|
||||
+33
@@ -0,0 +1,33 @@
|
||||
package org.jetbrains.k2js.translate.initializer;
|
||||
|
||||
import com.google.dart.compiler.backend.js.ast.JsFunction;
|
||||
import com.google.dart.compiler.backend.js.ast.JsScope;
|
||||
import com.google.dart.compiler.util.AstUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.psi.JetNamespace;
|
||||
import org.jetbrains.k2js.translate.TranslationContext;
|
||||
|
||||
/**
|
||||
* @author Talanov Pavel
|
||||
*/
|
||||
public final class NamespaceInitializerTranslator extends AbstractInitializerTranslator {
|
||||
|
||||
@NotNull
|
||||
private final JetNamespace namespace;
|
||||
|
||||
public NamespaceInitializerTranslator(@NotNull JetNamespace namespace, @NotNull TranslationContext context) {
|
||||
super(new JsScope(context.getScopeForElement(namespace),
|
||||
"initializer " + namespace.getName()), context);
|
||||
this.namespace = namespace;
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
protected JsFunction generateInitializerFunction() {
|
||||
JsFunction result = JsFunction.getAnonymousFunctionWithScope(initializerMethodScope);
|
||||
result.setBody(AstUtil.newBlock(translatePropertyAndAnonymousInitializers(namespace)));
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -30,6 +30,11 @@ public class BasicClassTest extends TranslationTest {
|
||||
testFooBoxIsTrue("constructorWithParameter.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void constructorWithPropertiesAsParameters() throws Exception {
|
||||
testFooBoxIsTrue("constructorWithPropertiesAsParameters.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void incrementProperty() throws Exception {
|
||||
testFunctionOutput("incrementProperty.kt", "foo", "box", "OK");
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
namespace foo
|
||||
|
||||
class A(var b : Int, var a : String) {
|
||||
|
||||
}
|
||||
|
||||
fun box() : Boolean {
|
||||
val c = A(1, "1")
|
||||
return (c.b == 1 && c.a == "1")
|
||||
}
|
||||
Reference in New Issue
Block a user