switch to using ValueParameterDescriptor instead of JetParameter when translating function declarations

implemented support for implicit 'it' parameter
added 'clear' function to ArrayList temporary implementation
This commit is contained in:
Pavel Talanov
2012-01-06 14:56:23 +04:00
parent 17e80963d2
commit 6b533771f0
7 changed files with 508 additions and 288 deletions
+402 -273
View File
@@ -14,10 +14,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/expression/function/cases/KT-921.kt" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/expression/function/cases/implicitItParameter.kt" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/testFiles/java/arrayList/cases/access.kt" afterPath="$PROJECT_DIR$/translator/testFiles/java/arrayList/cases/access.kt" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/testFiles/java/arrayList/cases/arrayAccess.kt" afterPath="$PROJECT_DIR$/translator/testFiles/java/arrayList/cases/arrayAccess.kt" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/testFiles/java/arrayList/cases/emptyList.kt" afterPath="$PROJECT_DIR$/translator/testFiles/java/arrayList/cases/emptyList.kt" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/StandardClasses.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/StandardClasses.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/FunctionTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/FunctionTranslator.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/testFiles/kotlin_lib.js" afterPath="$PROJECT_DIR$/translator/testFiles/kotlin_lib.js" />
<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" />
@@ -191,58 +194,13 @@
<favorites_list name="k2js" />
</component>
<component name="FileEditorManager">
<splitter split-orientation="horizontal" split-proportion="0.4739369">
<splitter split-orientation="horizontal" split-proportion="0.40329218">
<split-first>
<leaf>
<file leaf-file-name="translator.iml" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/translator.iml">
<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="classInstantiation.kt" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/class/cases/classInstantiation.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>
</file>
<file leaf-file-name="ArrayListTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ArrayListTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="23" column="16" selection-start="469" selection-end="469" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="access.kt" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/java/arrayList/cases/access.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="2" column="28" selection-start="41" selection-end="41" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="arrayAccess.kt" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/java/arrayList/cases/arrayAccess.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="9" column="20" selection-start="155" selection-end="155" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="emptyList.kt" pinned="false" current="true" current-in-tab="true">
<file leaf-file-name="emptyList.kt" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/java/arrayList/cases/emptyList.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="6" column="19" selection-start="113" selection-end="113" vertical-scroll-proportion="0.18994413">
<state line="7" column="10" selection-start="121" selection-end="121" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -251,7 +209,7 @@
<file leaf-file-name="StandardClasses.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/StandardClasses.java">
<provider selected="true" editor-type-id="text-editor">
<state line="103" column="16" selection-start="5303" selection-end="5303" vertical-scroll-proportion="0.0">
<state line="74" column="72" selection-start="3704" selection-end="3704" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -266,10 +224,57 @@
</provider>
</entry>
</file>
<file leaf-file-name="extensionLiteralPassedToFunction.kt" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/extensionFunction/cases/extensionLiteralPassedToFunction.kt">
<file leaf-file-name="FunctionTranslator.java" pinned="false" current="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/FunctionTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="5" column="25" selection-start="112" selection-end="112" vertical-scroll-proportion="0.0">
<state line="4" column="41" selection-start="187" selection-end="187" vertical-scroll-proportion="-0.35951662">
<folding>
<element signature="e#6221#6234#0" expanded="true" />
</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/utils/BindingUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state line="54" column="37" selection-start="2196" selection-end="2196" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="FunctionDescriptor.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/FunctionDescriptor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="10" column="56" selection-start="248" selection-end="248" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="CallableMemberDescriptor.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/CallableMemberDescriptor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="9" column="61" selection-start="200" selection-end="200" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="CallableDescriptor.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/CallableDescriptor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="14" column="17" selection-start="393" selection-end="393" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ResolvedCall.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/resolve/calls/ResolvedCall.java">
<provider selected="true" editor-type-id="text-editor">
<state line="14" column="17" selection-start="475" selection-end="475" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -288,60 +293,6 @@
</split-first>
<split-second>
<leaf>
<file leaf-file-name="FunctionTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/FunctionTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="42" column="16" selection-start="943" selection-end="943" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="functionLiteralAsParameter.kt" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/function/cases/functionLiteralAsParameter.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="2" column="23" selection-start="36" selection-end="36" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="inheritedMethod.jet" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/examples/cases/inheritedMethod.jet">
<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="generic.jet" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/examples/cases/generic.jet">
<provider selected="true" editor-type-id="text-editor">
<state line="2" column="46" selection-start="66" selection-end="66" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="closureWithParameterAndBoxing.jet" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/function/cases/closureWithParameterAndBoxing.jet">
<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="closureWithParameter.jet" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/function/cases/closureWithParameter.jet">
<provider selected="true" editor-type-id="text-editor">
<state line="6" column="28" selection-start="115" selection-end="115" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="loopClosure.kt" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/function/cases/loopClosure.kt">
<provider selected="true" editor-type-id="text-editor">
@@ -369,10 +320,64 @@
</provider>
</entry>
</file>
<file leaf-file-name="arraySize.kt" pinned="false" current="false" current-in-tab="true">
<file leaf-file-name="arraySize.kt" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/standardClasses/cases/arraySize.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="7" column="11" selection-start="83" selection-end="83" vertical-scroll-proportion="0.21288015">
<state line="7" column="86" selection-start="114" selection-end="114" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="KT-921.kt" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/function/cases/KT-921.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>
</file>
<file leaf-file-name="KT-921.js" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/function/out/KT-921.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>
</file>
<file leaf-file-name="implicitItParameter.kt" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/function/cases/implicitItParameter.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="5" column="30" selection-start="113" selection-end="113" vertical-scroll-proportion="0.114709854">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="FunctionTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/FunctionTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="63" column="21" selection-start="1560" selection-end="1560" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="TranslationTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/TranslationTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="107" column="4" selection-start="3334" selection-end="3334" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="kotlin_lib.js" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/kotlin_lib.js">
<provider selected="true" editor-type-id="text-editor">
<state line="336" column="6" selection-start="8518" selection-end="8518" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -402,10 +407,6 @@
<component name="IdeDocumentHistory">
<option name="changedFiles">
<list>
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/declaration/ClassDeclarationTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/declaration/DeclarationBodyVisitor.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/DescriptorUtils.java" />
<option value="$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/WritableScopeImpl.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/K2JSTranslator.java" />
<option value="$PROJECT_DIR$/translator/testFiles/class/cases/classInstantiation.kt" />
<option value="$PROJECT_DIR$/translator/testFiles/extensionFunction/cases/extensionLiteralPassedToFunction.kt" />
@@ -414,10 +415,14 @@
<option value="$PROJECT_DIR$/translator/testFiles/expression/function/cases/closureWithParameter.jet" />
<option value="$PROJECT_DIR$/translator/testFiles/expression/function/cases/functionLiteralAsParameter.kt" />
<option value="$PROJECT_DIR$/translator/testFiles/examples/cases/generic.jet" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/StandardClasses.java" />
<option value="$PROJECT_DIR$/translator/testFiles/java/arrayList/cases/access.kt" />
<option value="$PROJECT_DIR$/translator/testFiles/java/arrayList/cases/arrayAccess.kt" />
<option value="$PROJECT_DIR$/translator/testFiles/java/arrayList/cases/emptyList.kt" />
<option value="$PROJECT_DIR$/translator/testFiles/kotlin_lib.js" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/StandardClasses.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/FunctionTranslator.java" />
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/FunctionTest.java" />
<option value="$PROJECT_DIR$/translator/testFiles/expression/function/cases/implicitItParameter.kt" />
</list>
</option>
</component>
@@ -508,6 +513,124 @@
</navigator>
<panes>
<pane id="Scope">
<subPane subId="Production">
<PATH>
<PATH_ELEMENT USER_OBJECT="Root">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="translator">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="translator">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT USER_OBJECT="Root">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="translator">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="translator">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="testFiles">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT USER_OBJECT="Root">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="translator">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="translator">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="testFiles">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="expression">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT USER_OBJECT="Root">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="translator">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="translator">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="testFiles">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="expression">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="function">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT USER_OBJECT="Root">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="translator">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="translator">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="testFiles">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="expression">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="function">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
<PATH_ELEMENT USER_OBJECT="cases">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT USER_OBJECT="Root">
<option name="myItemId" value="" />
<option name="myItemType" value="" />
</PATH_ELEMENT>
</PATH>
</subPane>
<subPane subId="Project Files">
<PATH>
<PATH_ELEMENT USER_OBJECT="Root">
@@ -563,7 +686,7 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="standardClasses" />
<option name="myItemId" value="expression" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
@@ -581,7 +704,37 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="standardClasses" />
<option name="myItemId" value="expression" />
<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="expression" />
<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>
@@ -603,7 +756,7 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="java" />
<option name="myItemId" value="examples" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
@@ -621,33 +774,7 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="arrayList" />
<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="java" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="arrayList" />
<option name="myItemId" value="examples" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
@@ -740,10 +867,6 @@
<option name="myItemId" value="k2js" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="k2js" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PackageViewModuleNode" />
</PATH_ELEMENT>
</PATH>
</subPane>
</pane>
@@ -776,9 +899,9 @@
<recent name="org.jetbrains.k2js.backend" />
</key>
<key name="CopyFile.RECENT_KEYS">
<recent name="C:\Dev\Projects\jet-contrib\k2js\translator\testFiles\examples\cases" />
<recent name="C:\Dev\Projects\jet-contrib\k2js\idea_fix\src" />
<recent name="C:\Dev\Projects\jet-contrib\k2js\translator\testFiles\java\system" />
<recent name="C:\Dev\Projects\jet-contrib\k2js\translator\testFiles\examples\cases" />
<recent name="C:\Dev\Projects\jet-contrib\k2js\translator\testFiles\java\arrayList" />
<recent name="C:\Dev\Projects\jet-contrib\k2js\translator\testFiles\expression\function\cases" />
</key>
@@ -787,58 +910,6 @@
</key>
</component>
<component name="RunManager" selected="JUnit.All in jetTests">
<configuration default="false" name="ExtensionFunctionTest.extensionLiteralPassedToFunction" type="JUnit" factoryName="JUnit" temporary="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
<option name="PATTERN" value="org.jetbrains.k2js.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<module name="translator" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" value="" />
<option name="PACKAGE_NAME" value="org.jetbrains.k2js.test" />
<option name="MAIN_CLASS_NAME" value="org.jetbrains.k2js.test.ExtensionFunctionTest" />
<option name="METHOD_NAME" value="extensionLiteralPassedToFunction" />
<option name="TEST_OBJECT" value="method" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<envs />
<dir value="$PROJECT_DIR$/translator" />
<patterns />
<RunnerSettings RunnerId="Run" />
<ConfigurationWrapper RunnerId="Run" />
<method />
</configuration>
<configuration default="false" name="All in translator" type="JUnit" factoryName="JUnit" temporary="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<module name="translator" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="" />
<option name="MAIN_CLASS_NAME" />
<option name="METHOD_NAME" />
<option name="TEST_OBJECT" value="package" />
<option name="VM_PARAMETERS" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="moduleWithDependencies" />
</option>
<envs />
<patterns />
<RunnerSettings RunnerId="Run" />
<ConfigurationWrapper RunnerId="Run" />
<method />
</configuration>
<configuration default="false" name="FunctionTest.loopClosure" type="JUnit" factoryName="JUnit" temporary="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
@@ -918,6 +989,62 @@
<ConfigurationWrapper RunnerId="Run" />
<method />
</configuration>
<configuration default="false" name="FunctionTest.kt921" type="JUnit" factoryName="JUnit" temporary="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
<option name="PATTERN" value="org.jetbrains.k2js.test.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<module name="translator" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="org.jetbrains.k2js.test" />
<option name="MAIN_CLASS_NAME" value="org.jetbrains.k2js.test.FunctionTest" />
<option name="METHOD_NAME" value="kt921" />
<option name="TEST_OBJECT" value="method" />
<option name="VM_PARAMETERS" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="moduleWithDependencies" />
</option>
<envs />
<patterns />
<RunnerSettings RunnerId="Run" />
<ConfigurationWrapper RunnerId="Run" />
<method />
</configuration>
<configuration default="false" name="FunctionTest.implicitItParameter" type="JUnit" factoryName="JUnit" temporary="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
<option name="PATTERN" value="org.jetbrains.k2js.test.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<module name="translator" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<option name="PACKAGE_NAME" value="org.jetbrains.k2js.test" />
<option name="MAIN_CLASS_NAME" value="org.jetbrains.k2js.test.FunctionTest" />
<option name="METHOD_NAME" value="implicitItParameter" />
<option name="TEST_OBJECT" value="method" />
<option name="VM_PARAMETERS" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="moduleWithDependencies" />
</option>
<envs />
<patterns />
<RunnerSettings RunnerId="Run" />
<ConfigurationWrapper RunnerId="Run" />
<method />
</configuration>
<configuration default="true" type="Remote" factoryName="Remote">
<option name="USE_SOCKET_TRANSPORT" value="true" />
<option name="SERVER_MODE" value="false" />
@@ -1074,11 +1201,11 @@
<list size="7">
<item index="0" class="java.lang.String" itemvalue="Applet.Applet" />
<item index="1" class="java.lang.String" itemvalue="JUnit.tests" />
<item index="2" class="java.lang.String" itemvalue="JUnit.ExtensionFunctionTest.extensionLiteralPassedToFunction" />
<item index="3" class="java.lang.String" itemvalue="JUnit.All in translator" />
<item index="4" class="java.lang.String" itemvalue="JUnit.FunctionTest.loopClosure" />
<item index="5" class="java.lang.String" itemvalue="JUnit.All in jetTests" />
<item index="6" class="java.lang.String" itemvalue="JUnit.ArrayListTest.access" />
<item index="2" class="java.lang.String" itemvalue="JUnit.FunctionTest.loopClosure" />
<item index="3" class="java.lang.String" itemvalue="JUnit.All in jetTests" />
<item index="4" class="java.lang.String" itemvalue="JUnit.ArrayListTest.access" />
<item index="5" class="java.lang.String" itemvalue="JUnit.FunctionTest.kt921" />
<item index="6" class="java.lang.String" itemvalue="JUnit.FunctionTest.implicitItParameter" />
</list>
<configuration name="&lt;template&gt;" type="WebApp" default="true" selected="false">
<Host>localhost</Host>
@@ -1153,8 +1280,8 @@
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.20363443" sideWeight="0.284342" 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.7002882" 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.22073758" sideWeight="0.6051873" order="0" side_tool="false" content_ui="combo" />
<window_info id="Run" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.39481267" sideWeight="0.8530198" order="2" 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.22073758" sideWeight="0.7588857" order="0" side_tool="false" content_ui="combo" />
<window_info id="Run" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.24111432" sideWeight="0.8530198" order="2" 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.0908605" sideWeight="0.7146974" order="2" side_tool="false" content_ui="combo" />
<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" />
@@ -1198,7 +1325,7 @@
<option name="CREATE_PATCH_EXPAND_DETAILS_DEFAULT" value="true" />
<option name="SHOW_FILE_HISTORY_DETAILS" value="true" />
<option name="FORCE_NON_EMPTY_COMMENT" value="false" />
<option name="LAST_COMMIT_MESSAGE" value="resolved part of the problem" />
<option name="LAST_COMMIT_MESSAGE" value="changed tests not to use std lib for now /*all tests pass*/" />
<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" />
@@ -1211,7 +1338,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="temporary commit." />
<MESSAGE value="rewrite K2JSTranslator class" />
<MESSAGE value="string templates with primitive values." />
<MESSAGE value="removed accidentally commited files." />
@@ -1236,6 +1362,7 @@
<MESSAGE value="migrated from JetNamespace to NamespaceDescriptor and JetFile /* Lots of tests fail due to: missing array methods and unconverted tests*/" />
<MESSAGE value="migrated tests to new syntax /*tests fail due to migrated size problem*/" />
<MESSAGE value="resolved part of the problem" />
<MESSAGE value="changed tests not to use std lib for now /*all tests pass*/" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager />
@@ -1245,13 +1372,57 @@
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/FunctionTest.java">
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/CallableMemberDescriptor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="42" column="16" selection-start="943" selection-end="943" vertical-scroll-proportion="0.0">
<state line="9" column="61" selection-start="200" selection-end="200" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/java/arrayList/cases/arrayAccess.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="9" column="20" selection-start="155" selection-end="155" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/CallableDescriptor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="14" column="17" selection-start="393" selection-end="393" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/extensionFunction/cases/extensionLiteralPassedToFunction.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="5" column="25" selection-start="112" selection-end="112" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state line="54" column="37" selection-start="2196" selection-end="2196" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/kotlin_lib.js">
<provider selected="true" editor-type-id="text-editor">
<state line="336" column="6" selection-start="8518" selection-end="8518" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/FunctionTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="4" column="41" selection-start="187" selection-end="187" vertical-scroll-proportion="-0.35951662">
<folding>
<element signature="e#6221#6234#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/function/cases/functionLiteralAsParameter.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="2" column="23" selection-start="36" selection-end="36" vertical-scroll-proportion="0.0">
@@ -1266,6 +1437,13 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/TranslationTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="107" column="4" selection-start="3334" selection-end="3334" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/examples/cases/generic.jet">
<provider selected="true" editor-type-id="text-editor">
<state line="2" column="46" selection-start="66" selection-end="66" vertical-scroll-proportion="0.0">
@@ -1273,86 +1451,37 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/declaration/ClassDeclarationTranslator.java">
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/function/out/KT-921.js">
<provider selected="true" editor-type-id="text-editor">
<state line="43" column="58" selection-start="1754" selection-end="1754" vertical-scroll-proportion="0.0">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/WebDemoExamplesTest.java">
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/function/cases/closureWithParameter.jet">
<provider selected="true" editor-type-id="text-editor">
<state line="37" column="16" selection-start="914" selection-end="914" vertical-scroll-proportion="0.0">
<state line="6" column="28" selection-start="115" selection-end="115" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/StandardClassesTest.java">
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/function/cases/KT-921.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="37" column="16" selection-start="844" selection-end="844" vertical-scroll-proportion="0.0">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/standardClasses/cases/arraySize.kt">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/FunctionTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="7" column="11" selection-start="83" selection-end="83" vertical-scroll-proportion="0.21288015">
<state line="63" column="21" selection-start="1560" selection-end="1560" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/TranslationContext.java">
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/function/cases/implicitItParameter.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="52" column="81" selection-start="2110" selection-end="2110" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/StandardClasses.java">
<provider selected="true" editor-type-id="text-editor">
<state line="103" column="16" selection-start="5303" selection-end="5303" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ArrayListTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="23" column="16" selection-start="469" selection-end="469" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/java/arrayList/cases/access.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="2" column="28" selection-start="41" selection-end="41" vertical-scroll-proportion="0.0">
<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="39" column="63" selection-start="1714" selection-end="1714" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/java/arrayList/cases/arrayAccess.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="9" column="20" selection-start="155" selection-end="155" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/resolve/scopes/WritableScopeImpl.java">
<provider selected="true" editor-type-id="text-editor">
<state line="422" column="0" selection-start="15409" selection-end="15409" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/java/arrayList/cases/emptyList.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="6" column="19" selection-start="113" selection-end="113" vertical-scroll-proportion="0.18994413">
<state line="5" column="30" selection-start="113" selection-end="113" vertical-scroll-proportion="0.114709854">
<folding />
</state>
</provider>
@@ -72,7 +72,7 @@ public final class StandardClasses {
standardClasses.declareStandardTopLevelObject(arrayListFQName, "ArrayList");
standardClasses.declareStandardInnerDeclaration(arrayListFQName, "<init>", "ArrayList");
declareMethods(standardClasses, arrayListFQName, "size", "add", "get",
"isEmpty", "set", "remove", "addAll", "contains");
"isEmpty", "set", "remove", "addAll", "contains", "clear");
}
private static void declareIterator(@NotNull StandardClasses standardClasses,
@@ -3,8 +3,8 @@ package org.jetbrains.k2js.translate.expression;
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.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.k2js.translate.context.TemporaryVariable;
import org.jetbrains.k2js.translate.context.TranslationContext;
@@ -15,7 +15,6 @@ import org.jetbrains.k2js.translate.utils.DescriptorUtils;
import java.util.ArrayList;
import java.util.List;
import static org.jetbrains.k2js.translate.utils.BindingUtils.getDescriptorForElement;
import static org.jetbrains.k2js.translate.utils.BindingUtils.getFunctionDescriptor;
import static org.jetbrains.k2js.translate.utils.TranslationUtils.functionWithScope;
@@ -40,6 +39,8 @@ public final class FunctionTranslator extends AbstractTranslator {
private final JsFunction functionObject;
@NotNull
private final TranslationContext functionBodyContext;
@NotNull
private final FunctionDescriptor descriptor;
private FunctionTranslator(@NotNull JetDeclarationWithBody functionDeclaration,
@@ -48,6 +49,7 @@ public final class FunctionTranslator extends AbstractTranslator {
this.functionDeclaration = functionDeclaration;
this.functionObject = createFunctionObject();
this.functionBodyContext = functionBodyContext();
this.descriptor = getFunctionDescriptor(context.bindingContext(), functionDeclaration);
}
@NotNull
@@ -68,8 +70,8 @@ public final class FunctionTranslator extends AbstractTranslator {
@NotNull
private JsFunction generateFunctionObject() {
functionObject.setParameters(translateParameters(functionDeclaration.getValueParameters(), functionBodyContext));
functionObject.setBody(translateBody(functionBodyContext));
functionObject.setParameters(translateParameters());
functionObject.setBody(translateBody());
restoreContext();
return functionObject;
}
@@ -103,7 +105,7 @@ public final class FunctionTranslator extends AbstractTranslator {
}
@NotNull
private JsBlock translateBody(@NotNull TranslationContext functionBodyContext) {
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";
@@ -150,23 +152,19 @@ public final class FunctionTranslator extends AbstractTranslator {
}
@NotNull
private List<JsParameter> translateParameters(@NotNull List<JetParameter> jetParameters,
@NotNull TranslationContext functionBodyContext) {
private List<JsParameter> translateParameters() {
List<JsParameter> jsParameters = new ArrayList<JsParameter>();
mayBeAddThisParameterForExtensionFunction(jsParameters);
for (JetParameter jetParameter : jetParameters) {
JsName parameterName = declareParameter(jetParameter, functionBodyContext);
for (ValueParameterDescriptor valueParameter : descriptor.getValueParameters()) {
JsName parameterName = declareParameter(valueParameter);
jsParameters.add(new JsParameter(parameterName));
}
return jsParameters;
}
@NotNull
private JsName declareParameter(@NotNull JetParameter jetParameter,
@NotNull TranslationContext functionBodyContext) {
DeclarationDescriptor parameterDescriptor =
getDescriptorForElement(functionBodyContext.bindingContext(), jetParameter);
return context().declareLocalVariable(parameterDescriptor);
private JsName declareParameter(@NotNull ValueParameterDescriptor valueParameter) {
return context().declareLocalVariable(valueParameter);
}
private void mayBeAddThisParameterForExtensionFunction(@NotNull List<JsParameter> jsParameters) {
@@ -59,5 +59,15 @@ public class FunctionTest extends AbstractExpressionTest {
testFunctionOutput("enclosingThis.jet", "Anonymous", "box", "OK");
}
@Test
public void implicitItParameter() throws Exception {
testFooBoxIsTrue("implicitItParameter.kt");
}
@Test
public void kt921() throws Exception {
checkOutput("KT-921.kt", "");
}
}
@@ -0,0 +1,67 @@
import java.util.*
class Lifetime() {
val attached = ArrayList< Function0<Unit> >()
public fun attach(action : ()->Unit)
{
attached.add(action)
}
fun close()
{
for(x in attached) x()
attached.clear()
}
}
public class Viewable<T>()
{
val items = ArrayList<T>()
fun add(item:T)
{
items.add(item)
}
fun remove(item:T)
{
items.remove(item)
}
fun view(lifetime: Lifetime, viewer: (itemLifetime:Lifetime, item:T) -> Unit)
{
for(item in items)
viewer(lifetime, item)
}
}
fun lifetime(body: (Lifetime)->Unit)
{
val l = Lifetime()
body(l)
l.close()
}
fun<T> Dump(items:ArrayList<T>)
{
for(item in items)
System.out?.print(item.toString() + ", ")
System.out?.println()
}
fun main(args:Array<String>)
{
val v = Viewable<Int>()
val x = ArrayList<Int>()
v.add(1)
v.add(2)
lifetime(
{
v.view(it, {(itemLifetime, item)->
x.add(item)
Dump(x)
itemLifetime.attach { x.remove(item); Dump(x) }
})
})
}
@@ -0,0 +1,12 @@
package foo
fun test(f : (Int) -> Boolean, p : Int) = f(p)
fun box() : Boolean {
if (!test({it + 1 == 2}, 1)) return false;
if (!test({it > 1}, 3)) return false;
return (test({((it < 1) == false)}, 1))
}
+4
View File
@@ -331,6 +331,10 @@ Kotlin.ArrayList = Class.create({
}
this.$size--;
},
clear:function () {
this.array = [];
this.$size = 0;
},
contains:function (obj) {
for (var i = 0; i < this.$size; ++i) {
if (Kotlin.equals(this.array[i], obj)) {