switch to using descriptors on call site

default arguments support
This commit is contained in:
Pavel Talanov
2012-01-06 16:48:40 +04:00
parent 6b533771f0
commit 57fff8e554
7 changed files with 358 additions and 273 deletions
+273 -259
View File
@@ -14,12 +14,30 @@
</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="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/expression/function/cases/defaultParameters.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/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/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/src/org/jetbrains/k2js/translate/reference/CallTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/unsupported/basicmethod.jet" afterPath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/unsupported/basicmethod.jet" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/unsupported/basicproperty.jet" afterPath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/unsupported/basicproperty.jet" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/unsupported/classObject.jet" afterPath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/unsupported/classObject.jet" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/unsupported/classObjectInterface.jet" afterPath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/unsupported/classObjectInterface.jet" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/unsupported/classObjectMethod.jet" afterPath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/unsupported/classObjectMethod.jet" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/unsupported/enclosed.jet" afterPath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/unsupported/enclosed.jet" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/unsupported/forwardTypeParameter.jet" afterPath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/unsupported/forwardTypeParameter.jet" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/unsupported/inheritance.jet" afterPath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/unsupported/inheritance.jet" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/unsupported/inheritedInnerClass.jet" afterPath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/unsupported/inheritedInnerClass.jet" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/unsupported/initializerBlockDImpl.jet" afterPath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/unsupported/initializerBlockDImpl.jet" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/unsupported/innerClass.jet" afterPath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/unsupported/innerClass.jet" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/unsupported/propertyInInitializer.jet" afterPath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/unsupported/propertyInInitializer.jet" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/unsupported/simpleBox.jet" afterPath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/unsupported/simpleBox.jet" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/unsupported/traitproperty.jet" afterPath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/unsupported/traitproperty.jet" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/usesJava/exceptionConstructor.jet" afterPath="$PROJECT_DIR$/translator/testFiles/examples/sortedTests/usesJava/exceptionConstructor.jet" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/testFiles/expression/misc/cases/localProperty.jet" afterPath="$PROJECT_DIR$/translator/testFiles/expression/misc/cases/localProperty.jet" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/testFiles/expression/operation/cases/assign.jet" afterPath="$PROJECT_DIR$/translator/testFiles/expression/operation/cases/assign.jet" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/testFiles/trait/cases/funDelegation.jet" afterPath="$PROJECT_DIR$/translator/testFiles/trait/cases/funDelegation.jet" />
<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" />
@@ -194,51 +212,43 @@
<favorites_list name="k2js" />
</component>
<component name="FileEditorManager">
<splitter split-orientation="horizontal" split-proportion="0.40329218">
<splitter split-orientation="horizontal" split-proportion="0.50561196">
<split-first>
<leaf>
<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="7" column="10" selection-start="121" selection-end="121" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<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="74" column="72" selection-start="3704" selection-end="3704" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ExtensionFunctionTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ExtensionFunctionTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="46" column="16" selection-start="1123" selection-end="1123" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="FunctionTranslator.java" pinned="false" current="false" current-in-tab="true">
<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/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">
<state line="33" column="12" selection-start="1305" selection-end="1305" vertical-scroll-proportion="0.0">
<folding>
<element signature="e#6221#6234#0" expanded="true" />
<element signature="imports" expanded="true" />
<element signature="e#6169#6182#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="BindingUtils.java" pinned="false" current="false" current-in-tab="false">
<file leaf-file-name="BindingUtils.java" pinned="false" current="false" current-in-tab="true">
<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">
<state line="110" column="0" selection-start="5166" selection-end="5166" vertical-scroll-proportion="0.72521245">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="JetParameter.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetParameter.java">
<provider selected="true" editor-type-id="text-editor">
<state line="11" column="13" selection-start="274" selection-end="274" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="JetFunction.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFunction.java">
<provider selected="true" editor-type-id="text-editor">
<state line="16" column="22" selection-start="421" selection-end="421" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -271,6 +281,24 @@
</provider>
</entry>
</file>
<file leaf-file-name="RangeTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/RangeTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="17" column="16" selection-start="304" selection-end="304" vertical-scroll-proportion="0.0">
<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="67" column="16" selection-start="1624" selection-end="1624" 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">
@@ -280,66 +308,30 @@
</provider>
</entry>
</file>
<file leaf-file-name="closureWithParameter.jet" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/examples/cases/closureWithParameter.jet">
<provider selected="true" editor-type-id="text-editor">
<state line="7" column="0" selection-start="0" selection-end="156" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
</leaf>
</split-first>
<split-second>
<leaf>
<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">
<state line="6" column="33" selection-start="107" selection-end="107" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="WebDemoExamplesTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/WebDemoExamplesTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="37" column="16" selection-start="914" selection-end="914" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="StandardClassesTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/StandardClassesTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="37" column="16" selection-start="844" selection-end="844" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<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="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">
<state line="66" column="1" selection-start="1147" selection-end="1147" 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">
<file leaf-file-name="defaultParameters.kt" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/function/cases/defaultParameters.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="14" column="0" selection-start="232" selection-end="232" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="defaultParameters.js" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/function/out/defaultParameters.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 />
@@ -347,37 +339,66 @@
</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">
<file leaf-file-name="CallTranslator.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="5" column="30" selection-start="113" selection-end="113" vertical-scroll-proportion="0.114709854">
<state line="72" column="37" selection-start="4112" selection-end="4112" vertical-scroll-proportion="0.0">
<folding>
<element signature="e#3699#3713#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ValueParameterDescriptor.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/ValueParameterDescriptor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="9" column="17" selection-start="221" selection-end="221" vertical-scroll-proportion="0.0">
<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">
<file leaf-file-name="Collections.java" pinned="false" current="false" current-in-tab="false">
<entry file="jar://C:/Program Files/Java/jdk1.6.0_29/src.zip!/java/util/Collections.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">
<state line="2969" column="0" selection-start="115173" selection-end="115173" 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">
<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="107" column="4" selection-start="3334" selection-end="3334" vertical-scroll-proportion="0.0">
<state line="74" column="60" selection-start="3191" selection-end="3191" 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">
<file leaf-file-name="JetDelegatorToSuperCall.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetDelegatorToSuperCall.java">
<provider selected="true" editor-type-id="text-editor">
<state line="336" column="6" selection-start="8518" selection-end="8518" vertical-scroll-proportion="0.0">
<state line="13" column="13" selection-start="286" selection-end="286" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ResolvedValueArgument.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/ResolvedValueArgument.java">
<provider selected="true" editor-type-id="text-editor">
<state line="10" column="17" selection-start="206" selection-end="206" 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/examples/cases/closureWithParameter.jet">
<provider selected="true" editor-type-id="text-editor">
<state line="7" column="0" selection-start="0" selection-end="156" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -407,12 +428,6 @@
<component name="IdeDocumentHistory">
<option name="changedFiles">
<list>
<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" />
<option value="$PROJECT_DIR$/translator/testFiles/examples/cases/closureWithParameter.jet" />
<option value="$PROJECT_DIR$/translator/testFiles/expression/function/cases/loopClosure.kt" />
<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/testFiles/java/arrayList/cases/access.kt" />
@@ -420,9 +435,15 @@
<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" />
<option value="$PROJECT_DIR$/translator/testFiles/expression/function/out/KT-921.js" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/FunctionTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/initializer/ClassInitializerTranslator.java" />
<option value="$PROJECT_DIR$/translator/testFiles/expression/function/cases/KT-921.kt" />
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/FunctionTest.java" />
<option value="$PROJECT_DIR$/translator/testFiles/expression/function/cases/defaultParameters.kt" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java" />
</list>
</option>
</component>
@@ -760,28 +781,6 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="k2js" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="translator" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="testFiles" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="examples" />
<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,58 +908,7 @@
<recent name="org.jetbrains.k2js.test.examples" />
</key>
</component>
<component name="RunManager" selected="JUnit.All in jetTests">
<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>
<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="loopClosure" />
<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="All in jetTests" type="JUnit" factoryName="JUnit" temporary="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea" />
<module name="jetTests" />
<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>
<component name="RunManager" selected="JUnit.FunctionTest.defaultParameters">
<configuration default="false" name="ArrayListTest.access" type="JUnit" factoryName="JUnit" temporary="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
@@ -1045,6 +993,72 @@
<ConfigurationWrapper RunnerId="Run" />
<method />
</configuration>
<configuration default="false" name="ForTest.forIteratesOverArray" 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="jetTests" />
<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.ForTest" />
<option name="METHOD_NAME" value="forIteratesOverArray" />
<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="moduleWithDependencies" />
</option>
<envs />
<patterns />
<RunnerSettings RunnerId="Debug">
<option name="DEBUG_PORT" value="" />
<option name="TRANSPORT" value="0" />
<option name="LOCAL" value="true" />
</RunnerSettings>
<ConfigurationWrapper RunnerId="Debug" />
<method />
</configuration>
<configuration default="false" name="FunctionTest.defaultParameters" 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" value="" />
<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="defaultParameters" />
<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="moduleWithDependencies" />
</option>
<envs />
<patterns />
<RunnerSettings RunnerId="Debug">
<option name="DEBUG_PORT" value="" />
<option name="TRANSPORT" value="0" />
<option name="LOCAL" value="true" />
</RunnerSettings>
<RunnerSettings RunnerId="Run" />
<ConfigurationWrapper RunnerId="Debug" />
<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" />
@@ -1201,11 +1215,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.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" />
<item index="2" class="java.lang.String" itemvalue="JUnit.ArrayListTest.access" />
<item index="3" class="java.lang.String" itemvalue="JUnit.FunctionTest.kt921" />
<item index="4" class="java.lang.String" itemvalue="JUnit.FunctionTest.implicitItParameter" />
<item index="5" class="java.lang.String" itemvalue="JUnit.ForTest.forIteratesOverArray" />
<item index="6" class="java.lang.String" itemvalue="JUnit.FunctionTest.defaultParameters" />
</list>
<configuration name="&lt;template&gt;" type="WebApp" default="true" selected="false">
<Host>localhost</Host>
@@ -1261,7 +1275,7 @@
</component>
<component name="ToolWindowManager">
<frame x="-8" y="-8" width="1936" height="1176" extended-state="6" />
<editor active="false" />
<editor active="true" />
<layout>
<window_info id="Data Sources" 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="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" />
@@ -1281,7 +1295,7 @@
<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.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="Run" active="false" 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" />
@@ -1325,7 +1339,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="changed tests not to use std lib for now /*all tests pass*/" />
<option name="LAST_COMMIT_MESSAGE" value="switch to using ValueParameterDescriptor instead of JetParameter when translating function declarations&#10;implemented support for implicit 'it' parameter&#10;added 'clear' function to ArrayList temporary implementation" />
<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" />
@@ -1338,7 +1352,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="rewrite K2JSTranslator class" />
<MESSAGE value="string templates with primitive values." />
<MESSAGE value="removed accidentally commited files." />
<MESSAGE value="very simple try/catch/finally support." />
@@ -1363,6 +1376,7 @@
<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*/" />
<MESSAGE value="switch to using ValueParameterDescriptor instead of JetParameter when translating function declarations&#10;implemented support for implicit 'it' parameter&#10;added 'clear' function to ArrayList temporary implementation" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager />
@@ -1372,37 +1386,30 @@
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/CallableMemberDescriptor.java">
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/function/cases/KT-921.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="9" column="61" selection-start="200" selection-end="200" vertical-scroll-proportion="0.0">
<state line="66" column="1" selection-start="1147" selection-end="1147" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/java/arrayList/cases/arrayAccess.kt">
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/function/out/KT-921.js">
<provider selected="true" editor-type-id="text-editor">
<state line="9" column="20" selection-start="155" selection-end="155" vertical-scroll-proportion="0.0">
<state line="78" column="113" selection-start="1966" selection-end="1966" 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">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/RangeTest.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">
<state line="17" column="16" selection-start="304" selection-end="304" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/extensionFunction/cases/extensionLiteralPassedToFunction.kt">
<entry file="jar://C:/Program Files/Java/jdk1.6.0_29/src.zip!/java/util/Collections.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">
<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">
<state line="2969" column="0" selection-start="115173" selection-end="115173" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -1414,74 +1421,81 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/FunctionTranslator.java">
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/ValueParameterDescriptor.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">
<folding />
</state>
</provider>
</entry>
<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>
<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">
<folding />
</state>
</provider>
</entry>
<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>
<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>
<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">
<state line="9" column="17" selection-start="221" selection-end="221" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<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">
<state line="67" column="16" selection-start="1624" selection-end="1624" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/function/cases/implicitItParameter.kt">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/StandardClasses.java">
<provider selected="true" editor-type-id="text-editor">
<state line="5" column="30" selection-start="113" selection-end="113" vertical-scroll-proportion="0.114709854">
<state line="74" column="72" selection-start="3704" selection-end="3704" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetParameter.java">
<provider selected="true" editor-type-id="text-editor">
<state line="11" column="13" selection-start="274" selection-end="274" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ExtensionFunctionTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="46" column="16" selection-start="1123" selection-end="1123" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFunction.java">
<provider selected="true" editor-type-id="text-editor">
<state line="16" column="22" selection-start="421" selection-end="421" 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="110" column="0" selection-start="5166" selection-end="5166" vertical-scroll-proportion="0.72521245">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="72" column="37" selection-start="4112" selection-end="4112" vertical-scroll-proportion="0.0">
<folding>
<element signature="e#3699#3713#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/function/cases/defaultParameters.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="14" column="0" selection-start="232" selection-end="232" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/StandardClassesTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="17" column="16" selection-start="368" selection-end="368" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/function/out/defaultParameters.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>
@@ -31,6 +31,7 @@ public final class FunctionTranslator extends AbstractTranslator {
}
//TODO: implement more generic and safe way
@NotNull
private static final String RECEIVER_PARAMETER_NAME = "receiver";
@NotNull
@@ -72,6 +72,7 @@ public final class ClassInitializerTranslator extends AbstractInitializerTransla
@NotNull
private List<JsExpression> translateArguments(@NotNull JetDelegatorToSuperCall superCall) {
//TODO: use the same mechanism as in call translator
return TranslationUtils.translateArgumentList(context(), superCall.getValueArguments());
}
@@ -8,20 +8,20 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.calls.DefaultValueArgument;
import org.jetbrains.jet.lang.resolve.calls.ResolvedCall;
import org.jetbrains.jet.lang.resolve.calls.ResolvedValueArgument;
import org.jetbrains.k2js.translate.context.TranslationContext;
import org.jetbrains.k2js.translate.general.AbstractTranslator;
import org.jetbrains.k2js.translate.general.Translation;
import org.jetbrains.k2js.translate.intrinsic.FunctionIntrinsic;
import org.jetbrains.k2js.translate.utils.DescriptorUtils;
import org.jetbrains.k2js.translate.utils.TranslationUtils;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.*;
import static com.google.dart.compiler.util.AstUtil.not;
import static org.jetbrains.k2js.translate.utils.BindingUtils.getDescriptorForReferenceExpression;
import static org.jetbrains.k2js.translate.utils.BindingUtils.getFunctionDescriptorForCallExpression;
import static org.jetbrains.k2js.translate.utils.BindingUtils.*;
import static org.jetbrains.k2js.translate.utils.DescriptorUtils.getVariableDescriptorForVariableAsFunction;
import static org.jetbrains.k2js.translate.utils.DescriptorUtils.isConstructorDescriptor;
import static org.jetbrains.k2js.translate.utils.PsiUtils.isInOrNotInOperation;
@@ -35,6 +35,7 @@ import static org.jetbrains.k2js.translate.utils.TranslationUtils.*;
//TODO: write tests on calling backing fields as functions
public final class CallTranslator extends AbstractTranslator {
@NotNull
public static JsExpression translate(@NotNull JetUnaryExpression unaryExpression,
@NotNull TranslationContext context) {
JsExpression receiver = TranslationUtils.translateBaseExpression(context, unaryExpression);
@@ -46,6 +47,7 @@ public final class CallTranslator extends AbstractTranslator {
}
//TODO: method too long
@NotNull
public static JsExpression translate(@NotNull JetDotQualifiedExpression dotExpression,
@NotNull TranslationContext context) {
JsExpression receiver = translateReceiver(context, dotExpression);
@@ -53,23 +55,55 @@ public final class CallTranslator extends AbstractTranslator {
JetExpression selectorExpression = dotExpression.getSelectorExpression();
assert selectorExpression instanceof JetCallExpression;
JetCallExpression callExpression = (JetCallExpression) selectorExpression;
List<JsExpression> arguments =
translateArgumentList(context, callExpression.getValueArguments());
FunctionDescriptor descriptor =
getFunctionDescriptorForCallExpression(context.bindingContext(), callExpression);
List<JsExpression> arguments = translateArgumentsForCallExpression(callExpression, context);
return translate(context, receiver, arguments, descriptor);
}
@NotNull
private static List<JsExpression> translateArgumentsForCallExpression(@NotNull JetCallExpression callExpression,
@NotNull TranslationContext context) {
List<JsExpression> result = new ArrayList<JsExpression>();
ResolvedCall<?> resolvedCall = getResolvedCallForCallExpression(context.bindingContext(), callExpression);
Map<ValueParameterDescriptor, ResolvedValueArgument> formalToActualArguments = resolvedCall.getValueArguments();
for (ValueParameterDescriptor parameterDescriptor : resolvedCall.getResultingDescriptor().getValueParameters()) {
JetExpression argument = getActualArgument(formalToActualArguments, parameterDescriptor, context);
result.add(Translation.translateAsExpression(argument, context));
}
return result;
}
@NotNull
private static JetExpression getActualArgument(
@NotNull Map<ValueParameterDescriptor, ResolvedValueArgument> formalToActualArguments,
@NotNull ValueParameterDescriptor parameterDescriptor, @NotNull TranslationContext context) {
ResolvedValueArgument actualArgument = formalToActualArguments.get(parameterDescriptor);
if (actualArgument instanceof DefaultValueArgument) {
assert parameterDescriptor.hasDefaultValue() : "Unsupplied parameter must have default value.";
JetParameter psiParameter = getParameterForDescriptor(context.bindingContext(), parameterDescriptor);
JetExpression defaultValue = psiParameter.getDefaultValue();
assert defaultValue != null : "No default value found in PSI.";
return defaultValue;
}
List<JetExpression> argumentExpressions = actualArgument.getArgumentExpressions();
assert !argumentExpressions.isEmpty() : "Actual arguments must be supplied.";
assert argumentExpressions.size() == 1 : "Varargs not supported.";
return argumentExpressions.get(0);
}
@NotNull
public static JsExpression translate(@NotNull JetCallExpression callExpression,
@NotNull TranslationContext context) {
DeclarationDescriptor descriptor =
getFunctionDescriptorForCallExpression(context.bindingContext(), callExpression);
FunctionDescriptor descriptor =
(FunctionDescriptor) getFunctionDescriptorForCallExpression(context.bindingContext(), callExpression);
JsExpression receiver = getImplicitReceiver(context, descriptor);
List<JsExpression> arguments = translateArgumentList(context, callExpression.getValueArguments());
return translate(context, receiver, arguments, (FunctionDescriptor) descriptor);
List<JsExpression> arguments = translateArgumentsForCallExpression(callExpression, context);
return translate(context, receiver, arguments, descriptor);
}
//TODO: refactor
@NotNull
public static JsExpression translate(@NotNull JetBinaryExpression binaryExpression,
@NotNull TranslationContext context) {
JsExpression receiver = translateLeftExpression(context, binaryExpression);
@@ -94,6 +128,7 @@ public final class CallTranslator extends AbstractTranslator {
}
}
@NotNull
private static JsExpression translateAsInOperation(@NotNull TranslationContext context,
@NotNull JsExpression receiver,
@NotNull List<JsExpression> arguments,
@@ -101,6 +101,14 @@ public final class BindingUtils {
return (JetDeclaration) result;
}
@NotNull
public static JetParameter getParameterForDescriptor(@NotNull BindingContext context,
@NotNull ValueParameterDescriptor descriptor) {
PsiElement result = context.get(BindingContext.DESCRIPTOR_TO_DECLARATION, descriptor);
assert result instanceof JetParameter : "ValueParameterDescriptor should have corresponding JetParameter.";
return (JetParameter) result;
}
@NotNull
public static List<ClassDescriptor> getSuperclassDescriptors(@NotNull BindingContext context,
@NotNull JetClass classDeclaration) {
@@ -224,14 +232,20 @@ public final class BindingUtils {
@NotNull
public static FunctionDescriptor getFunctionDescriptorForCallExpression(@NotNull BindingContext context,
@NotNull JetCallExpression expression) {
JetExpression calleeExpression = PsiUtils.getCallee(expression);
ResolvedCall<?> resolvedCall = getResolvedCall(context, calleeExpression);
ResolvedCall<?> resolvedCall = getResolvedCallForCallExpression(context, expression);
CallableDescriptor descriptor = getDescriptorForResolvedCall(resolvedCall);
assert descriptor instanceof FunctionDescriptor :
"Callee expression must have resolved call with descriptor of type FunctionDescriptor";
return (FunctionDescriptor) descriptor;
}
@NotNull
public static ResolvedCall<?> getResolvedCallForCallExpression(@NotNull BindingContext context,
@NotNull JetCallExpression expression) {
JetExpression calleeExpression = PsiUtils.getCallee(expression);
return getResolvedCall(context, calleeExpression);
}
@NotNull
private static CallableDescriptor getDescriptorForResolvedCall(@NotNull ResolvedCall<?> resolvedCall) {
return resolvedCall.getCandidateDescriptor();
@@ -64,6 +64,11 @@ public class FunctionTest extends AbstractExpressionTest {
testFooBoxIsTrue("implicitItParameter.kt");
}
@Test
public void defaultParameters() throws Exception {
testFooBoxIsTrue("defaultParameters.kt");
}
@Test
public void kt921() throws Exception {
checkOutput("KT-921.kt", "");
@@ -0,0 +1,15 @@
package foo
fun f(a : Int = 2, b : Int = 3) = a + b
fun box() : Boolean
{
if (f(1,2) != 3) return false;
if (f(1,3) != 4) return false;
if (f(3) != 6) return false;
if (f() != 5) return false;
return true;
}