Added Translation class for better instance creation control over the code.

This commit is contained in:
Pavel Talanov
2011-11-12 22:56:47 +04:00
parent 997ddce4b5
commit 158fccbac5
17 changed files with 314 additions and 173 deletions
+180 -128
View File
@@ -6,13 +6,23 @@
</component>
<component name="ChangeListManager">
<list default="true" id="f02ef53d-47a4-4f5e-a1aa-3df68aae9b20" name="Default" comment="">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/class/cases/incrementProperty.kt" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/Translation.java" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/function/cases/functionWithTwoParametersCall.kt" />
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\src\org\jetbrains\k2js\translate\OperationTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/OperatorTable.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/js/src/com/google/dart/compiler/util/AstUtil.java" afterPath="$PROJECT_DIR$/js/src/com/google/dart/compiler/util/AstUtil.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ClassBodyVisitor.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ClassBodyVisitor.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/DeclarationTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/DeclarationTranslator.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/DeclarationVisitor.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/DeclarationVisitor.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionTranslator.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/FunctionTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/FunctionTranslator.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/GenerationState.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/GenerationState.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/InitializerVisitor.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/InitializerVisitor.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/PropertyAccessTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/PropertyAccessTranslator.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" />
<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/FunctionTest.java" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/FunctionTest.java" />
</list>
<ignored path="k2js.iws" />
<ignored path=".idea/workspace.xml" />
@@ -37,7 +47,7 @@
</component>
<component name="DebuggerManager">
<line_breakpoints>
<breakpoint url="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/util/AstUtil.java" line="28" class="com.google.dart.compiler.util.AstUtil" package="com.google.dart.compiler.util">
<breakpoint url="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/util/AstUtil.java" line="29" class="com.google.dart.compiler.util.AstUtil" package="com.google.dart.compiler.util">
<option name="ENABLED" value="true" />
<option name="LOG_ENABLED" value="false" />
<option name="LOG_EXPRESSION_ENABLED" value="false" />
@@ -93,15 +103,6 @@
<splitter split-orientation="horizontal" split-proportion="0.37207702">
<split-first>
<leaf>
<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="22" column="16" selection-start="462" selection-end="462" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="twoClassesWithProperties.kt" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/propertyAccess/cases/twoClassesWithProperties.kt">
<provider selected="true" editor-type-id="text-editor">
@@ -134,7 +135,7 @@
<file leaf-file-name="incrementProperty.js" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/class/out/incrementProperty.js">
<provider selected="true" editor-type-id="text-editor">
<state line="10" column="45" selection-start="224" selection-end="224" vertical-scroll-proportion="0.0">
<state line="10" column="45" selection-start="233" selection-end="233" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -149,10 +150,10 @@
</provider>
</entry>
</file>
<file leaf-file-name="AstUtil.java" pinned="false" current="false" current-in-tab="true">
<file leaf-file-name="AstUtil.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/util/AstUtil.java">
<provider selected="true" editor-type-id="text-editor">
<state line="261" column="22" selection-start="9087" selection-end="9087" vertical-scroll-proportion="0.74067795">
<state line="262" column="22" selection-start="9090" selection-end="9090" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -176,10 +177,10 @@
</provider>
</entry>
</file>
<file leaf-file-name="FunctionTest.java" pinned="false" current="false" current-in-tab="false">
<file leaf-file-name="FunctionTest.java" pinned="false" current="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/FunctionTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="29" column="16" selection-start="685" selection-end="685" vertical-scroll-proportion="0.0">
<state line="80" column="58" selection-start="1974" selection-end="1974" vertical-scroll-proportion="1.1868852">
<folding />
</state>
</provider>
@@ -189,92 +190,96 @@
</split-first>
<split-second>
<leaf>
<file leaf-file-name="K2JSTranslator.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/K2JSTranslator.java">
<file leaf-file-name="GenerationState.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/GenerationState.java">
<provider selected="true" editor-type-id="text-editor">
<state line="95" column="61" selection-start="3724" selection-end="3724" vertical-scroll-proportion="0.0">
<state line="34" column="78" selection-start="1150" selection-end="1150" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ExpressionVisitor.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java">
<file leaf-file-name="Namer.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/Namer.java">
<provider selected="true" editor-type-id="text-editor">
<state line="103" column="49" selection-start="4452" selection-end="4452" vertical-scroll-proportion="-18.576923">
<state line="12" column="19" selection-start="262" selection-end="262" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="FunctionTranslator.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/FunctionTranslator.java">
<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="42" column="8" selection-start="1801" selection-end="1801" vertical-scroll-proportion="0.0">
<state line="39" column="69" selection-start="1420" selection-end="1420" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="JetSimpleNameExpression.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetSimpleNameExpression.java">
<file leaf-file-name="OperatorTable.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/OperatorTable.java">
<provider selected="true" editor-type-id="text-editor">
<state line="63" column="0" selection-start="2183" selection-end="2183" vertical-scroll-proportion="0.0">
<state line="13" column="32" selection-start="361" selection-end="361" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="PropertyAccessTranslator.java" pinned="false" current="true" current-in-tab="true">
<file leaf-file-name="PropertyAccessTranslator.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/PropertyAccessTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="96" column="74" selection-start="4133" selection-end="4133" vertical-scroll-proportion="0.5730337">
<state line="56" column="103" selection-start="2377" selection-end="2377" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ReflectiveCallable.class" pinned="false" current="false" current-in-tab="false">
<entry file="jar://$PROJECT_DIR$/translator/lib/junit-4.10.jar!/org/junit/internal/runners/model/ReflectiveCallable.class">
<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="11" column="40" selection-start="397" selection-end="397" vertical-scroll-proportion="-6.8">
<state line="17" column="19" selection-start="647" selection-end="647" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ParentRunner.class" pinned="false" current="false" current-in-tab="false">
<entry file="jar://$PROJECT_DIR$/translator/lib/junit-4.10.jar!/org/junit/runners/ParentRunner.class">
<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="43" column="25" selection-start="2461" selection-end="2461" vertical-scroll-proportion="-8.52">
<state line="35" column="20" selection-start="1156" selection-end="1156" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="TranslatorVisitor.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslatorVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="43" column="59" selection-start="1667" selection-end="1667" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="JUnitCore.class" pinned="false" current="false" current-in-tab="false">
<entry file="jar://$PROJECT_DIR$/translator/lib/junit-4.10.jar!/org/junit/runner/JUnitCore.class">
<file leaf-file-name="K2JSTranslator.java" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/K2JSTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="30" column="35" selection-start="1439" selection-end="1439" vertical-scroll-proportion="-18.52">
<state line="39" column="13" selection-start="1468" selection-end="1468" vertical-scroll-proportion="0.21587302">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="BlockJUnit4ClassRunner.class" pinned="false" current="false" current-in-tab="false">
<entry file="jar://$PROJECT_DIR$/translator/lib/junit-4.10.jar!/org/junit/runners/BlockJUnit4ClassRunner.class">
<file leaf-file-name="InitializerVisitor.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/InitializerVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="-0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ClassInheritanceTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ClassInheritanceTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="17" column="16" selection-start="323" selection-end="323" vertical-scroll-proportion="0.0">
<folding />
<state line="75" column="91" selection-start="2938" selection-end="2938" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
@@ -300,22 +305,22 @@
<component name="IdeDocumentHistory">
<option name="changedFiles">
<list>
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ClassTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/BindingUtils.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslatorVisitor.java" />
<option value="$PROJECT_DIR$/translator/testFiles/function/cases/functionWithTwoParametersCall.kt" />
<option value="$PROJECT_DIR$/translator/testFiles/inheritance/cases/creationSequence.kt" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ClassTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/DeclarationTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ClassBodyVisitor.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/Translation.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/DeclarationVisitor.java" />
<option value="$PROJECT_DIR$/translator/testFiles/propertyAccess/cases/namespaceCustomAccessors.kt" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/K2JSTranslator.java" />
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/PropertyAccessorTest.java" />
<option value="$PROJECT_DIR$/translator/testFiles/propertyAccess/cases/twoClassesWithProperties.kt" />
<option value="$PROJECT_DIR$/translator/testFiles/class/cases/Slot.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/FunctionTranslator.java" />
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/BasicClassTest.java" />
<option value="$PROJECT_DIR$/translator/testFiles/class/cases/incrementProperty.kt" />
<option value="$PROJECT_DIR$/js/src/com/google/dart/compiler/util/AstUtil.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/GenerationState.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/NamespaceTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/OperatorTable.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/PropertyAccessTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/InitializerVisitor.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslatorVisitor.java" />
</list>
</option>
</component>
@@ -494,6 +499,50 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="k2js" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="translator" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="testFiles" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="function" />
<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="function" />
<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" />
@@ -909,7 +958,7 @@
</component>
<component name="ToolWindowManager">
<frame x="-8" y="-8" width="1936" height="1176" extended-state="6" />
<editor active="true" />
<editor active="false" />
<layout>
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32907662" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
@@ -925,7 +974,7 @@
<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.2224599" sideWeight="0.66283524" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Dependency Viewer" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="11" 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.33716476" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.33716476" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="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" />
@@ -963,7 +1012,7 @@
<option name="CHECK_COMMIT_MESSAGE_SPELLING" value="true" />
<option name="DEFAULT_PATCH_EXTENSION" value="patch" />
<option name="FORCE_NON_EMPTY_COMMENT" value="false" />
<option name="LAST_COMMIT_MESSAGE" value="Added syntactic checks to main." />
<option name="LAST_COMMIT_MESSAGE" value="Added support for unqualified property reference inside method body." />
<option name="MAKE_NEW_CHANGELIST_ACTIVE" value="true" />
<option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="true" />
<option name="CHECK_FILES_UP_TO_DATE_BEFORE_COMMIT" value="false" />
@@ -990,6 +1039,7 @@
<MESSAGE value="Added default getter/setter support and initializer support." />
<MESSAGE value="Added class inheritance support and reorganised test classes.&#10;Minor impovements include:&#10;1. Support for functions with no body&#10;2. Not equals operator&#10;3. Refactorings." />
<MESSAGE value="Added syntactic checks to main." />
<MESSAGE value="Added support for unqualified property reference inside method body." />
</component>
<component name="XDebuggerManager">
<breakpoint-manager />
@@ -999,116 +1049,118 @@
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="editorHistoryManager">
<entry file="jar://$PROJECT_DIR$/translator/lib/junit-4.10.jar!/org/junit/runners/ParentRunner.class">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ClassBodyVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="43" column="25" selection-start="2461" selection-end="2461" vertical-scroll-proportion="-8.52">
<folding />
</state>
</provider>
</entry>
<entry file="jar://$PROJECT_DIR$/translator/lib/junit-4.10.jar!/org/junit/runners/BlockJUnit4ClassRunner.class">
<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="jar://$PROJECT_DIR$/translator/lib/junit-4.10.jar!/org/junit/internal/runners/model/ReflectiveCallable.class">
<provider selected="true" editor-type-id="text-editor">
<state line="11" column="40" selection-start="397" selection-end="397" vertical-scroll-proportion="-6.8">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ClassTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="14" column="2" selection-start="368" selection-end="368" vertical-scroll-proportion="0.0">
<state line="30" column="52" selection-start="1026" selection-end="1026" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/DeclarationTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="9" column="19" selection-start="244" selection-end="244" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/FunctionTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="42" column="8" selection-start="1801" selection-end="1801" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/backend/js/ast/JsIf.java">
<provider selected="true" editor-type-id="text-editor">
<state line="9" column="19" selection-start="335" selection-end="335" vertical-scroll-proportion="0.0">
<state line="11" column="4" selection-start="300" selection-end="300" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/DeclarationVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="20" column="108" selection-start="774" selection-end="774" vertical-scroll-proportion="0.0">
<state line="15" column="24" selection-start="562" selection-end="562" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="9" column="19" selection-start="238" selection-end="238" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="103" column="49" selection-start="4452" selection-end="4452" vertical-scroll-proportion="-18.576923">
<state line="318" column="94" selection-start="14400" selection-end="14400" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/propertyAccess/cases/namespaceCustomAccessors.kt">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/FunctionTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="3" column="41" selection-start="34" selection-end="34" vertical-scroll-proportion="0.0">
<state line="65" column="0" selection-start="2768" selection-end="2768" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/class/out/classInstantiation.js">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/GenerationState.java">
<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="34" column="78" selection-start="1150" selection-end="1150" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/class/out/incrementProperty.js">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/Namer.java">
<provider selected="true" editor-type-id="text-editor">
<state line="10" column="45" selection-start="224" selection-end="224" vertical-scroll-proportion="0.0">
<state line="12" column="19" selection-start="262" selection-end="262" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/class/cases/incrementProperty.kt">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/NamespaceTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="13" selection-start="13" selection-end="13" vertical-scroll-proportion="0.0">
<state line="39" column="69" selection-start="1420" selection-end="1420" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/BasicClassTest.java">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/OperatorTable.java">
<provider selected="true" editor-type-id="text-editor">
<state line="43" column="16" selection-start="1085" selection-end="1085" vertical-scroll-proportion="-15.64">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/util/AstUtil.java">
<provider selected="true" editor-type-id="text-editor">
<state line="261" column="22" selection-start="9087" selection-end="9087" vertical-scroll-proportion="0.74067795">
<state line="13" column="32" selection-start="361" selection-end="361" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/PropertyAccessTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="96" column="74" selection-start="4133" selection-end="4133" vertical-scroll-proportion="0.5730337">
<state line="56" column="103" selection-start="2377" selection-end="2377" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslationContext.java">
<provider selected="true" editor-type-id="text-editor">
<state line="17" column="19" selection-start="647" selection-end="647" 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="35" column="20" selection-start="1156" selection-end="1156" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/InitializerVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="75" column="91" selection-start="2938" selection-end="2938" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslatorVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="43" column="59" selection-start="1667" selection-end="1667" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/K2JSTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="39" column="13" selection-start="1468" selection-end="1468" vertical-scroll-proportion="0.21587302">
<folding />
</state>
</provider>
@@ -31,7 +31,7 @@ public final class ClassBodyVisitor extends TranslatorVisitor<List<JsPropertyIni
// method declaration
public List<JsPropertyInitializer> visitNamedFunction(@NotNull JetNamedFunction expression, @NotNull TranslationContext context) {
List<JsPropertyInitializer> properties = new ArrayList<JsPropertyInitializer>();
properties.add((new FunctionTranslator(context)).translateAsMethod(expression));
properties.add(Translation.functionTranslator(context).translateAsMethod(expression));
return properties;
}
@@ -138,11 +138,10 @@ public final class ClassBodyVisitor extends TranslatorVisitor<List<JsPropertyIni
private JsFunction translateAccessorBody(@NotNull JetPropertyAccessor expression,
@NotNull TranslationContext context) {
JsFunction methodBody = JsFunction.getAnonymousFunctionWithScope(context.getScopeForElement(expression));
ExpressionTranslator expressionTranslator =
new ExpressionTranslator(context.newPropertyAccess(expression));
JetExpression bodyExpression = expression.getBodyExpression();
assert bodyExpression != null : "Custom accessor should have a body.";
JsBlock methodBodyBlock = AstUtil.convertToBlock(expressionTranslator.translate(bodyExpression));
JsBlock methodBodyBlock = AstUtil.convertToBlock(
Translation.translateExpression(bodyExpression, context.newPropertyAccess(expression)));
methodBody.setBody(methodBodyBlock);
return methodBody;
}
@@ -19,7 +19,12 @@ public final class ClassTranslator extends AbstractTranslator {
@NotNull
private final ClassBodyVisitor classBodyVisitor = new ClassBodyVisitor();
public ClassTranslator(TranslationContext context) {
@NotNull
public static ClassTranslator newInstance(@NotNull TranslationContext context) {
return new ClassTranslator(context);
}
private ClassTranslator(TranslationContext context) {
super(context);
}
@@ -11,7 +11,12 @@ public final class DeclarationTranslator extends AbstractTranslator {
private DeclarationVisitor visitor = new DeclarationVisitor();
public DeclarationTranslator(TranslationContext context) {
@NotNull
public static DeclarationTranslator newInstance(@NotNull TranslationContext context) {
return new DeclarationTranslator(context);
}
private DeclarationTranslator(TranslationContext context) {
super(context);
}
@@ -13,6 +13,7 @@ import org.jetbrains.jet.lang.psi.JetProperty;
/**
* @author Talanov Pavel
*/
//TODO: rework the class
public class DeclarationVisitor extends TranslatorVisitor<JsStatement> {
@NotNull
@@ -21,7 +22,7 @@ public class DeclarationVisitor extends TranslatorVisitor<JsStatement> {
public JsStatement visitProperty(@NotNull JetProperty expression, @NotNull TranslationContext context) {
JsName propertyName = context.declareLocalName(getPropertyName(expression));
JsNameRef jsPropertyNameReference = context.getNamespaceQualifiedReference(propertyName);
JsExpression jsInitExpression = translateInitializer(expression, context);
JsExpression jsInitExpression = translateInitializerForProperty(expression, context);
JsExpression result;
if (jsInitExpression != null) {
result = AstUtil.newAssignment(jsPropertyNameReference, jsInitExpression);
@@ -34,15 +35,13 @@ public class DeclarationVisitor extends TranslatorVisitor<JsStatement> {
@NotNull
@Override
public JsStatement visitClass(@NotNull JetClass expression, @NotNull TranslationContext context) {
ClassTranslator translator = new ClassTranslator(context);
return translator.translateClass(expression);
return Translation.classTranslator(context).translateClass(expression);
}
@NotNull
@Override
public JsStatement visitNamedFunction(@NotNull JetNamedFunction expression, @NotNull TranslationContext context) {
FunctionTranslator functionTranslator = new FunctionTranslator(context);
return AstUtil.convertToStatement(functionTranslator.translateAsFunction(expression));
return AstUtil.convertToStatement(Translation.functionTranslator(context).translateAsFunction(expression));
}
}
@@ -11,7 +11,12 @@ public final class ExpressionTranslator extends AbstractTranslator {
final private ExpressionVisitor visitor = new ExpressionVisitor();
public ExpressionTranslator(@NotNull TranslationContext context) {
@NotNull
public static ExpressionTranslator newInstance(@NotNull TranslationContext context) {
return new ExpressionTranslator(context);
}
private ExpressionTranslator(@NotNull TranslationContext context) {
super(context);
}
@@ -93,12 +93,11 @@ public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
public JsInvocation translateAsSetterCall(@NotNull JetBinaryExpression expression,
@NotNull TranslationContext context) {
JetToken jetOperationToken = (JetToken) expression.getOperationToken();
if (!OperationTranslator.isAssignment(jetOperationToken)) {
if (!OperatorTable.isAssignment(jetOperationToken)) {
return null;
}
PropertyAccessTranslator translator = new PropertyAccessTranslator(context);
JetExpression leftExpression = expression.getLeft();
JsInvocation setterCall = translator.resolveAsPropertySet(leftExpression);
JsInvocation setterCall = Translation.propertyAccessTranslator(context).resolveAsPropertySet(leftExpression);
if (setterCall == null) {
return null;
}
@@ -116,7 +115,7 @@ public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
assert rightExpression != null : "Binary expression should have a right expression";
JsExpression right = AstUtil.convertToExpression(rightExpression.accept(this, context));
JetToken jetOperationToken = (JetToken) expression.getOperationToken();
return new JsBinaryOperation(OperationTranslator.getBinaryOperator(jetOperationToken), left, right);
return new JsBinaryOperation(OperatorTable.getBinaryOperator(jetOperationToken), left, right);
}
//TODO support other cases
@@ -140,8 +139,7 @@ public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
return nameRef;
}
PropertyAccessTranslator propertyAccessTranslator = new PropertyAccessTranslator(context);
JsInvocation getterCall = propertyAccessTranslator.resolveAsPropertyGet(expression);
JsInvocation getterCall = Translation.propertyAccessTranslator(context).resolveAsPropertyGet(expression);
if (getterCall != null) {
return getterCall;
}
@@ -159,7 +157,7 @@ public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
// assume it is a local variable declaration
public JsNode visitProperty(@NotNull JetProperty expression, @NotNull TranslationContext context) {
JsName jsPropertyName = context.declareLocalName(getPropertyName(expression));
JsExpression jsInitExpression = translateInitializer(expression, context);
JsExpression jsInitExpression = translateInitializerForProperty(expression, context);
return AstUtil.newVar(jsPropertyName, jsInitExpression);
}
@@ -318,10 +316,7 @@ public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
@Nullable
private JsInvocation translateAsGetterCall(@NotNull JetDotQualifiedExpression expression,
@NotNull TranslationContext context) {
JsInvocation result;
PropertyAccessTranslator translator = new PropertyAccessTranslator(context);
result = translator.resolveAsPropertyGet(expression);
return result;
return Translation.propertyAccessTranslator(context).resolveAsPropertyGet(expression);
}
@NotNull
@@ -354,5 +349,15 @@ public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
return selector;
}
//TODO: implement unary operations
// @Override
// @NotNull
// public JsNode visitPrefixExpression(@NotNull JetUnaryExpression expression,
// @NotNull TranslationContext context) {
// JsExpression baseExpression = AstUtil.convertToExpression(expression.accept(this, context));
// expression
//
// }
}
@@ -3,7 +3,6 @@ package org.jetbrains.k2js.translate;
import com.google.dart.compiler.backend.js.ast.*;
import com.google.dart.compiler.util.AstUtil;
import com.sun.istack.internal.NotNull;
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
import org.jetbrains.jet.lang.psi.JetExpression;
import org.jetbrains.jet.lang.psi.JetNamedFunction;
import org.jetbrains.jet.lang.psi.JetParameter;
@@ -16,7 +15,12 @@ import java.util.List;
*/
public final class FunctionTranslator extends AbstractTranslator {
public FunctionTranslator(@NotNull TranslationContext context) {
@NotNull
public static FunctionTranslator newInstance(@NotNull TranslationContext context) {
return new FunctionTranslator(context);
}
private FunctionTranslator(@NotNull TranslationContext context) {
super(context);
}
@@ -51,20 +55,14 @@ public final class FunctionTranslator extends AbstractTranslator {
JetExpression jetBodyExpression = jetFunction.getBodyExpression();
//TODO support them ffs
assert jetBodyExpression != null : "Function without body not supported at the moment";
JsNode body = (new ExpressionTranslator(functionContext(jetFunction))).translate(jetBodyExpression);
JsNode body = Translation.expressionTranslator
(translationContext().newFunction(jetFunction)).translate(jetBodyExpression);
if (jetFunction.hasBlockBody()) {
return AstUtil.convertToBlock(body);
}
return AstUtil.convertToBlock(new JsReturn(AstUtil.convertToExpression((body))));
}
@NotNull
private TranslationContext functionContext(@NotNull JetNamedFunction jetFunction) {
FunctionDescriptor descriptor =
BindingUtils.getFunctionDescriptor(translationContext().bindingContext(), jetFunction);
return translationContext().newFunction(descriptor);
}
@NotNull
private List<JsParameter> translateParameters(@NotNull List<JetParameter> jetParameters,
@NotNull JsScope functionScope) {
@@ -25,7 +25,7 @@ public final class GenerationState {
NamespaceDescriptor descriptor = BindingUtils.getNamespaceDescriptor(bindingContext, namespace);
DeclarationExtractor extractor = new DeclarationExtractor();
extractor.extractDeclarations(descriptor, result.getRootScope());
(new NamespaceTranslator(TranslationContext.rootContext(result, bindingContext, extractor)))
Translation.namespaceTranslator(TranslationContext.rootContext(result, bindingContext, extractor))
.generateAst(namespace);
return result;
}
@@ -77,8 +77,8 @@ public class InitializerVisitor extends TranslatorVisitor<List<JsStatement>> {
@NotNull
private JsStatement translateInitializer(@NotNull JetProperty property, @NotNull TranslationContext context,
@NotNull JetExpression initializer) {
ExpressionTranslator translator = new ExpressionTranslator(context);
JsExpression initExpression = AstUtil.convertToExpression(translator.translate(initializer));
JsExpression initExpression = AstUtil.convertToExpression(Translation.expressionTranslator(context)
.translate(initializer));
return assignmentToBackingField(property, initExpression, context);
}
@@ -14,7 +14,12 @@ import java.util.List;
*/
public final class NamespaceTranslator extends AbstractTranslator {
public NamespaceTranslator(@NotNull TranslationContext context) {
@NotNull
public static NamespaceTranslator newInstance(@NotNull TranslationContext context) {
return new NamespaceTranslator(context);
}
private NamespaceTranslator(@NotNull TranslationContext context) {
super(context);
}
@@ -40,7 +45,7 @@ public final class NamespaceTranslator extends AbstractTranslator {
@NotNull
private JsBlock translateDeclarations(@NotNull JetNamespace namespace, @NotNull TranslationContext newContext) {
DeclarationTranslator declarationTranslator = new DeclarationTranslator(newContext);
DeclarationTranslator declarationTranslator = Translation.declarationTranslator(newContext);
JsBlock namespaceDeclarations = new JsBlock();
for (JetDeclaration declaration : namespace.getDeclarations()) {
namespaceDeclarations.addStatement(declarationTranslator.translateDeclaration(declaration));
@@ -11,7 +11,7 @@ import java.util.Map;
/**
* @author Talanov Pavel
*/
public final class OperationTranslator {
public final class OperatorTable {
private static Map<JetToken, JsOperator> map = new HashMap<JetToken, JsOperator>();
@@ -23,7 +23,12 @@ import org.jetbrains.jet.lang.resolve.calls.ResolvedCall;
//TODO ask for code review. Class has messy code.
public final class PropertyAccessTranslator extends AbstractTranslator {
public PropertyAccessTranslator(@NotNull TranslationContext context) {
@NotNull
public static PropertyAccessTranslator newInstance(@NotNull TranslationContext context) {
return new PropertyAccessTranslator(context);
}
private PropertyAccessTranslator(@NotNull TranslationContext context) {
super(context);
}
@@ -50,8 +55,8 @@ public final class PropertyAccessTranslator extends AbstractTranslator {
@NotNull
private JsInvocation translateReceiverAndReturnAccessorInvocation
(@NotNull JetDotQualifiedExpression dotQualifiedExpression, @NotNull JsName accessorName) {
ExpressionTranslator translator = new ExpressionTranslator(translationContext());
JsNode node = translator.translate(dotQualifiedExpression.getReceiverExpression());
JsNode node = Translation.expressionTranslator(translationContext())
.translate(dotQualifiedExpression.getReceiverExpression());
JsNameRef result = accessorName.makeRef();
result.setQualifier(AstUtil.convertToExpression(node));
return AstUtil.newInvocation(result);
@@ -0,0 +1,48 @@
package org.jetbrains.k2js.translate;
import com.google.dart.compiler.backend.js.ast.JsNode;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.psi.JetExpression;
/**
* @author Talanov Pavel
* <p/>
* This class is a factory for obtaining instances of translators.
*/
public final class Translation {
@NotNull
static public ExpressionTranslator expressionTranslator(@NotNull TranslationContext context) {
return ExpressionTranslator.newInstance(context);
}
@NotNull
static public FunctionTranslator functionTranslator(@NotNull TranslationContext context) {
return FunctionTranslator.newInstance(context);
}
@NotNull
static public PropertyAccessTranslator propertyAccessTranslator(@NotNull TranslationContext context) {
return PropertyAccessTranslator.newInstance(context);
}
@NotNull
static public NamespaceTranslator namespaceTranslator(@NotNull TranslationContext context) {
return NamespaceTranslator.newInstance(context);
}
@NotNull
static public ClassTranslator classTranslator(@NotNull TranslationContext context) {
return ClassTranslator.newInstance(context);
}
@NotNull
static public DeclarationTranslator declarationTranslator(@NotNull TranslationContext context) {
return DeclarationTranslator.newInstance(context);
}
@NotNull
static public JsNode translateExpression(@NotNull JetExpression expression, @NotNull TranslationContext context) {
return expressionTranslator(context).translate(expression);
}
}
@@ -40,12 +40,13 @@ public class TranslatorVisitor<T> extends JetVisitor<T, TranslationContext> {
@Nullable
protected JsExpression translateInitializer(@NotNull JetProperty declaration, @NotNull TranslationContext context) {
protected JsExpression translateInitializerForProperty(@NotNull JetProperty declaration,
@NotNull TranslationContext context) {
JsExpression jsInitExpression = null;
JetExpression initializer = declaration.getInitializer();
if (initializer != null) {
jsInitExpression = AstUtil.convertToExpression(
(new ExpressionTranslator(context)).translate(initializer));
jsInitExpression = AstUtil.convertToExpression(Translation.expressionTranslator(context)
.translate(initializer));
}
return jsInitExpression;
}
@@ -80,4 +80,9 @@ public final class FunctionTest extends TranslationTest {
public void functionUsedBeforeDeclaration() throws Exception {
testFooBoxIsTrue("functionUsedBeforeDeclaration.kt");
}
@Test
public void functionWithTwoParametersCall() throws Exception {
testFooBoxIsTrue("functionWithTwoParametersCall.kt");
}
}
@@ -0,0 +1,9 @@
namespace foo
fun sum(param1 : Int, param2 : Int) : Int {
return param1 + param2;
}
fun box() : Boolean {
return (sum(1, 5) == 6)
}