Lots of refactoring and code improvements.
This commit is contained in:
Generated
+300
-234
@@ -8,11 +8,25 @@
|
|||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="f02ef53d-47a4-4f5e-a1aa-3df68aae9b20" name="Default" comment="">
|
<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/src/org/jetbrains/k2js/translate/initializer/AbstractInitializerTranslator.java" />
|
||||||
<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/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$/.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/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/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/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>
|
</list>
|
||||||
<ignored path="k2js.iws" />
|
<ignored path="k2js.iws" />
|
||||||
<ignored path=".idea/workspace.xml" />
|
<ignored path=".idea/workspace.xml" />
|
||||||
@@ -110,7 +124,7 @@
|
|||||||
<favorites_list name="k2js" />
|
<favorites_list name="k2js" />
|
||||||
</component>
|
</component>
|
||||||
<component name="FileEditorManager">
|
<component name="FileEditorManager">
|
||||||
<splitter split-orientation="horizontal" split-proportion="0.51374346">
|
<splitter split-orientation="horizontal" split-proportion="0.32198954">
|
||||||
<split-first>
|
<split-first>
|
||||||
<leaf>
|
<leaf>
|
||||||
<file leaf-file-name="UnaryOperationTranslator.java" pinned="false" current="false" current-in-tab="false">
|
<file leaf-file-name="UnaryOperationTranslator.java" pinned="false" current="false" current-in-tab="false">
|
||||||
@@ -131,10 +145,10 @@
|
|||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
</file>
|
</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">
|
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/notOverload.kt">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<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 />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
@@ -153,80 +167,17 @@
|
|||||||
</split-first>
|
</split-first>
|
||||||
<split-second>
|
<split-second>
|
||||||
<leaf>
|
<leaf>
|
||||||
<file leaf-file-name="compareTo.kt" pinned="false" current="false" current-in-tab="false">
|
<file leaf-file-name="ClassInheritanceTest.java" pinned="false" current="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/compareTo.kt">
|
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ClassInheritanceTest.java">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<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 />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
</file>
|
</file>
|
||||||
<file leaf-file-name="plusAndMinusAsAnExpression.kt" pinned="false" current="false" current-in-tab="false">
|
<file leaf-file-name="valuePassedToAncestorConstructor.kt" pinned="false" current="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/plusAndMinusAsAnExpression.kt">
|
<entry file="file://$PROJECT_DIR$/translator/testFiles/inheritance/cases/valuePassedToAncestorConstructor.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">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
|
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
|
||||||
<folding />
|
<folding />
|
||||||
@@ -234,10 +185,75 @@
|
|||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
</file>
|
</file>
|
||||||
<file leaf-file-name="plusAssignReassign.kt" pinned="false" current="false" current-in-tab="false">
|
<file leaf-file-name="AbstractInitializerTranslator.java" pinned="false" current="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/plusAssignReassign.kt">
|
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/initializer/AbstractInitializerTranslator.java">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<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 />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
@@ -264,22 +280,22 @@
|
|||||||
<component name="IdeDocumentHistory">
|
<component name="IdeDocumentHistory">
|
||||||
<option name="changedFiles">
|
<option name="changedFiles">
|
||||||
<list>
|
<list>
|
||||||
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/binaryPlusOverload.kt" />
|
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/AbstractInitializerTranslator.java" />
|
||||||
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/binaryDivOverload.kt" />
|
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/NamespaceInitializerTranslator.java" />
|
||||||
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/plusAssignNoReassign.kt" />
|
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ClassInitializerTranslator.java" />
|
||||||
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/out/plusAssignReassign.kt" />
|
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslationContext.java" />
|
||||||
<option value="$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContext.java" />
|
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/initializer/InitializerGenerator.java" />
|
||||||
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/plusAssignReassign.kt" />
|
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/initializer/NamespaceInitializerTranslator.java" />
|
||||||
<option value="$PROJECT_DIR$/js/src/com/google/dart/compiler/util/AstUtil.java" />
|
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslatorVisitor.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/TranslationUtils.java" />
|
||||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/UnaryOperationTranslator.java" />
|
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ClassDeclarationTranslator.java" />
|
||||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/BindingUtils.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/initializer/ClassInitializerTranslator.java" />
|
||||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/OperationTranslator.java" />
|
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/initializer/InitializerVisitor.java" />
|
||||||
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/notOverload.kt" />
|
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ClassTranslator.java" />
|
||||||
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/compareTo.kt" />
|
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/NamespaceTranslator.java" />
|
||||||
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/OperatorOverloadingTest.java" />
|
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/Translation.java" />
|
||||||
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/plusAndMinusAsAnExpression.kt" />
|
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/initializer/AbstractInitializerTranslator.java" />
|
||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
@@ -411,68 +427,6 @@
|
|||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||||
</PATH_ELEMENT>
|
</PATH_ELEMENT>
|
||||||
</PATH>
|
</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>
|
||||||
<PATH_ELEMENT>
|
<PATH_ELEMENT>
|
||||||
<option name="myItemId" value="k2js" />
|
<option name="myItemId" value="k2js" />
|
||||||
@@ -508,6 +462,10 @@
|
|||||||
<option name="myItemId" value="inheritance" />
|
<option name="myItemId" value="inheritance" />
|
||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||||
</PATH_ELEMENT>
|
</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>
|
<PATH>
|
||||||
<PATH_ELEMENT>
|
<PATH_ELEMENT>
|
||||||
@@ -523,7 +481,55 @@
|
|||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||||
</PATH_ELEMENT>
|
</PATH_ELEMENT>
|
||||||
<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" />
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||||
</PATH_ELEMENT>
|
</PATH_ELEMENT>
|
||||||
</PATH>
|
</PATH>
|
||||||
@@ -559,6 +565,54 @@
|
|||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||||
</PATH_ELEMENT>
|
</PATH_ELEMENT>
|
||||||
</PATH>
|
</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>
|
||||||
<PATH_ELEMENT>
|
<PATH_ELEMENT>
|
||||||
<option name="myItemId" value="k2js" />
|
<option name="myItemId" value="k2js" />
|
||||||
@@ -946,23 +1000,23 @@
|
|||||||
<layout>
|
<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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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="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" />
|
<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="INCLUDE_TEXT_INTO_SHELF" value="false" />
|
||||||
<option name="CREATE_PATCH_EXPAND_DETAILS_DEFAULT" value="true" />
|
<option name="CREATE_PATCH_EXPAND_DETAILS_DEFAULT" value="true" />
|
||||||
<option name="FORCE_NON_EMPTY_COMMENT" value="false" />
|
<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="MAKE_NEW_CHANGELIST_ACTIVE" value="true" />
|
||||||
<option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="true" />
|
<option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="true" />
|
||||||
<option name="CHECK_FILES_UP_TO_DATE_BEFORE_COMMIT" value="false" />
|
<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="UPDATE_GROUP_BY_CHANGELIST" value="false" />
|
||||||
<option name="SHOW_FILE_HISTORY_AS_TREE" value="false" />
|
<option name="SHOW_FILE_HISTORY_AS_TREE" value="false" />
|
||||||
<option name="FILE_HISTORY_SPLITTER_PROPORTION" value="0.6" />
|
<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 tests and support for binary with type RHS expressions." />
|
||||||
<MESSAGE value="Added support for multiple cases in one when entry." />
|
<MESSAGE value="Added support for multiple cases in one when entry." />
|
||||||
<MESSAGE value="Split expression tests into different categories." />
|
<MESSAGE value="Split expression tests into different categories." />
|
||||||
@@ -1042,6 +1095,7 @@
|
|||||||
<MESSAGE value="Added test for unary operation on int properties." />
|
<MESSAGE value="Added test for unary operation on int properties." />
|
||||||
<MESSAGE value="Refactoring BinaryOperationTranslator." />
|
<MESSAGE value="Refactoring BinaryOperationTranslator." />
|
||||||
<MESSAGE value="Binary operation overloading for most cases (except contains, compareTo)." />
|
<MESSAGE value="Binary operation overloading for most cases (except contains, compareTo)." />
|
||||||
|
<MESSAGE value="Added test for operator overloading." />
|
||||||
</component>
|
</component>
|
||||||
<component name="XDebuggerManager">
|
<component name="XDebuggerManager">
|
||||||
<breakpoint-manager />
|
<breakpoint-manager />
|
||||||
@@ -1051,110 +1105,122 @@
|
|||||||
<option name="FILTER_TARGETS" value="false" />
|
<option name="FILTER_TARGETS" value="false" />
|
||||||
</component>
|
</component>
|
||||||
<component name="editorHistoryManager">
|
<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">
|
<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 />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContext.java">
|
<entry file="file://$PROJECT_DIR$/translator/testFiles/class/out/classInstantiation.js">
|
||||||
<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">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
|
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</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">
|
<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 />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</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">
|
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/OperatorOverloadingTest.java">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<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 />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</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">
|
<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 />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</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">
|
<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 />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</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">
|
<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 />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ public final class BinaryOperationTranslator extends OperationTranslator {
|
|||||||
this.isVariableReassignment = isVariableReassignment(expression);
|
this.isVariableReassignment = isVariableReassignment(expression);
|
||||||
this.operationReference = getOverloadedOperationReference(expression.getOperationReference());
|
this.operationReference = getOverloadedOperationReference(expression.getOperationReference());
|
||||||
this.right = translateRightExpression();
|
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();
|
this.left = translateLeftExpression();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ public final class ClassDeclarationTranslator extends AbstractTranslator {
|
|||||||
JsName localClassName = dummyFunctionScope.declareName(globalClassName.getIdent());
|
JsName localClassName = dummyFunctionScope.declareName(globalClassName.getIdent());
|
||||||
localToGlobalClassName.put(localClassName, globalClassName);
|
localToGlobalClassName.put(localClassName, globalClassName);
|
||||||
JsInvocation classDeclarationExpression =
|
JsInvocation classDeclarationExpression =
|
||||||
Translation.classTranslator(translationContext()).translateClass(declaration);
|
Translation.translateClassDeclaration(declaration, translationContext());
|
||||||
return AstUtil.newVar(localClassName, classDeclarationExpression);
|
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();
|
private final DeclarationBodyVisitor declarationBodyVisitor = new DeclarationBodyVisitor();
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static ClassTranslator newInstance(@NotNull TranslationContext context) {
|
private final JetClass classDeclaration;
|
||||||
return new ClassTranslator(context);
|
|
||||||
|
@NotNull
|
||||||
|
static public JsInvocation translateClass(@NotNull JetClass classDeclaration, @NotNull TranslationContext context) {
|
||||||
|
return (new ClassTranslator(classDeclaration, context)).translateClass();
|
||||||
}
|
}
|
||||||
|
|
||||||
private ClassTranslator(TranslationContext context) {
|
private ClassTranslator(@NotNull JetClass classDeclaration, @NotNull TranslationContext context) {
|
||||||
super(context);
|
super(context.newClass(classDeclaration));
|
||||||
|
this.classDeclaration = classDeclaration;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public JsInvocation translateClass(@NotNull JetClass jetClassDeclaration) {
|
private JsInvocation translateClass() {
|
||||||
JsInvocation jsClassDeclaration = classCreateMethodInvocation(jetClassDeclaration);
|
JsInvocation jsClassDeclaration = classCreateMethodInvocation();
|
||||||
addSuperclassReferences(jetClassDeclaration, jsClassDeclaration);
|
addSuperclassReferences(jsClassDeclaration);
|
||||||
addClassOwnDeclarations(jetClassDeclaration, jsClassDeclaration);
|
addClassOwnDeclarations(jsClassDeclaration);
|
||||||
return jsClassDeclaration;
|
return jsClassDeclaration;
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private JsInvocation classCreateMethodInvocation(@NotNull JetClass jetClassDeclaration) {
|
private JsInvocation classCreateMethodInvocation() {
|
||||||
if (jetClassDeclaration.isTrait()) {
|
if (classDeclaration.isTrait()) {
|
||||||
return AstUtil.newInvocation(Namer.traitCreationMethodReference());
|
return AstUtil.newInvocation(Namer.traitCreationMethodReference());
|
||||||
} else {
|
} else {
|
||||||
return AstUtil.newInvocation(Namer.classCreationMethodReference());
|
return AstUtil.newInvocation(Namer.classCreationMethodReference());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addClassOwnDeclarations(@NotNull JetClass classDeclaration,
|
private void addClassOwnDeclarations(@NotNull JsInvocation jsClassDeclaration) {
|
||||||
@NotNull JsInvocation jsClassDeclaration) {
|
JsObjectLiteral jsClassDescription = translateClassDeclarations();
|
||||||
JsObjectLiteral jsClassDescription = translateClassDeclarations(classDeclaration);
|
|
||||||
jsClassDeclaration.getArguments().add(jsClassDescription);
|
jsClassDeclaration.getArguments().add(jsClassDescription);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addSuperclassReferences(@NotNull JetClass classDeclaration,
|
private void addSuperclassReferences(@NotNull JsInvocation jsClassDeclaration) {
|
||||||
@NotNull JsInvocation jsClassDeclaration) {
|
for (JsNameRef superClassReference : getSuperclassNameReferences()) {
|
||||||
for (JsNameRef superClassReference : getSuperclassNameReferences(classDeclaration)) {
|
|
||||||
jsClassDeclaration.getArguments().add(superClassReference);
|
jsClassDeclaration.getArguments().add(superClassReference);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private List<JsNameRef> getSuperclassNameReferences(@NotNull JetClass classDeclaration) {
|
private List<JsNameRef> getSuperclassNameReferences() {
|
||||||
List<JsNameRef> superclassReferences = new ArrayList<JsNameRef>();
|
List<JsNameRef> superclassReferences = new ArrayList<JsNameRef>();
|
||||||
List<ClassDescriptor> superclassDescriptors =
|
List<ClassDescriptor> superclassDescriptors =
|
||||||
BindingUtils.getSuperclassDescriptors(translationContext().bindingContext(), classDeclaration);
|
BindingUtils.getSuperclassDescriptors(translationContext().bindingContext(), classDeclaration);
|
||||||
@@ -106,13 +108,13 @@ public final class ClassTranslator extends AbstractTranslator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private JsObjectLiteral translateClassDeclarations(@NotNull JetClass classDeclaration) {
|
private JsObjectLiteral translateClassDeclarations() {
|
||||||
List<JsPropertyInitializer> propertyList = new ArrayList<JsPropertyInitializer>();
|
List<JsPropertyInitializer> propertyList = new ArrayList<JsPropertyInitializer>();
|
||||||
if (!classDeclaration.isTrait()) {
|
if (!classDeclaration.isTrait()) {
|
||||||
propertyList.add(InitializerGenerator.generateInitializeMethod(classDeclaration, translationContext()));
|
propertyList.add(Translation.generateClassInitializerMethod(classDeclaration, translationContext()));
|
||||||
}
|
}
|
||||||
propertyList.addAll(declarationBodyVisitor.traverseClass(classDeclaration,
|
propertyList.addAll(declarationBodyVisitor.traverseClass(classDeclaration,
|
||||||
translationContext().newClass(classDeclaration)));
|
translationContext()));
|
||||||
return new JsObjectLiteral(propertyList);
|
return new JsObjectLiteral(propertyList);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ public final class DeclarationBodyVisitor extends TranslatorVisitor<List<JsPrope
|
|||||||
@Override
|
@Override
|
||||||
@NotNull
|
@NotNull
|
||||||
public List<JsPropertyInitializer> visitClass(@NotNull JetClass expression, @NotNull TranslationContext context) {
|
public List<JsPropertyInitializer> visitClass(@NotNull JetClass expression, @NotNull TranslationContext context) {
|
||||||
//TODO: we are interested only in class own declarations
|
//TODO:
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
|
|||||||
@NotNull
|
@NotNull
|
||||||
public JsNode visitCallExpression(JetCallExpression expression, TranslationContext context) {
|
public JsNode visitCallExpression(JetCallExpression expression, TranslationContext context) {
|
||||||
JsExpression callee = translateCallee(expression, 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)) {
|
if (isConstructorInvocation(expression, context)) {
|
||||||
JsNew constructorCall = new JsNew(callee);
|
JsNew constructorCall = new JsNew(callee);
|
||||||
constructorCall.setArguments(arguments);
|
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;
|
private final ClassDeclarationTranslator classDeclarationTranslator;
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static JsStatement translate(@NotNull TranslationContext context,
|
public static JsStatement translateNamespace(@NotNull JetNamespace namespace, @NotNull TranslationContext context) {
|
||||||
@NotNull JetNamespace namespace) {
|
return (new NamespaceTranslator(namespace, context)).translateNamespace();
|
||||||
return (new NamespaceTranslator(context, namespace)).translateNamespace();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private NamespaceTranslator(@NotNull TranslationContext context, @NotNull JetNamespace namespace) {
|
private NamespaceTranslator(@NotNull JetNamespace namespace, @NotNull TranslationContext context) {
|
||||||
super(context);
|
super(context.newNamespace(namespace));
|
||||||
this.namespace = namespace;
|
this.namespace = namespace;
|
||||||
this.namespaceName = context.getNameForElement(namespace);
|
this.namespaceName = context.getNameForElement(namespace);
|
||||||
this.classDeclarationTranslator = new ClassDeclarationTranslator(context, namespace);
|
this.classDeclarationTranslator = new ClassDeclarationTranslator(context, namespace);
|
||||||
@@ -78,9 +77,8 @@ public final class NamespaceTranslator extends AbstractTranslator {
|
|||||||
@NotNull
|
@NotNull
|
||||||
private JsObjectLiteral translateNamespaceMemberDeclarations() {
|
private JsObjectLiteral translateNamespaceMemberDeclarations() {
|
||||||
List<JsPropertyInitializer> propertyList = new ArrayList<JsPropertyInitializer>();
|
List<JsPropertyInitializer> propertyList = new ArrayList<JsPropertyInitializer>();
|
||||||
propertyList.add(InitializerGenerator.generateInitializeMethod(namespace, translationContext()));
|
propertyList.add(Translation.generateNamespaceInitializerMethod(namespace, translationContext()));
|
||||||
propertyList.addAll(new DeclarationBodyVisitor().traverseNamespace(namespace,
|
propertyList.addAll(new DeclarationBodyVisitor().traverseNamespace(namespace, translationContext()));
|
||||||
translationContext().newNamespace(namespace)));
|
|
||||||
return new JsObjectLiteral(propertyList);
|
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.backend.js.ast.*;
|
||||||
import com.google.dart.compiler.util.AstUtil;
|
import com.google.dart.compiler.util.AstUtil;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.psi.JetExpression;
|
import org.jetbrains.jet.lang.psi.*;
|
||||||
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.resolve.BindingContext;
|
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||||
import org.jetbrains.k2js.declarations.Declarations;
|
import org.jetbrains.k2js.declarations.Declarations;
|
||||||
|
import org.jetbrains.k2js.translate.initializer.ClassInitializerTranslator;
|
||||||
|
import org.jetbrains.k2js.translate.initializer.NamespaceInitializerTranslator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Talanov Pavel
|
* @author Talanov Pavel
|
||||||
@@ -36,12 +35,13 @@ public final class Translation {
|
|||||||
@NotNull
|
@NotNull
|
||||||
static public JsStatement translateNamespace(@NotNull JetNamespace namespace,
|
static public JsStatement translateNamespace(@NotNull JetNamespace namespace,
|
||||||
@NotNull TranslationContext context) {
|
@NotNull TranslationContext context) {
|
||||||
return NamespaceTranslator.translate(context, namespace);
|
return NamespaceTranslator.translateNamespace(namespace, context);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
static public ClassTranslator classTranslator(@NotNull TranslationContext context) {
|
static public JsInvocation translateClassDeclaration(@NotNull JetClass classDeclaration,
|
||||||
return ClassTranslator.newInstance(context);
|
@NotNull TranslationContext context) {
|
||||||
|
return ClassTranslator.translateClass(classDeclaration, context);
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -74,6 +74,18 @@ public final class Translation {
|
|||||||
return WhenTranslator.translateWhenExpression(expression, context);
|
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
|
@NotNull
|
||||||
static public JsNameRef generateCorrectReference(@NotNull TranslationContext context,
|
static public JsNameRef generateCorrectReference(@NotNull TranslationContext context,
|
||||||
@NotNull JetSimpleNameExpression expression,
|
@NotNull JetSimpleNameExpression expression,
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ public final class TranslationContext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
TranslationContext newClass(@NotNull JetClass declaration) {
|
public TranslationContext newClass(@NotNull JetClass declaration) {
|
||||||
return newClass(BindingUtils.getClassDescriptor(bindingContext, 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 com.google.dart.compiler.util.AstUtil;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
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.JetSimpleNameExpression;
|
||||||
|
import org.jetbrains.jet.lang.psi.ValueArgument;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Talanov Pavel
|
* @author Talanov Pavel
|
||||||
@@ -38,4 +43,26 @@ public final class TranslationUtils {
|
|||||||
@NotNull String name) {
|
@NotNull String name) {
|
||||||
return context.enclosingScope().findExistingName(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 com.google.dart.compiler.util.AstUtil;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.lang.psi.*;
|
import org.jetbrains.jet.lang.psi.JetElement;
|
||||||
|
import org.jetbrains.jet.lang.psi.JetExpression;
|
||||||
import java.util.ArrayList;
|
import org.jetbrains.jet.lang.psi.JetProperty;
|
||||||
import java.util.List;
|
import org.jetbrains.jet.lang.psi.JetVisitor;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Talanov Pavel
|
* @author Talanov Pavel
|
||||||
@@ -59,23 +59,4 @@ public class TranslatorVisitor<T> extends JetVisitor<T, TranslationContext> {
|
|||||||
}
|
}
|
||||||
return jsInitExpression;
|
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");
|
testFooBoxIsTrue("constructorWithParameter.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void constructorWithPropertiesAsParameters() throws Exception {
|
||||||
|
testFooBoxIsTrue("constructorWithPropertiesAsParameters.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void incrementProperty() throws Exception {
|
public void incrementProperty() throws Exception {
|
||||||
testFunctionOutput("incrementProperty.kt", "foo", "box", "OK");
|
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