fix most of the tests

This commit is contained in:
Pavel Talanov
2012-01-23 16:58:55 +04:00
parent de75cfd007
commit e20dfedd1c
12 changed files with 415 additions and 395 deletions
+262 -294
View File
@@ -11,42 +11,22 @@
<component name="BookmarkManager">
<bookmark url="file://$PROJECT_DIR$/translator/testFiles/propertyAccess/cases/safeCallReturnsNullIfFails.kt" line="3" />
<bookmark url="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/K2JSTranslator.java" line="85" />
<bookmark url="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/DescriptorUtils.java" line="151" mnemonic="2" />
</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/kotlinLib/cases/hashMap.js" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/libImplementations/jshashset.js" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/libImplementations/jshashset_src.js" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/libImplementations/jshashtable-2.1.js" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/libImplementations/jshashtable-2.1_src.js" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/libImplementations/prototype.js" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/webDemoExamples2/cases/builder.kt" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/webDemoExamples2/cases/life.kt" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/webDemoExamples2/expected/bottles2.out" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/webDemoExamples2/expected/builder.out" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/webDemoExamples2/expected/life.out" />
<change type="DELETED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\testFiles\prototype.js" afterPath="" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/extensionFunction/cases/generic.kt" />
<change type="DELETED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\testFiles\examples\cases\enclosingThis.jet" afterPath="" />
<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/Aliaser.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/Aliaser.java" />
<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/context/TranslationContext.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/TranslationContext.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/declaration/NamespaceTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/declaration/NamespaceTranslator.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.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/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/reference/PropertyAccessTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/ReferenceAccessTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/ReferenceAccessTranslator.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.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/src/org/jetbrains/k2js/translate/utils/DescriptorUtils.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/DescriptorUtils.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.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/testFiles/webDemoExamples2/cases/bottles.kt" afterPath="$PROJECT_DIR$/translator/testFiles/webDemoExamples2/cases/bottles.kt" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/testFiles/webDemoExamples2/expected/bottles.out" afterPath="$PROJECT_DIR$/translator/testFiles/webDemoExamples2/expected/bottles.out" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/KotlinLibTest.java" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/KotlinLibTest.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/RhinoSystemOutputChecker.java" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/RhinoSystemOutputChecker.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/WebDemoExamples2Test.java" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/WebDemoExamples2Test.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ExtensionFunctionTest.java" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ExtensionFunctionTest.java" />
</list>
<ignored path="k2js.iws" />
<ignored path=".idea/workspace.xml" />
@@ -169,7 +149,7 @@
<option name="CONDITION" value="" />
<option name="LOG_MESSAGE" value="" />
</breakpoint>
<breakpoint url="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/BinaryOperationTranslator.java" line="89" class="org.jetbrains.k2js.translate.operation.BinaryOperationTranslator" package="org.jetbrains.k2js.translate.operation">
<breakpoint url="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java" line="195" class="org.jetbrains.k2js.translate.utils.BindingUtils" package="org.jetbrains.k2js.translate.utils">
<option name="ENABLED" value="true" />
<option name="LOG_ENABLED" value="false" />
<option name="LOG_EXPRESSION_ENABLED" value="false" />
@@ -182,20 +162,7 @@
<option name="CONDITION" value="" />
<option name="LOG_MESSAGE" value="" />
</breakpoint>
<breakpoint url="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java" line="206" class="org.jetbrains.k2js.translate.reference.CallTranslator" package="org.jetbrains.k2js.translate.reference">
<option name="ENABLED" value="true" />
<option name="LOG_ENABLED" value="false" />
<option name="LOG_EXPRESSION_ENABLED" value="false" />
<option name="SUSPEND_POLICY" value="SuspendAll" />
<option name="COUNT_FILTER_ENABLED" value="false" />
<option name="COUNT_FILTER" value="0" />
<option name="CONDITION_ENABLED" value="false" />
<option name="CLASS_FILTERS_ENABLED" value="false" />
<option name="INSTANCE_FILTERS_ENABLED" value="false" />
<option name="CONDITION" value="" />
<option name="LOG_MESSAGE" value="" />
</breakpoint>
<breakpoint url="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java" line="218" class="org.jetbrains.k2js.translate.reference.CallTranslator" package="org.jetbrains.k2js.translate.reference">
<breakpoint url="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java" line="180" class="org.jetbrains.k2js.translate.reference.PropertyAccessTranslator" package="org.jetbrains.k2js.translate.reference">
<option name="ENABLED" value="true" />
<option name="LOG_ENABLED" value="false" />
<option name="LOG_EXPRESSION_ENABLED" value="false" />
@@ -284,19 +251,47 @@
<file leaf-file-name="CallTranslator.java" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="286" column="58" selection-start="12986" selection-end="12986" vertical-scroll-proportion="0.7650794">
<state line="237" column="9" selection-start="11016" selection-end="11016" vertical-scroll-proportion="0.4638365">
<folding>
<element signature="e#6663#6677#0" expanded="true" />
<element signature="e#7148#7162#0" expanded="true" />
<element signature="e#6606#6620#0" expanded="true" />
<element signature="e#7091#7105#0" expanded="true" />
<element signature="e#10719#10733#0" expanded="true" />
</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">
<file leaf-file-name="TranslationUtils.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state line="16" column="46" selection-start="220" selection-end="220" vertical-scroll-proportion="0.0">
<state line="112" column="20" selection-start="5289" selection-end="5289" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ExpressionVisitor.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="390" column="67" selection-start="17669" selection-end="17669" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="extensionUsedInsideClass.kt" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/extensionFunction/cases/extensionUsedInsideClass.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="3" column="17" selection-start="53" selection-end="53" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="extensionInsideFunctionLiteral.kt" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/extensionFunction/cases/extensionInsideFunctionLiteral.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="21" column="27" selection-start="305" selection-end="305" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -305,14 +300,41 @@
<file leaf-file-name="PropertyAccessTranslator.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="24" column="88" selection-start="1366" selection-end="1366" vertical-scroll-proportion="0.0">
<state line="180" column="0" selection-start="8214" selection-end="8214" 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="31" column="16" selection-start="731" selection-end="731" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Aliaser.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/Aliaser.java">
<provider selected="true" editor-type-id="text-editor">
<state line="30" column="21" selection-start="870" selection-end="870" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
<element signature="e#741#779#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="FunctionTranslator.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/FunctionTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="189" column="48" selection-start="8152" selection-end="8152" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="BasicClassTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/BasicClassTest.java">
<provider selected="true" editor-type-id="text-editor">
@@ -322,60 +344,6 @@
</provider>
</entry>
</file>
<file leaf-file-name="ClassInheritanceTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ClassInheritanceTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="32" column="16" selection-start="732" selection-end="732" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="incrementProperty.kt" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/class/cases/incrementProperty.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="incrementProperty.js" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/class/out/incrementProperty.js">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" 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="37" column="16" selection-start="833" selection-end="833" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="DescriptorUtils.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/DescriptorUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state line="159" column="9" selection-start="6516" selection-end="6516" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="FunctionTranslator.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/FunctionTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="73" column="20" selection-start="3085" selection-end="3085" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
</leaf>
</split-first>
<split-second>
@@ -392,7 +360,7 @@
<file leaf-file-name="OperatorOverloadingTest.java" pinned="false" current="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/OperatorOverloadingTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="77" column="16" selection-start="1898" selection-end="1898" vertical-scroll-proportion="0.6597938">
<state line="74" column="15" selection-start="1870" selection-end="1870" vertical-scroll-proportion="0.5478615">
<folding />
</state>
</provider>
@@ -496,21 +464,21 @@
<component name="IdeDocumentHistory">
<option name="changedFiles">
<list>
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/StandardClasses.java" />
<option value="$PROJECT_DIR$/translator/testFiles/webDemoExamples2/cases/builder.kt" />
<option value="$PROJECT_DIR$/translator/testFiles/webDemoExamples2/out/builder.js" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/TranslationContext.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/ReferenceAccessTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java" />
<option value="$PROJECT_DIR$/translator/testFiles/class/out/methodDeclarationAndCall.js" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/Aliaser.java" />
<option value="$PROJECT_DIR$/translator/testFiles/class/out/constructorWithParameter.js" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/DescriptorUtils.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/FunctionTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/DescriptorUtils.java" />
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ExtensionFunctionTest.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/TranslationContext.java" />
<option value="$PROJECT_DIR$/translator/testFiles/extensionFunction/out/intExtension.js" />
<option value="$PROJECT_DIR$/translator/testFiles/extensionFunction/cases/generic.kt" />
<option value="$PROJECT_DIR$/translator/testFiles/extensionFunction/out/extensionUsedInsideClass.js" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/FunctionTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/Aliaser.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java" />
<option value="$PROJECT_DIR$/translator/testFiles/extensionFunction/cases/extensionUsedInsideClass.kt" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java" />
</list>
</option>
@@ -647,7 +615,7 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="class" />
<option name="myItemId" value="extensionFunction" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
@@ -669,7 +637,7 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="class" />
<option name="myItemId" value="extensionFunction" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
@@ -677,6 +645,24 @@
<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>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="k2js" />
@@ -982,8 +968,74 @@
</UpdatedFiles>
</UpdateInfo>
</component>
<component name="RunManager" selected="JUnit.BasicClassTest.incrementProperty">
<configuration default="false" name="BasicClassTest.classInstantiation" type="JUnit" factoryName="JUnit" temporary="true">
<component name="RunManager" selected="JUnit.tests">
<configuration default="false" name="ExtensionFunctionTest.intExtension" 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="intExtension" />
<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="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="ExtensionFunctionTest.extensionWithImplicitReceiver" 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="extensionWithImplicitReceiver" />
<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="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="ExtensionFunctionTest.extensionInsideFunctionLiteral" 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.*" />
@@ -992,14 +1044,14 @@
</extension>
<module name="jetTests" />
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
<option name="ALTERNATIVE_JRE_PATH" />
<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.BasicClassTest" />
<option name="METHOD_NAME" value="classInstantiation" />
<option name="MAIN_CLASS_NAME" value="org.jetbrains.k2js.test.ExtensionFunctionTest" />
<option name="METHOD_NAME" value="extensionInsideFunctionLiteral" />
<option name="TEST_OBJECT" value="method" />
<option name="VM_PARAMETERS" />
<option name="PARAMETERS" />
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
<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">
@@ -1012,59 +1064,45 @@
<option name="TRANSPORT" value="0" />
<option name="LOCAL" value="true" />
</RunnerSettings>
<RunnerSettings RunnerId="Run" />
<ConfigurationWrapper RunnerId="Debug" />
<ConfigurationWrapper RunnerId="Run" />
<method />
</configuration>
<configuration default="false" name="BasicClassTest.constructorWithParameter" 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" />
<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" value="" />
<option name="PACKAGE_NAME" value="org.jetbrains.k2js.test" />
<option name="MAIN_CLASS_NAME" value="org.jetbrains.k2js.test.BasicClassTest" />
<option name="METHOD_NAME" value="constructorWithParameter" />
<option name="TEST_OBJECT" value="method" />
<option name="PACKAGE_NAME" value="" />
<option name="MAIN_CLASS_NAME" value="" />
<option name="METHOD_NAME" value="" />
<option name="TEST_OBJECT" value="package" />
<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" />
<value defaultName="moduleWithDependencies" />
</option>
<envs />
<dir value="$PROJECT_DIR$/translator" />
<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="false" name="FunctionTest.functionUsedBeforeDeclaration" type="JUnit" factoryName="JUnit" temporary="true">
<configuration default="false" name="ExtensionFunctionTest.extensionUsedInsideClass" 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="PATTERN" value="org.jetbrains.k2js.test.*" />
<option name="ENABLED" value="true" />
</pattern>
</extension>
<module name="translator" />
<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.FunctionTest" />
<option name="METHOD_NAME" value="functionUsedBeforeDeclaration" />
<option name="MAIN_CLASS_NAME" value="org.jetbrains.k2js.test.ExtensionFunctionTest" />
<option name="METHOD_NAME" value="extensionUsedInsideClass" />
<option name="TEST_OBJECT" value="method" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" value="" />
@@ -1072,80 +1110,9 @@
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
<value defaultName="moduleWithDependencies" />
</option>
<envs />
<dir value="$PROJECT_DIR$/translator" />
<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="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.*" />
<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="loopClosure" />
<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="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="false" name="BasicClassTest.incrementProperty" 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.BasicClassTest" />
<option name="METHOD_NAME" value="incrementProperty" />
<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="Debug">
<option name="DEBUG_PORT" value="" />
@@ -1311,11 +1278,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.BasicClassTest.classInstantiation" />
<item index="3" class="java.lang.String" itemvalue="JUnit.BasicClassTest.constructorWithParameter" />
<item index="4" class="java.lang.String" itemvalue="JUnit.FunctionTest.functionUsedBeforeDeclaration" />
<item index="5" class="java.lang.String" itemvalue="JUnit.FunctionTest.loopClosure" />
<item index="6" class="java.lang.String" itemvalue="JUnit.BasicClassTest.incrementProperty" />
<item index="2" class="java.lang.String" itemvalue="JUnit.ExtensionFunctionTest.intExtension" />
<item index="3" class="java.lang.String" itemvalue="JUnit.ExtensionFunctionTest.extensionWithImplicitReceiver" />
<item index="4" class="java.lang.String" itemvalue="JUnit.ExtensionFunctionTest.extensionInsideFunctionLiteral" />
<item index="5" class="java.lang.String" itemvalue="JUnit.All in jetTests" />
<item index="6" class="java.lang.String" itemvalue="JUnit.ExtensionFunctionTest.extensionUsedInsideClass" />
</list>
<configuration name="&lt;template&gt;" type="WebApp" default="true" selected="false">
<Host>localhost</Host>
@@ -1378,7 +1345,7 @@
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32756963" sideWeight="0.4216996" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.24973261" sideWeight="0.7183908" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.34774256" sideWeight="0.7733832" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.34774256" sideWeight="0.7733832" order="3" side_tool="false" content_ui="tabs" />
<window_info id="IDEtalk Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32949087" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.29682997" sideWeight="0.14323892" order="11" side_tool="true" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
@@ -1390,8 +1357,8 @@
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.20363443" sideWeight="0.7588857" 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.6570605" 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.2383752" sideWeight="0.65225744" order="0" side_tool="false" content_ui="combo" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.34197888" 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.2383752" sideWeight="0.65802115" 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.34197888" 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" />
@@ -1436,7 +1403,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="migrated according to the last when changes" />
<option name="LAST_COMMIT_MESSAGE" value="Very big code migration started. Still in progress. Tests fail." />
<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" />
@@ -1449,7 +1416,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="more koltin lib clean up." />
<MESSAGE value="fixes in module structure.&#10;add workaround code for applet.&#10;add method needed for applet.&#10;" />
<MESSAGE value="refactoring intrinsics" />
<MESSAGE value="changed @author tag" />
@@ -1474,6 +1440,7 @@
<MESSAGE value="KT-962: Function is called two times &#10;safecall expression now compute receiver only once." />
<MESSAGE value="refactor and TODO clean-up" />
<MESSAGE value="migrated according to the last when changes" />
<MESSAGE value="Very big code migration started. Still in progress. Tests fail." />
</component>
<component name="XDebuggerManager">
<breakpoint-manager />
@@ -1483,102 +1450,58 @@
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.java">
<entry file="file://$PROJECT_DIR$/translator/testFiles/extensionFunction/out/generic.js">
<provider selected="true" editor-type-id="text-editor">
<state line="48" column="0" selection-start="2335" selection-end="2335" vertical-scroll-proportion="0.0">
<state line="12" column="29" selection-start="272" selection-end="272" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/MiscTest.java">
<entry file="file://$PROJECT_DIR$/translator/testFiles/extensionFunction/cases/generic.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="31" column="16" selection-start="765" selection-end="765" vertical-scroll-proportion="0.0">
<state line="0" column="11" selection-start="11" selection-end="11" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ExtensionFunctionTest.java">
<entry file="file://$PROJECT_DIR$/translator/testFiles/extensionFunction/out/extensionUsedInsideClass.js">
<provider selected="true" editor-type-id="text-editor">
<state line="16" column="16" selection-start="327" selection-end="327" vertical-scroll-proportion="0.0">
<state line="10" column="52" selection-start="223" selection-end="223" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java">
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/PropertyDescriptor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="205" column="35" selection-start="9730" selection-end="9730" vertical-scroll-proportion="0.0">
<state line="165" column="0" selection-start="5642" selection-end="5642" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ForTest.java">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/general/AbstractTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="17" column="16" selection-start="307" selection-end="307" 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/receivers/ReceiverDescriptor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="14" column="0" selection-start="347" selection-end="347" vertical-scroll-proportion="0.0">
<state line="26" column="0" selection-start="670" selection-end="670" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/DescriptorUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state line="159" column="9" selection-start="6516" selection-end="6516" 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="73" column="20" selection-start="3085" selection-end="3085" 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="37" column="16" selection-start="833" selection-end="833" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/function/cases/loopClosure.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="16" column="46" selection-start="220" selection-end="220" vertical-scroll-proportion="0.0">
<state line="151" column="40" selection-start="6074" selection-end="6074" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="24" column="88" selection-start="1366" selection-end="1366" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ClassInheritanceTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="32" column="16" selection-start="732" selection-end="732" vertical-scroll-proportion="0.0">
<state line="180" column="0" selection-start="8214" selection-end="8214" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/class/cases/incrementProperty.kt">
<entry file="file://$PROJECT_DIR$/translator/testFiles/extensionFunction/cases/extensionInsideFunctionLiteral.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/class/out/incrementProperty.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">
<state line="21" column="27" selection-start="305" selection-end="305" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -1590,12 +1513,57 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/Aliaser.java">
<provider selected="true" editor-type-id="text-editor">
<state line="30" column="21" selection-start="870" selection-end="870" vertical-scroll-proportion="0.0">
<folding>
<element signature="e#741#779#0" expanded="true" />
</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="189" column="48" selection-start="8152" selection-end="8152" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state line="112" column="20" selection-start="5289" selection-end="5289" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="390" column="67" selection-start="17669" selection-end="17669" 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="31" column="16" selection-start="731" selection-end="731" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/extensionFunction/cases/extensionUsedInsideClass.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="3" column="17" selection-start="53" selection-end="53" vertical-scroll-proportion="0.0">
<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="286" column="58" selection-start="12986" selection-end="12986" vertical-scroll-proportion="0.7650794">
<state line="237" column="9" selection-start="11016" selection-end="11016" vertical-scroll-proportion="0.4638365">
<folding>
<element signature="e#6663#6677#0" expanded="true" />
<element signature="e#7148#7162#0" expanded="true" />
<element signature="e#6606#6620#0" expanded="true" />
<element signature="e#7091#7105#0" expanded="true" />
<element signature="e#10719#10733#0" expanded="true" />
</folding>
</state>
</provider>
@@ -7,6 +7,7 @@ import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import java.util.HashMap;
import java.util.Map;
import java.util.Stack;
//TODO: code gets duplicated
public class Aliaser {
@@ -19,54 +20,46 @@ public class Aliaser {
@NotNull
private final Map<DeclarationDescriptor, JsName> aliasesForDescriptors = new HashMap<DeclarationDescriptor, JsName>();
@NotNull
private final Map<DeclarationDescriptor, JsName> aliasesForThis = new HashMap<DeclarationDescriptor, JsName>();
@NotNull
private final Map<DeclarationDescriptor, JsName> aliasesForReceiver = new HashMap<DeclarationDescriptor, JsName>();
private final Map<DeclarationDescriptor, Stack<JsName>> aliasesForThis
= new HashMap<DeclarationDescriptor, Stack<JsName>>();
private Aliaser() {
}
//TODO: refactor
@NotNull
public JsNameRef getAliasForThis(@NotNull DeclarationDescriptor descriptor) {
JsName aliasName = aliasesForThis.get(descriptor.getOriginal());
Stack<JsName> aliasStack = aliasesForThis.get(descriptor.getOriginal());
assert !aliasStack.empty();
JsName aliasName = aliasStack.peek();
assert aliasName != null : "This " + descriptor.getOriginal() + " doesn't have an alias.";
return aliasName.makeRef();
}
public void setAliasForThis(@NotNull DeclarationDescriptor descriptor, @NotNull JsName alias) {
aliasesForThis.put(descriptor.getOriginal(), alias);
Stack<JsName> aliasStack = aliasesForThis.get(descriptor.getOriginal());
if (aliasStack == null) {
aliasStack = new Stack<JsName>();
aliasesForThis.put(descriptor, aliasStack);
}
aliasStack.push(alias);
}
//TODO: make the reference null
public void removeAliasForThis(@NotNull DeclarationDescriptor descriptor) {
JsName removed = aliasesForThis.remove(descriptor.getOriginal());
assert removed != null;
Stack<JsName> aliasStack = aliasesForThis.get(descriptor.getOriginal());
assert !aliasStack.empty();
aliasStack.pop();
}
public boolean hasAliasForThis(@NotNull DeclarationDescriptor descriptor) {
return (aliasesForThis.containsKey(descriptor.getOriginal()));
Stack<JsName> aliasStack = aliasesForThis.get(descriptor.getOriginal());
if (aliasStack == null) {
return false;
}
return (!aliasStack.empty());
}
@NotNull
public JsNameRef getAliasForReceiver(@NotNull DeclarationDescriptor descriptor) {
JsName aliasName = aliasesForReceiver.get(descriptor.getOriginal());
assert aliasName != null : "This descriptor doesn't have an alias.";
return aliasName.makeRef();
}
public void setAliasForReceiver(@NotNull DeclarationDescriptor descriptor, @NotNull JsName alias) {
aliasesForReceiver.put(descriptor.getOriginal(), alias);
}
public void removeAliasForReceiver(@NotNull DeclarationDescriptor descriptor) {
JsName removed = aliasesForReceiver.remove(descriptor.getOriginal());
assert removed != null;
}
public boolean hasAliasForReceiver(@NotNull DeclarationDescriptor descriptor) {
return (aliasesForReceiver.containsKey(descriptor.getOriginal()));
}
@NotNull
public JsName getAliasForDeclaration(@NotNull DeclarationDescriptor declaration) {
JsName alias = aliasesForDescriptors.get(declaration.getOriginal());
@@ -165,9 +165,10 @@ public final class TranslationContext {
return dynamicContext.declareLocalVariable(declarationDescriptor);
}
//TODO: consider moving somewhere
@NotNull
public TemporaryVariable newAliasForThis(@NotNull DeclarationDescriptor descriptor) {
JsExpression thisQualifier = TranslationUtils.getThisQualifier(this, descriptor);
JsExpression thisQualifier = TranslationUtils.getThisObject(this, descriptor);
TemporaryVariable aliasForThis = dynamicContext.declareTemporary(thisQualifier);
aliaser().setAliasForThis(descriptor, aliasForThis.name());
return aliasForThis;
@@ -20,6 +20,7 @@ import org.jetbrains.k2js.translate.reference.AccessTranslator;
import org.jetbrains.k2js.translate.reference.CallTranslator;
import org.jetbrains.k2js.translate.reference.ReferenceTranslator;
import org.jetbrains.k2js.translate.utils.BindingUtils;
import org.jetbrains.k2js.translate.utils.TranslationUtils;
import java.util.List;
@@ -373,16 +374,16 @@ public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
return Translation.functionTranslator(expression, context).translateAsLiteral();
}
//TODO: refactor
//TODO: strange logic. look where it should be applied
@Override
@NotNull
public JsNode visitThisExpression(@NotNull JetThisExpression expression,
@NotNull TranslationContext context) {
DeclarationDescriptor descriptor =
getDescriptorForReferenceExpression(context.bindingContext(), expression.getInstanceReference());
if (context.aliaser().hasAliasForThis(descriptor)) {
return context.aliaser().getAliasForThis(descriptor);
}
return new JsThisRef();
return TranslationUtils.getThisObject(context, descriptor);
}
@Override
@@ -405,4 +406,4 @@ public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
@NotNull TranslationContext context) {
return TryTranslator.translate(expression, context);
}
}
}
@@ -3,10 +3,7 @@ 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.Modality;
import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor;
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.types.JetStandardClasses;
import org.jetbrains.jet.lang.types.JetType;
@@ -20,8 +17,7 @@ import java.util.ArrayList;
import java.util.List;
import static org.jetbrains.k2js.translate.utils.BindingUtils.getFunctionDescriptor;
import static org.jetbrains.k2js.translate.utils.DescriptorUtils.getExpectedReceiverDescriptor;
import static org.jetbrains.k2js.translate.utils.DescriptorUtils.getExpectedThisDescriptor;
import static org.jetbrains.k2js.translate.utils.DescriptorUtils.*;
import static org.jetbrains.k2js.translate.utils.TranslationUtils.functionWithScope;
@@ -70,17 +66,17 @@ public final class FunctionTranslator extends AbstractTranslator {
return new JsPropertyInitializer(functionName.makeRef(), function);
}
//TODO: refactor
@NotNull
public JsExpression translateAsLiteral() {
DeclarationDescriptor expectedThisDescriptor = getExpectedThisDescriptor(descriptor);
if (expectedThisDescriptor == null) {
assert getExpectedThisDescriptor(descriptor) == null;
ClassDescriptor containingClass = getContainingClass(descriptor);
if (containingClass == null) {
return generateFunctionObject();
}
TemporaryVariable aliasForThis = context().newAliasForThis(expectedThisDescriptor);
TemporaryVariable aliasForThis = context().newAliasForThis(containingClass);
JsFunction function = generateFunctionObject();
context().removeAliasForThis(expectedThisDescriptor);
context().removeAliasForThis(containingClass);
return AstUtil.newSequence(aliasForThis.assignmentExpression(), function);
}
@@ -95,14 +91,16 @@ public final class FunctionTranslator extends AbstractTranslator {
private void restoreContext() {
if (isExtensionFunction()) {
functionBodyContext.removeAliasForThis(getExpectedReceiverDescriptor(descriptor));
DeclarationDescriptor expectedReceiverDescriptor = getExpectedReceiverDescriptor(descriptor);
assert expectedReceiverDescriptor != null : "Extension functions should always have receiver descriptors.";
functionBodyContext.aliaser().removeAliasForThis(expectedReceiverDescriptor);
}
}
@NotNull
private JsFunction createFunctionObject() {
if (isDeclaration()) {
return functionWithScope
(context().getScopeForElement((JetDeclaration) functionDeclaration));
return functionWithScope(context().getScopeForElement((JetDeclaration) functionDeclaration));
}
if (isLiteral()) {
//TODO: look into
@@ -147,8 +145,8 @@ public final class FunctionTranslator extends AbstractTranslator {
List<JsStatement> statements = bodyBlock.getStatements();
int lastIndex = statements.size() - 1;
JsStatement lastStatement = statements.get(lastIndex);
statements.set(lastIndex,
new JsReturn(AstUtil.extractExpressionFromStatement(lastStatement)));
JsReturn returnStatement = new JsReturn(AstUtil.extractExpressionFromStatement(lastStatement));
statements.set(lastIndex, returnStatement);
}
@NotNull
@@ -186,7 +184,8 @@ public final class FunctionTranslator extends AbstractTranslator {
//TODO: dont do this
JsName receiver = functionBodyContext.jsScope().declareName(RECEIVER_PARAMETER_NAME);
DeclarationDescriptor expectedReceiverDescriptor = getExpectedReceiverDescriptor(descriptor);
context().aliaser().setAliasForReceiver(expectedReceiverDescriptor, receiver);
assert expectedReceiverDescriptor != null;
context().aliaser().setAliasForThis(expectedReceiverDescriptor, receiver);
jsParameters.add(new JsParameter(receiver));
}
}
@@ -12,19 +12,18 @@ import org.jetbrains.jet.lang.resolve.calls.DefaultValueArgument;
import org.jetbrains.jet.lang.resolve.calls.ResolvedCall;
import org.jetbrains.jet.lang.resolve.calls.ResolvedCallImpl;
import org.jetbrains.jet.lang.resolve.calls.ResolvedValueArgument;
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor;
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.*;
import static com.google.dart.compiler.util.AstUtil.not;
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.DescriptorUtils.*;
import static org.jetbrains.k2js.translate.utils.PsiUtils.*;
import static org.jetbrains.k2js.translate.utils.TranslationUtils.*;
@@ -187,7 +186,7 @@ public final class CallTranslator extends AbstractTranslator {
}
@Nullable
private final JsExpression receiver;
private JsExpression receiver;
@NotNull
private final List<JsExpression> arguments;
@@ -227,11 +226,19 @@ public final class CallTranslator extends AbstractTranslator {
return methodCall();
}
//TODO: refactor
@NotNull
private JsExpression extensionFunctionCall() {
List<JsExpression> argumentList = new ArrayList<JsExpression>();
if (receiver == null) {
DeclarationDescriptor expectedReceiverDescriptor = getExpectedReceiverDescriptor(descriptor);
assert expectedReceiverDescriptor != null;
receiver = getThisObject(context(), expectedReceiverDescriptor);
}
argumentList.add(receiver);
argumentList.addAll(arguments);
//Now the rest of the code can work as if it was simple method invocation
receiver = null;
return AstUtil.newInvocation(calleeReference(), argumentList);
}
@@ -263,7 +270,7 @@ public final class CallTranslator extends AbstractTranslator {
@NotNull
private JsExpression calleeReference() {
if (DescriptorUtils.isVariableDescriptor(descriptor)) {
if (isVariableDescriptor(descriptor)) {
//TODO: write tests on this cases
VariableDescriptor variableDescriptor =
getVariableDescriptorForVariableAsFunction((VariableAsFunctionDescriptor) descriptor);
@@ -282,23 +289,26 @@ public final class CallTranslator extends AbstractTranslator {
@NotNull
private JsExpression qualifiedMethodReference(@NotNull DeclarationDescriptor descriptor) {
JsExpression methodReference = ReferenceTranslator.translateAsLocalNameReference(descriptor, context());
//TODO: should insert checks for IMPLICIT RECEIVER
if (isExtensionFunction()) {
return extensionFunctionReference(methodReference);
} else if (receiver != null) {
AstUtil.setQualifier(methodReference, receiver);
JsExpression thisObject = thisObject();
if (thisObject == null) {
return ReferenceTranslator.translateAsFQReference(descriptor, context());
}
JsExpression methodReference = ReferenceTranslator.translateAsLocalNameReference(descriptor, context());
AstUtil.setQualifier(methodReference, thisObject);
return methodReference;
}
@NotNull
private JsExpression extensionFunctionReference(@NotNull JsExpression methodReference) {
JsExpression qualifier = TranslationUtils.getImplicitReceiver(context(), resolvedCall.getReceiverArgument());
if (qualifier != null) {
AstUtil.setQualifier(methodReference, qualifier);
@Nullable
private JsExpression thisObject() {
if (receiver != null) {
return receiver;
}
return methodReference;
ReceiverDescriptor thisObject = resolvedCall.getThisObject();
if (!thisObject.exists()) {
return null;
}
DeclarationDescriptor expectedThisDescriptor = getDeclarationDescriptorForReceiver(thisObject);
return TranslationUtils.getThisObject(context(), expectedThisDescriptor);
}
@NotNull
@@ -31,8 +31,9 @@ public final class ReferenceTranslator {
@NotNull
public static JsExpression translateAsFQReference(@NotNull DeclarationDescriptor referencedDescriptor,
@NotNull TranslationContext context) {
assert context.hasQualifierForDescriptor(referencedDescriptor);
if (!context.hasQualifierForDescriptor(referencedDescriptor)) {
return translateAsLocalNameReference(referencedDescriptor, context);
}
JsName referencedName = context.getNameForDescriptor(referencedDescriptor);
JsExpression qualifier = context.getQualifierForDescriptor(referencedDescriptor);
return AstUtil.qualified(referencedName, qualifier);
@@ -140,11 +140,17 @@ public final class DescriptorUtils {
//TODO: why callable descriptor
@Nullable
public static DeclarationDescriptor getExpectedThisDescriptor(@NotNull CallableDescriptor functionDescriptor) {
ReceiverDescriptor receiverParameter = functionDescriptor.getReceiverParameter();
if (!receiverParameter.exists()) {
public static DeclarationDescriptor getExpectedThisDescriptor(@NotNull CallableDescriptor callableDescriptor) {
ReceiverDescriptor expectedThisObject = callableDescriptor.getExpectedThisObject();
if (!expectedThisObject.exists()) {
return null;
}
return getDeclarationDescriptorForReceiver(expectedThisObject);
}
@NotNull
public static DeclarationDescriptor getDeclarationDescriptorForReceiver
(@NotNull ReceiverDescriptor receiverParameter) {
DeclarationDescriptor declarationDescriptor =
receiverParameter.getType().getConstructor().getDeclarationDescriptor();
//TODO: WHY assert?
@@ -153,14 +159,25 @@ public final class DescriptorUtils {
}
@Nullable
public static DeclarationDescriptor getExpectedReceiverDescriptor(@NotNull CallableDescriptor functionDescriptor) {
ReceiverDescriptor receiverParameter = functionDescriptor.getReceiverParameter();
public static DeclarationDescriptor getExpectedReceiverDescriptor(@NotNull CallableDescriptor callableDescriptor) {
ReceiverDescriptor receiverParameter = callableDescriptor.getReceiverParameter();
if (!receiverParameter.exists()) {
return null;
}
DeclarationDescriptor declarationDescriptor =
functionDescriptor.getReceiverParameter().getType().getConstructor().getDeclarationDescriptor();
assert declarationDescriptor != null;
return declarationDescriptor.getOriginal();
return getDeclarationDescriptorForReceiver(receiverParameter);
}
//TODO: maybe we have similar routine
@Nullable
public static ClassDescriptor getContainingClass(@NotNull DeclarationDescriptor descriptor) {
DeclarationDescriptor containing = descriptor.getContainingDeclaration();
while (containing != null) {
if (containing instanceof ClassDescriptor) {
return (ClassDescriptor) containing;
}
containing = containing.getContainingDeclaration();
}
return null;
}
}
@@ -4,6 +4,7 @@ import com.google.dart.compiler.backend.js.ast.*;
import com.google.dart.compiler.util.AstUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
import org.jetbrains.jet.lang.descriptors.PropertyDescriptor;
@@ -17,6 +18,7 @@ import java.util.ArrayList;
import java.util.List;
import static org.jetbrains.k2js.translate.utils.BindingUtils.*;
import static org.jetbrains.k2js.translate.utils.DescriptorUtils.getExpectedReceiverDescriptor;
/**
* @author Pavel Talanov
@@ -108,16 +110,27 @@ public final class TranslationUtils {
return reference;
}
//TODO: refactor
@NotNull
public static JsExpression getThisQualifier(@NotNull TranslationContext context,
@NotNull DeclarationDescriptor correspondingDeclaration) {
JsExpression qualifier;
if (context.aliaser().hasAliasForThis(correspondingDeclaration)) {
qualifier = context.aliaser().getAliasForThis(correspondingDeclaration);
} else {
qualifier = new JsThisRef();
public static JsExpression getThisObject(@NotNull TranslationContext context,
@NotNull DeclarationDescriptor correspondingDeclaration) {
JsExpression thisRef = null;
if (correspondingDeclaration instanceof ClassDescriptor) {
if (context.aliaser().hasAliasForThis(correspondingDeclaration)) {
thisRef = context.aliaser().getAliasForThis(correspondingDeclaration);
}
}
return qualifier;
if (correspondingDeclaration instanceof FunctionDescriptor) {
DeclarationDescriptor receiverDescriptor = getExpectedReceiverDescriptor((FunctionDescriptor) correspondingDeclaration);
assert receiverDescriptor != null;
if (context.aliaser().hasAliasForThis(receiverDescriptor)) {
thisRef = context.aliaser().getAliasForThis(receiverDescriptor);
}
}
if (thisRef != null) {
return thisRef;
}
return new JsThisRef();
}
@NotNull
@@ -196,7 +209,7 @@ public final class TranslationUtils {
DeclarationDescriptor correspondingDescriptor =
receiverDescriptor.getType().getConstructor().getDeclarationDescriptor();
assert correspondingDescriptor != null;
return context.aliaser().getAliasForReceiver(correspondingDescriptor);
return context.aliaser().getAliasForThis(correspondingDescriptor);
}
@Nullable
@@ -52,4 +52,9 @@ public final class ExtensionFunctionTest extends TranslationTest {
public void extensionInsideFunctionLiteral() throws Exception {
testFooBoxIsTrue("extensionInsideFunctionLiteral.kt");
}
@Test
public void genericExtension() throws Exception {
testFooBoxIsOk("generic.kt");
}
}
@@ -1,12 +0,0 @@
class Point(val x:Int, val y:Int) {
fun mul() : (scalar:Int)->Point {
return { (scalar:Int):Point -> Point(x * scalar, y * scalar) }
}
}
val m = Point(2, 3).mul() : (scalar:Int)->Point
fun box() : String {
val answer = m(5)
return if (answer.x == 10 && answer.y == 15) "OK" else "FAIL"
}
@@ -0,0 +1,24 @@
package foo
import java.util.*
fun <T> ArrayList<T>.findAll(predicate: (T) -> Boolean): ArrayList<T> {
val result = ArrayList<T>()
for(val t in this) {
if (predicate(t)) result.add(t)
}
return result
}
fun box(): String {
val list: ArrayList<Int> = ArrayList<Int>()
list.add(2)
list.add(3)
list.add(5)
val m: ArrayList<Int> = list.findAll<Int>({(name: Int) -> name < 4})
return if (m.size() == 2) "OK" else "fail"
}