Refactoring function translator.

This commit is contained in:
Pavel Talanov
2011-11-25 17:06:59 +04:00
parent f1096cf2be
commit db365ddcb8
7 changed files with 183 additions and 179 deletions
+119 -120
View File
@@ -8,15 +8,13 @@
</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/propertiesAsParametersInitialized.kt" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/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/ReferenceTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ReferenceTranslator.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/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/declaration/PropertyTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/declaration/PropertyTranslator.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/initializer/ClassInitializerTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/initializer/ClassInitializerTranslator.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/declaration/DeclarationBodyVisitor.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/declaration/DeclarationBodyVisitor.java" />
</list>
<ignored path="k2js.iws" />
<ignored path=".idea/workspace.xml" />
@@ -179,28 +177,10 @@
</split-first>
<split-second>
<leaf>
<file leaf-file-name="BasicClassTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/BasicClassTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="56" column="4" selection-start="1472" selection-end="1472" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="propertiesAsParametersInitialized.js" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/class/out/propertiesAsParametersInitialized.js">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="102" selection-start="1" selection-end="1" 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">
<provider selected="true" editor-type-id="text-editor">
<state line="151" column="62" selection-start="6631" selection-end="6631" vertical-scroll-proportion="-23.461538">
<state line="3" column="102" selection-start="97" selection-end="97" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -215,10 +195,10 @@
</provider>
</entry>
</file>
<file leaf-file-name="ClassInitializerTranslator.java" pinned="false" current="true" current-in-tab="true">
<file leaf-file-name="ClassInitializerTranslator.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/initializer/ClassInitializerTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="41" column="31" selection-start="1760" selection-end="1760" vertical-scroll-proportion="0.4569343">
<state line="41" column="31" selection-start="1760" selection-end="1760" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
<element signature="e#980#993#0" expanded="true" />
@@ -228,10 +208,10 @@
</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="valuePassedToAncestorConstructor.js" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/inheritance/out/valuePassedToAncestorConstructor.js">
<provider selected="true" editor-type-id="text-editor">
<state line="41" column="70" selection-start="1444" selection-end="1444" vertical-scroll-proportion="0.0">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -240,34 +220,55 @@
<file leaf-file-name="TranslationUtils.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslationUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state line="47" column="37" selection-start="1767" selection-end="1767" vertical-scroll-proportion="0.0">
<state line="99" column="5" selection-start="4248" selection-end="4248" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ReferenceTranslator.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ReferenceTranslator.java">
<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">
<provider selected="true" editor-type-id="text-editor">
<state line="55" column="44" selection-start="1994" selection-end="1994" vertical-scroll-proportion="0.0">
<state line="65" column="93" selection-start="2476" selection-end="2476" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
<element signature="e#4254#4267#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="DeclarationBodyVisitor.java" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/declaration/DeclarationBodyVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="53" column="99" selection-start="2176" selection-end="2176" vertical-scroll-proportion="0.329927">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="BindingUtils.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/BindingUtils.java">
<file leaf-file-name="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="160" column="40" selection-start="7535" selection-end="7535" vertical-scroll-proportion="0.0">
<state line="29" column="56" selection-start="1284" selection-end="1284" 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">
<file leaf-file-name="ExpressionVisitor.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="37" column="16" selection-start="872" selection-end="872" vertical-scroll-proportion="0.0">
<state line="383" column="107" selection-start="17013" selection-end="17013" 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="119" column="29" selection-start="4853" selection-end="4853" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -294,22 +295,22 @@
<component name="IdeDocumentHistory">
<option name="changedFiles">
<list>
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslatorVisitor.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/initializer/InitializerVisitor.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/Translation.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/declaration/DeclarationBodyVisitor.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/BindingUtils.java" />
<option value="$PROJECT_DIR$/translator/testFiles/class/cases/constructorWithPropertiesAsParameters.kt" />
<option value="$PROJECT_DIR$/translator/testFiles/class/cases/propertiesAsParametersInitialized.kt" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/declaration/PropertyTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/declaration/ClassTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ReferenceTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslationUtils.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/out/propertiesAsParametersInitialized.js" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/initializer/ClassInitializerTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslationUtils.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslationContext.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/Translation.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/FunctionTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/declaration/DeclarationBodyVisitor.java" />
</list>
</option>
</component>
@@ -1002,21 +1003,21 @@
<layout>
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32853025" sideWeight="0.49812934" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32756963" sideWeight="0.46819884" order="1" 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.46606094" 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.7557456" order="3" side_tool="false" content_ui="tabs" />
<window_info id="IDEtalk Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.27185398" sideWeight="0.16194548" 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.35435596" order="10" side_tool="true" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
<window_info id="IDEtalk" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32854405" sideWeight="0.5" order="13" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32853025" sideWeight="0.46392304" 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.45750934" order="8" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32949087" sideWeight="0.49812934" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="1" side_tool="true" content_ui="tabs" />
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32977018" sideWeight="0.728146" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3997862" sideWeight="0.6705998" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.18332443" sideWeight="0.728146" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.27185398" sideWeight="0.8343132" 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.27185398" sideWeight="0.64190274" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="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" />
@@ -1060,7 +1061,7 @@
<option name="INCLUDE_TEXT_INTO_SHELF" value="false" />
<option name="CREATE_PATCH_EXPAND_DETAILS_DEFAULT" value="true" />
<option name="FORCE_NON_EMPTY_COMMENT" value="false" />
<option name="LAST_COMMIT_MESSAGE" value="Added properties as constructor parameters support(Not initialized yet)." />
<option name="LAST_COMMIT_MESSAGE" value="Added support for initialization of properties as constructor parameters." />
<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" />
@@ -1073,7 +1074,6 @@
<option name="UPDATE_GROUP_BY_CHANGELIST" value="false" />
<option name="SHOW_FILE_HISTORY_AS_TREE" value="false" />
<option name="FILE_HISTORY_SPLITTER_PROPORTION" value="0.6" />
<MESSAGE value="Split expression tests into different categories." />
<MESSAGE value="Added support for break expressions in while/do while." />
<MESSAGE value="Added support for continue in while/do while." />
<MESSAGE value="Rewrote name resolving logic. Improved DeclarationExtractor and renamed to Declarations." />
@@ -1098,6 +1098,7 @@
<MESSAGE value="Lots of refactoring and code improvements." />
<MESSAGE value="Refactoring." />
<MESSAGE value="Added properties as constructor parameters support(Not initialized yet)." />
<MESSAGE value="Added support for initialization of properties as constructor parameters." />
</component>
<component name="XDebuggerManager">
<breakpoint-manager />
@@ -1107,39 +1108,6 @@
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/declaration/PropertyTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="142" column="3" selection-start="5303" selection-end="5570" vertical-scroll-proportion="-18.884615">
<folding>
<element signature="imports" expanded="true" />
<element signature="e#943#966#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/declaration/ClassTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="134" column="5" selection-start="5776" selection-end="5776" vertical-scroll-proportion="0.0">
<folding>
<element signature="e#5312#5335#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/class/cases/constructorWithPropertiesAsParameters.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="8" column="11" selection-start="0" selection-end="165" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/class/cases/propertiesAsParametersInitialized.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="7" column="21" selection-start="101" selection-end="101" 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">
@@ -1154,13 +1122,6 @@
</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="41" column="70" selection-start="1444" selection-end="1444" 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">
@@ -1175,27 +1136,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/class/out/propertiesAsParametersInitialized.js">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="102" selection-start="1" selection-end="1" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContext.java">
<provider selected="true" editor-type-id="text-editor">
<state line="23" column="17" selection-start="867" selection-end="867" vertical-scroll-proportion="2.36">
<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="151" column="62" selection-start="6631" selection-end="6631" vertical-scroll-proportion="-23.461538">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ReferenceTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="55" column="44" selection-start="1994" selection-end="1994" vertical-scroll-proportion="0.0">
@@ -1210,16 +1150,9 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslationUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state line="47" column="37" selection-start="1767" selection-end="1767" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/initializer/ClassInitializerTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="41" column="31" selection-start="1760" selection-end="1760" vertical-scroll-proportion="0.4569343">
<state line="41" column="31" selection-start="1760" selection-end="1760" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
<element signature="e#980#993#0" expanded="true" />
@@ -1228,6 +1161,72 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/inheritance/out/valuePassedToAncestorConstructor.js">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/class/out/propertiesAsParametersInitialized.js">
<provider selected="true" editor-type-id="text-editor">
<state line="3" column="102" selection-start="97" selection-end="97" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslationUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state line="99" column="5" selection-start="4248" selection-end="4248" 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="119" column="29" selection-start="4853" selection-end="4853" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContext.java">
<provider selected="true" editor-type-id="text-editor">
<state line="23" column="17" selection-start="867" selection-end="867" vertical-scroll-proportion="2.36">
<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="29" column="56" selection-start="1284" selection-end="1284" 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="383" column="107" selection-start="17013" selection-end="17013" 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="65" column="93" selection-start="2476" selection-end="2476" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
<element signature="e#4254#4267#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/declaration/DeclarationBodyVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="53" column="99" selection-start="2176" selection-end="2176" vertical-scroll-proportion="0.329927">
<folding />
</state>
</provider>
</entry>
</component>
<component name="masterDetails">
<states>
@@ -381,7 +381,7 @@ public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
@NotNull
public JsNode visitFunctionLiteralExpression(@NotNull JetFunctionLiteralExpression expression,
@NotNull TranslationContext context) {
return Translation.functionTranslator(context).translateAsLiteral(expression.getFunctionLiteral());
return Translation.functionTranslator(expression.getFunctionLiteral(), context).translateAsLiteral();
}
@Override
@@ -3,67 +3,70 @@ package org.jetbrains.k2js.translate;
import com.google.dart.compiler.backend.js.ast.*;
import com.google.dart.compiler.util.AstUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.psi.JetExpression;
import org.jetbrains.jet.lang.psi.JetFunction;
import org.jetbrains.jet.lang.psi.JetFunctionLiteral;
import org.jetbrains.jet.lang.psi.JetNamedFunction;
import org.jetbrains.jet.lang.psi.*;
import java.util.ArrayList;
import java.util.List;
/**
* @author Talanov Pavel
*/
//TODO: think about adding state to translator
public final class FunctionTranslator extends AbstractTranslator {
@NotNull
public static FunctionTranslator newInstance(@NotNull TranslationContext context) {
return new FunctionTranslator(context);
private final JetFunction functionDeclaration;
@NotNull
private final JsFunction functionObject;
@NotNull
public static FunctionTranslator newInstance(@NotNull JetFunction function, @NotNull TranslationContext context) {
return new FunctionTranslator(function, context);
}
private FunctionTranslator(@NotNull TranslationContext context) {
private FunctionTranslator(@NotNull JetFunction functionDeclaration, @NotNull TranslationContext context) {
super(context);
this.functionDeclaration = functionDeclaration;
this.functionObject = createFunctionObject();
}
@NotNull
public JsPropertyInitializer translateAsMethod(@NotNull JetNamedFunction expression) {
JsName functionName = context().getNameForElement(expression);
JsFunction function = generateFunctionObject(expression);
public JsPropertyInitializer translateAsMethod() {
JsName functionName = context().getNameForElement(functionDeclaration);
JsFunction function = generateFunctionObject();
return new JsPropertyInitializer(functionName.makeRef(), function);
}
@NotNull
public JsFunction translateAsLiteral(@NotNull JetFunctionLiteral expression) {
return generateFunctionObject(expression);
public JsFunction translateAsLiteral() {
return generateFunctionObject();
}
@NotNull
private JsFunction generateFunctionObject(@NotNull JetFunction jetFunction) {
JsFunction result = createFunctionObject(jetFunction);
result.setParameters(TranslationUtils.translateParameters
(jetFunction.getValueParameters(), result.getScope()));
result.setBody(translateBody(jetFunction, result.getScope()));
return result;
private JsFunction generateFunctionObject() {
functionObject.setParameters(translateParameters(functionDeclaration.getValueParameters(),
functionObject.getScope()));
functionObject.setBody(translateBody());
return functionObject;
}
private JsFunction createFunctionObject(JetFunction function) {
if (function instanceof JetNamedFunction) {
private JsFunction createFunctionObject() {
if (functionDeclaration instanceof JetNamedFunction) {
return JsFunction.getAnonymousFunctionWithScope
(context().getScopeForElement(function));
(context().getScopeForElement(functionDeclaration));
}
if (function instanceof JetFunctionLiteral) {
if (functionDeclaration instanceof JetFunctionLiteral) {
return new JsFunction(context().enclosingScope());
}
throw new AssertionError("Unsupported type of function.");
throw new AssertionError("Unsupported type of functionDeclaration.");
}
@NotNull
private JsBlock translateBody(@NotNull JetFunction function, @NotNull JsScope functionScope) {
JetExpression jetBodyExpression = function.getBodyExpression();
private JsBlock translateBody() {
JetExpression jetBodyExpression = functionDeclaration.getBodyExpression();
//TODO decide if there are cases where this assert is illegal
assert jetBodyExpression != null : "Function without body not supported";
JsNode body = Translation.translateExpression(jetBodyExpression, functionBodyContext(function, functionScope));
return wrapWithReturnIfNeeded(body, !function.hasBlockBody());
JsNode body = Translation.translateExpression(jetBodyExpression, functionBodyContext());
return wrapWithReturnIfNeeded(body, !functionDeclaration.hasBlockBody());
}
@NotNull
@@ -79,7 +82,7 @@ public final class FunctionTranslator extends AbstractTranslator {
addReturnToBlockStatement(bodyBlock);
return bodyBlock;
}
throw new AssertionError("Invalid node as function body");
throw new AssertionError("Invalid node as functionDeclaration body");
}
private void addReturnToBlockStatement(@NotNull JsBlock bodyBlock) {
@@ -91,14 +94,24 @@ public final class FunctionTranslator extends AbstractTranslator {
}
@NotNull
private TranslationContext functionBodyContext(@NotNull JetFunction function,
@NotNull JsScope functionScope) {
if (function instanceof JetNamedFunction) {
return context().newFunctionDeclaration((JetNamedFunction) function);
private TranslationContext functionBodyContext() {
if (functionDeclaration instanceof JetNamedFunction) {
return context().newFunctionDeclaration((JetNamedFunction) functionDeclaration);
}
if (function instanceof JetFunctionLiteral) {
return context().newFunctionLiteral(functionScope);
if (functionDeclaration instanceof JetFunctionLiteral) {
return context().newEnclosingScope(functionObject.getScope());
}
throw new AssertionError("Unsupported type of function.");
throw new AssertionError("Unsupported type of functionDeclaration.");
}
@NotNull
private List<JsParameter> translateParameters(@NotNull List<JetParameter> jetParameters,
@NotNull JsScope functionScope) {
List<JsParameter> jsParameters = new ArrayList<JsParameter>();
for (JetParameter jetParameter : jetParameters) {
JsName parameterName = functionScope.declareName(jetParameter.getName());
jsParameters.add(new JsParameter(parameterName));
}
return jsParameters;
}
}
@@ -25,8 +25,9 @@ public final class Translation {
}
@NotNull
static public FunctionTranslator functionTranslator(@NotNull TranslationContext context) {
return FunctionTranslator.newInstance(context);
static public FunctionTranslator functionTranslator(@NotNull JetFunction function,
@NotNull TranslationContext context) {
return FunctionTranslator.newInstance(function, context);
}
@NotNull
@@ -117,11 +117,12 @@ public final class TranslationContext {
return new TranslationContext(namespaceName, program, bindingContext, newScopes, declarations, block);
}
@NotNull
public TranslationContext newFunctionLiteral(@NotNull JsScope correspondingScope) {
Scopes newScopes = new Scopes(correspondingScope, scopes.classScope, scopes.namespaceScope);
return new TranslationContext(namespaceName, program, bindingContext, newScopes, declarations, block);
}
//TODO: consider deleting
// @NotNull
// public TranslationContext newFunctionLiteral(@NotNull JsScope correspondingScope) {
// Scopes newScopes = new Scopes(correspondingScope, scopes.classScope, scopes.namespaceScope);
// return new TranslationContext(namespaceName, program, bindingContext, newScopes, declarations, block);
// }
// Note: Should be used if and only if scope has no corresponding descriptor
@NotNull
@@ -5,7 +5,10 @@ import com.google.dart.compiler.util.AstUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.PropertyDescriptor;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.psi.JetExpression;
import org.jetbrains.jet.lang.psi.JetProperty;
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression;
import org.jetbrains.jet.lang.psi.ValueArgument;
import java.util.ArrayList;
import java.util.List;
@@ -98,17 +101,4 @@ public final class TranslationUtils {
String backingFieldName = Namer.getKotlinBackingFieldName(propertyName);
return context.enclosingScope().findExistingName(backingFieldName);
}
@NotNull
static public List<JsParameter> translateParameters(@NotNull List<JetParameter> jetParameters,
@NotNull JsScope scopeToDeclareParameters) {
List<JsParameter> jsParameters = new ArrayList<JsParameter>();
for (JetParameter jetParameter : jetParameters) {
JsName parameterName = scopeToDeclareParameters.declareName(jetParameter.getName());
jsParameters.add(new JsParameter(parameterName));
}
return jsParameters;
}
}
@@ -51,7 +51,7 @@ public final class DeclarationBodyVisitor extends TranslatorVisitor<List<JsPrope
@NotNull
public List<JsPropertyInitializer> visitNamedFunction(@NotNull JetNamedFunction expression,
@NotNull TranslationContext context) {
return Arrays.asList(Translation.functionTranslator(context).translateAsMethod(expression));
return Arrays.asList(Translation.functionTranslator(expression, context).translateAsMethod());
}
@Override