builder example working
This commit is contained in:
Generated
+302
-269
@@ -14,14 +14,11 @@
|
|||||||
<bookmark url="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/DescriptorUtils.java" line="151" mnemonic="2" />
|
<bookmark url="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/DescriptorUtils.java" line="151" mnemonic="2" />
|
||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="f02ef53d-47a4-4f5e-a1aa-3df68aae9b20" name="Default" comment="">
|
<list default="true" id="f02ef53d-47a4-4f5e-a1aa-3df68aae9b20" name="Default" comment="refactor qualifi">
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
|
<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/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/reference/ArrayAccessTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/ArrayAccessTranslator.java" />
|
||||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/QualifiedExpressionTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/QualifiedExpressionTranslator.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/reference/AccessTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/AccessTranslator.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/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/utils/PsiUtils.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/PsiUtils.java" />
|
|
||||||
</list>
|
</list>
|
||||||
<ignored path="k2js.iws" />
|
<ignored path="k2js.iws" />
|
||||||
<ignored path=".idea/workspace.xml" />
|
<ignored path=".idea/workspace.xml" />
|
||||||
@@ -170,19 +167,6 @@
|
|||||||
<option name="CONDITION" value="" />
|
<option name="CONDITION" value="" />
|
||||||
<option name="LOG_MESSAGE" value="" />
|
<option name="LOG_MESSAGE" value="" />
|
||||||
</breakpoint>
|
</breakpoint>
|
||||||
<breakpoint url="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java" line="234" 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>
|
|
||||||
</line_breakpoints>
|
</line_breakpoints>
|
||||||
<breakpoint_any>
|
<breakpoint_any>
|
||||||
<breakpoint>
|
<breakpoint>
|
||||||
@@ -240,35 +224,26 @@
|
|||||||
<favorites_list name="k2js" />
|
<favorites_list name="k2js" />
|
||||||
</component>
|
</component>
|
||||||
<component name="FileEditorManager">
|
<component name="FileEditorManager">
|
||||||
<splitter split-orientation="horizontal" split-proportion="0.8652631">
|
<splitter split-orientation="horizontal" split-proportion="0.50187063">
|
||||||
<split-first>
|
<split-first>
|
||||||
<leaf>
|
<leaf>
|
||||||
<file leaf-file-name="CallTranslator.java" pinned="false" current="false" current-in-tab="false">
|
<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">
|
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state line="76" column="0" selection-start="3399" selection-end="3399" vertical-scroll-proportion="0.0">
|
<state line="124" column="31" selection-start="6169" selection-end="6169" vertical-scroll-proportion="0.0">
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="e#5848#5862#0" expanded="true" />
|
<element signature="e#6022#6036#0" expanded="true" />
|
||||||
<element signature="e#6333#6347#0" expanded="true" />
|
<element signature="e#6507#6521#0" expanded="true" />
|
||||||
<element signature="e#9765#9779#0" expanded="true" />
|
<element signature="e#9939#9953#0" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
</file>
|
</file>
|
||||||
<file leaf-file-name="safecallComputesExpressionOnlyOnce.kt" pinned="false" current="false" current-in-tab="false">
|
|
||||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/misc/cases/safecallComputesExpressionOnlyOnce.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="QualifiedExpressionTranslator.java" pinned="false" current="false" current-in-tab="false">
|
<file leaf-file-name="QualifiedExpressionTranslator.java" pinned="false" current="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/QualifiedExpressionTranslator.java">
|
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/QualifiedExpressionTranslator.java">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state line="91" column="0" selection-start="4690" selection-end="4690" vertical-scroll-proportion="0.0">
|
<state line="24" column="71" selection-start="956" selection-end="956" vertical-scroll-proportion="0.0">
|
||||||
<folding>
|
<folding>
|
||||||
<element signature="imports" expanded="true" />
|
<element signature="imports" expanded="true" />
|
||||||
</folding>
|
</folding>
|
||||||
@@ -276,6 +251,24 @@
|
|||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
</file>
|
</file>
|
||||||
|
<file leaf-file-name="ArrayAccessTranslator.java" pinned="false" current="false" current-in-tab="true">
|
||||||
|
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/ArrayAccessTranslator.java">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state line="74" column="10" selection-start="2727" selection-end="2727" vertical-scroll-proportion="0.4326123">
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file leaf-file-name="BindingUtils.java" pinned="false" current="false" current-in-tab="false">
|
||||||
|
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state line="183" column="40" selection-start="8817" selection-end="8817" vertical-scroll-proportion="0.0">
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
<file leaf-file-name="PsiUtils.java" pinned="false" current="false" current-in-tab="false">
|
<file leaf-file-name="PsiUtils.java" pinned="false" current="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/PsiUtils.java">
|
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/PsiUtils.java">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
@@ -303,28 +296,10 @@
|
|||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
</file>
|
</file>
|
||||||
<file leaf-file-name="ReferenceTranslator.java" pinned="false" current="false" current-in-tab="false">
|
<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/reference/ReferenceTranslator.java">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state line="23" column="91" selection-start="1094" selection-end="1094" 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">
|
|
||||||
<state line="32" column="16" selection-start="699" selection-end="699" vertical-scroll-proportion="0.0">
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file leaf-file-name="ExpressionVisitor.java" pinned="false" current="true" current-in-tab="true">
|
|
||||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java">
|
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state line="118" column="57" selection-start="5365" selection-end="5365" vertical-scroll-proportion="0.39779875">
|
<state line="118" column="57" selection-start="5365" selection-end="5365" vertical-scroll-proportion="0.0">
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
@@ -343,73 +318,46 @@
|
|||||||
</split-first>
|
</split-first>
|
||||||
<split-second>
|
<split-second>
|
||||||
<leaf>
|
<leaf>
|
||||||
<file leaf-file-name="kotlin_lib.js" pinned="false" current="false" current-in-tab="false">
|
|
||||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/kotlin_lib.js">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state line="869" column="43" selection-start="22874" selection-end="22874" vertical-scroll-proportion="-11.653846">
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<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="47" column="16" selection-start="1070" selection-end="1070" vertical-scroll-proportion="0.33197555">
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file leaf-file-name="hashMap.js" pinned="false" current="false" current-in-tab="false">
|
|
||||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/kotlinLib/cases/hashMap.js">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state line="20" column="18" selection-start="727" selection-end="727" vertical-scroll-proportion="0.0">
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file leaf-file-name="life.kt" pinned="false" current="false" current-in-tab="false">
|
|
||||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/webDemoExamples2/cases/life.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state line="5" column="16" selection-start="143" selection-end="143" vertical-scroll-proportion="0.0">
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file leaf-file-name="KotlinLibTest.java" pinned="false" current="false" current-in-tab="false">
|
|
||||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/KotlinLibTest.java">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state line="126" column="16" selection-start="4447" selection-end="4447" vertical-scroll-proportion="0.0">
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file leaf-file-name="bottles.kt" pinned="false" current="false" current-in-tab="false">
|
|
||||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/webDemoExamples2/cases/bottles.kt">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state line="74" column="3" selection-start="2344" selection-end="2344" vertical-scroll-proportion="0.0">
|
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
</file>
|
|
||||||
<file leaf-file-name="builder.kt" pinned="false" current="false" current-in-tab="false">
|
<file leaf-file-name="builder.kt" pinned="false" current="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/webDemoExamples2/cases/builder.kt">
|
<entry file="file://$PROJECT_DIR$/translator/testFiles/webDemoExamples2/cases/builder.kt">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state line="9" column="0" selection-start="320" selection-end="320" vertical-scroll-proportion="0.0">
|
<state line="64" column="36" selection-start="1587" selection-end="1587" vertical-scroll-proportion="0.0">
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
</file>
|
</file>
|
||||||
<file leaf-file-name="bottles.out" pinned="false" current="false" current-in-tab="false">
|
<file leaf-file-name="builder.js" pinned="false" current="false" current-in-tab="false">
|
||||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/webDemoExamples2/expected/bottles.out">
|
<entry file="file://$PROJECT_DIR$/translator/testFiles/webDemoExamples2/out/builder.js">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state line="300" column="0" selection-start="11552" selection-end="11552" vertical-scroll-proportion="0.0">
|
<state line="2" column="47" selection-start="71" selection-end="77" vertical-scroll-proportion="-1.3076923">
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file leaf-file-name="ECMAScript.js2" pinned="false" current="false" current-in-tab="false">
|
||||||
|
<entry file="jar://$APPLICATION_HOME_DIR$/plugins/JavaScriptLanguage/lib/JavascriptLanguage.jar!/com/intellij/lang/javascript/index/predefined/ECMAScript.js2">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state line="32" column="25" selection-start="1449" selection-end="1449" vertical-scroll-proportion="0.0">
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file leaf-file-name="kotlin_lib.js" pinned="false" current="false" current-in-tab="false">
|
||||||
|
<entry file="file://$PROJECT_DIR$/translator/testFiles/kotlin_lib.js">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state line="899" column="31" selection-start="26085" selection-end="26085" vertical-scroll-proportion="-13.423077">
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file leaf-file-name="WebDemoExamples1Test.java" pinned="false" current="false" current-in-tab="false">
|
||||||
|
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/WebDemoExamples1Test.java">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state line="74" column="16" selection-start="2068" selection-end="2068" vertical-scroll-proportion="0.0">
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
@@ -435,6 +383,33 @@
|
|||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
</file>
|
</file>
|
||||||
|
<file leaf-file-name="WebDemoExamples2Test.java" pinned="false" current="true" current-in-tab="true">
|
||||||
|
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/WebDemoExamples2Test.java">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state line="28" column="16" selection-start="566" selection-end="566" vertical-scroll-proportion="0.723127">
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file leaf-file-name="TranslationTest.java" pinned="false" current="false" current-in-tab="false">
|
||||||
|
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/TranslationTest.java">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state line="129" column="32" selection-start="4104" selection-end="4104" vertical-scroll-proportion="0.0">
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
|
<file leaf-file-name="RhinoSystemOutputChecker.java" pinned="false" current="false" current-in-tab="false">
|
||||||
|
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/RhinoSystemOutputChecker.java">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state line="32" column="9" selection-start="1021" selection-end="1021" vertical-scroll-proportion="0.0">
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
</file>
|
||||||
</leaf>
|
</leaf>
|
||||||
</split-second>
|
</split-second>
|
||||||
</splitter>
|
</splitter>
|
||||||
@@ -459,10 +434,6 @@
|
|||||||
<component name="IdeDocumentHistory">
|
<component name="IdeDocumentHistory">
|
||||||
<option name="changedFiles">
|
<option name="changedFiles">
|
||||||
<list>
|
<list>
|
||||||
<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/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/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/context/Aliaser.java" />
|
||||||
@@ -475,6 +446,10 @@
|
|||||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java" />
|
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java" />
|
||||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/QualifiedExpressionTranslator.java" />
|
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/QualifiedExpressionTranslator.java" />
|
||||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java" />
|
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java" />
|
||||||
|
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/ArrayAccessTranslator.java" />
|
||||||
|
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/RhinoSystemOutputChecker.java" />
|
||||||
|
<option value="$PROJECT_DIR$/translator/testFiles/webDemoExamples2/out/builder.js" />
|
||||||
|
<option value="$PROJECT_DIR$/translator/testFiles/kotlin_lib.js" />
|
||||||
</list>
|
</list>
|
||||||
</option>
|
</option>
|
||||||
</component>
|
</component>
|
||||||
@@ -596,6 +571,68 @@
|
|||||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||||
</PATH_ELEMENT>
|
</PATH_ELEMENT>
|
||||||
</PATH>
|
</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="webDemoExamples2" />
|
||||||
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||||
|
</PATH_ELEMENT>
|
||||||
|
<PATH_ELEMENT>
|
||||||
|
<option name="myItemId" value="out" />
|
||||||
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||||
|
</PATH_ELEMENT>
|
||||||
|
</PATH>
|
||||||
|
<PATH>
|
||||||
|
<PATH_ELEMENT>
|
||||||
|
<option name="myItemId" value="k2js" />
|
||||||
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||||
|
</PATH_ELEMENT>
|
||||||
|
<PATH_ELEMENT>
|
||||||
|
<option name="myItemId" value="translator" />
|
||||||
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||||
|
</PATH_ELEMENT>
|
||||||
|
<PATH_ELEMENT>
|
||||||
|
<option name="myItemId" value="testFiles" />
|
||||||
|
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||||
|
</PATH_ELEMENT>
|
||||||
|
<PATH_ELEMENT>
|
||||||
|
<option name="myItemId" value="webDemoExamples2" />
|
||||||
|
<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="webDemoExamples2" />
|
||||||
|
<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>
|
||||||
<PATH_ELEMENT>
|
<PATH_ELEMENT>
|
||||||
<option name="myItemId" value="k2js" />
|
<option name="myItemId" value="k2js" />
|
||||||
@@ -1065,95 +1102,7 @@
|
|||||||
</UpdatedFiles>
|
</UpdatedFiles>
|
||||||
</UpdateInfo>
|
</UpdateInfo>
|
||||||
</component>
|
</component>
|
||||||
<component name="RunManager" selected="JUnit.All in jetTests">
|
<component name="RunManager" selected="JUnit.WebDemoExamples2Test">
|
||||||
<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.*" />
|
|
||||||
<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.ExtensionFunctionTest" />
|
|
||||||
<option name="METHOD_NAME" value="extensionInsideFunctionLiteral" />
|
|
||||||
<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="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="" />
|
|
||||||
<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="moduleWithDependencies" />
|
|
||||||
</option>
|
|
||||||
<envs />
|
|
||||||
<patterns />
|
|
||||||
<RunnerSettings RunnerId="Run" />
|
|
||||||
<ConfigurationWrapper RunnerId="Run" />
|
|
||||||
<method />
|
|
||||||
</configuration>
|
|
||||||
<configuration default="false" name="ExtensionFunctionTest.extensionUsedInsideClass" 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">
|
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
|
||||||
<pattern>
|
<pattern>
|
||||||
@@ -1219,6 +1168,96 @@
|
|||||||
<ConfigurationWrapper RunnerId="Debug" />
|
<ConfigurationWrapper RunnerId="Debug" />
|
||||||
<method />
|
<method />
|
||||||
</configuration>
|
</configuration>
|
||||||
|
<configuration default="false" name="WebDemoExamples2Test.builder" 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.WebDemoExamples2Test" />
|
||||||
|
<option name="METHOD_NAME" value="builder" />
|
||||||
|
<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="false" name="WebDemoExamples1Test" 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.WebDemoExamples1Test" />
|
||||||
|
<option name="METHOD_NAME" value="" />
|
||||||
|
<option name="TEST_OBJECT" value="class" />
|
||||||
|
<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="Run" />
|
||||||
|
<ConfigurationWrapper RunnerId="Run" />
|
||||||
|
<method />
|
||||||
|
</configuration>
|
||||||
|
<configuration default="false" name="WebDemoExamples2Test" 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.WebDemoExamples2Test" />
|
||||||
|
<option name="METHOD_NAME" value="" />
|
||||||
|
<option name="TEST_OBJECT" value="class" />
|
||||||
|
<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="Run" />
|
||||||
|
<ConfigurationWrapper RunnerId="Run" />
|
||||||
|
<method />
|
||||||
|
</configuration>
|
||||||
<configuration default="true" type="Remote" factoryName="Remote">
|
<configuration default="true" type="Remote" factoryName="Remote">
|
||||||
<option name="USE_SOCKET_TRANSPORT" value="true" />
|
<option name="USE_SOCKET_TRANSPORT" value="true" />
|
||||||
<option name="SERVER_MODE" value="false" />
|
<option name="SERVER_MODE" value="false" />
|
||||||
@@ -1375,11 +1414,11 @@
|
|||||||
<list size="7">
|
<list size="7">
|
||||||
<item index="0" class="java.lang.String" itemvalue="Applet.Applet" />
|
<item index="0" class="java.lang.String" itemvalue="Applet.Applet" />
|
||||||
<item index="1" class="java.lang.String" itemvalue="JUnit.tests" />
|
<item index="1" class="java.lang.String" itemvalue="JUnit.tests" />
|
||||||
<item index="2" class="java.lang.String" itemvalue="JUnit.ExtensionFunctionTest.extensionWithImplicitReceiver" />
|
<item index="2" class="java.lang.String" itemvalue="JUnit.ExtensionFunctionTest.extensionUsedInsideClass" />
|
||||||
<item index="3" class="java.lang.String" itemvalue="JUnit.ExtensionFunctionTest.extensionInsideFunctionLiteral" />
|
<item index="3" class="java.lang.String" itemvalue="JUnit.WebDemoExamples1Test.isCheck" />
|
||||||
<item index="4" class="java.lang.String" itemvalue="JUnit.All in jetTests" />
|
<item index="4" class="java.lang.String" itemvalue="JUnit.WebDemoExamples2Test.builder" />
|
||||||
<item index="5" class="java.lang.String" itemvalue="JUnit.ExtensionFunctionTest.extensionUsedInsideClass" />
|
<item index="5" class="java.lang.String" itemvalue="JUnit.WebDemoExamples1Test" />
|
||||||
<item index="6" class="java.lang.String" itemvalue="JUnit.WebDemoExamples1Test.isCheck" />
|
<item index="6" class="java.lang.String" itemvalue="JUnit.WebDemoExamples2Test" />
|
||||||
</list>
|
</list>
|
||||||
<configuration name="<template>" type="WebApp" default="true" selected="false">
|
<configuration name="<template>" type="WebApp" default="true" selected="false">
|
||||||
<Host>localhost</Host>
|
<Host>localhost</Host>
|
||||||
@@ -1455,7 +1494,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.6570605" order="4" side_tool="false" 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="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.65802115" order="0" side_tool="false" content_ui="combo" />
|
<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="Run" active="false" 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="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="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
||||||
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
<window_info id="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" />
|
||||||
@@ -1500,7 +1539,7 @@
|
|||||||
<option name="CREATE_PATCH_EXPAND_DETAILS_DEFAULT" value="true" />
|
<option name="CREATE_PATCH_EXPAND_DETAILS_DEFAULT" value="true" />
|
||||||
<option name="SHOW_FILE_HISTORY_DETAILS" value="true" />
|
<option name="SHOW_FILE_HISTORY_DETAILS" value="true" />
|
||||||
<option name="FORCE_NON_EMPTY_COMMENT" value="false" />
|
<option name="FORCE_NON_EMPTY_COMMENT" value="false" />
|
||||||
<option name="LAST_COMMIT_MESSAGE" value="refactor access translator logic" />
|
<option name="LAST_COMMIT_MESSAGE" value="refactor qualified expression translation" />
|
||||||
<option name="MAKE_NEW_CHANGELIST_ACTIVE" value="true" />
|
<option name="MAKE_NEW_CHANGELIST_ACTIVE" value="true" />
|
||||||
<option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="true" />
|
<option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="true" />
|
||||||
<option name="CHECK_FILES_UP_TO_DATE_BEFORE_COMMIT" value="false" />
|
<option name="CHECK_FILES_UP_TO_DATE_BEFORE_COMMIT" value="false" />
|
||||||
@@ -1536,8 +1575,8 @@
|
|||||||
<MESSAGE value="migrated according to the last when changes" />
|
<MESSAGE value="migrated according to the last when changes" />
|
||||||
<MESSAGE value="Very big code migration started. Still in progress. Tests fail." />
|
<MESSAGE value="Very big code migration started. Still in progress. Tests fail." />
|
||||||
<MESSAGE value="fix most of the tests" />
|
<MESSAGE value="fix most of the tests" />
|
||||||
<MESSAGE value="refactor qualified expression translation" />
|
|
||||||
<MESSAGE value="refactor access translator logic" />
|
<MESSAGE value="refactor access translator logic" />
|
||||||
|
<MESSAGE value="refactor qualified expression translation" />
|
||||||
</component>
|
</component>
|
||||||
<component name="XDebuggerManager">
|
<component name="XDebuggerManager">
|
||||||
<breakpoint-manager />
|
<breakpoint-manager />
|
||||||
@@ -1547,9 +1586,37 @@
|
|||||||
<option name="FILTER_TARGETS" value="false" />
|
<option name="FILTER_TARGETS" value="false" />
|
||||||
</component>
|
</component>
|
||||||
<component name="editorHistoryManager">
|
<component name="editorHistoryManager">
|
||||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ExtensionFunctionTest.java">
|
<entry file="jar://$PROJECT_DIR$/translator/lib/js.jar!/org/mozilla/javascript/ScriptRuntime.class">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state line="31" column="16" selection-start="731" selection-end="731" vertical-scroll-proportion="0.0">
|
<state line="492" column="0" selection-start="34118" selection-end="34118" vertical-scroll-proportion="2.3628762">
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/translator/testFiles/kotlinLib/cases/hashMap.js">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state line="20" column="18" selection-start="727" selection-end="727" vertical-scroll-proportion="0.0">
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/ArrayAccessTranslator.java">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state line="74" column="10" selection-start="2727" selection-end="2727" vertical-scroll-proportion="0.4326123">
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/translator/testFiles/webDemoExamples2/cases/life.kt">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state line="5" column="16" selection-start="143" selection-end="143" vertical-scroll-proportion="0.0">
|
||||||
|
<folding />
|
||||||
|
</state>
|
||||||
|
</provider>
|
||||||
|
</entry>
|
||||||
|
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/KotlinLibTest.java">
|
||||||
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
|
<state line="126" column="16" selection-start="4447" selection-end="4447" vertical-scroll-proportion="0.0">
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
@@ -1561,106 +1628,72 @@
|
|||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/extensionFunction/cases/extensionUsedInsideClass.kt">
|
<entry file="file://$PROJECT_DIR$/translator/testFiles/webDemoExamples2/cases/bottles.kt">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state line="3" column="17" selection-start="53" selection-end="53" vertical-scroll-proportion="0.0">
|
<state line="74" column="3" selection-start="2344" selection-end="2344" vertical-scroll-proportion="0.0">
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/webDemoExamples1/cases/isCheck.kt">
|
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/TranslationTest.java">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<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="129" column="32" selection-start="4104" selection-end="4104" vertical-scroll-proportion="0.0">
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/WebDemoExamples2Test.java">
|
<entry file="file://$PROJECT_DIR$/translator/testFiles/webDemoExamples2/expected/bottles.out">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state line="28" column="16" selection-start="566" selection-end="566" vertical-scroll-proportion="0.0">
|
<state line="300" column="0" selection-start="11552" selection-end="11552" vertical-scroll-proportion="0.0">
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/misc/cases/safecallComputesExpressionOnlyOnce.kt">
|
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/RhinoSystemOutputChecker.java">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<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="32" column="9" selection-start="1021" selection-end="1021" vertical-scroll-proportion="0.0">
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/BasicClassTest.java">
|
<entry file="file://$PROJECT_DIR$/translator/testFiles/webDemoExamples2/cases/builder.kt">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state line="32" column="16" selection-start="699" selection-end="699" vertical-scroll-proportion="0.0">
|
<state line="64" column="36" selection-start="1587" selection-end="1587" vertical-scroll-proportion="0.0">
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/OperatorOverloadingTest.java">
|
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/OperatorOverloadingTest.java">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state line="47" column="16" selection-start="1070" selection-end="1070" vertical-scroll-proportion="0.33197555">
|
<state line="47" column="16" selection-start="1070" selection-end="1070" vertical-scroll-proportion="0.0">
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.java">
|
<entry file="jar://$APPLICATION_HOME_DIR$/plugins/JavaScriptLanguage/lib/JavascriptLanguage.jar!/com/intellij/lang/javascript/index/predefined/ECMAScript.js2">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state line="23" column="91" selection-start="1094" selection-end="1094" vertical-scroll-proportion="0.0">
|
<state line="32" column="25" selection-start="1449" selection-end="1449" vertical-scroll-proportion="0.0">
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/MiscTest.java">
|
<entry file="file://$PROJECT_DIR$/translator/testFiles/webDemoExamples2/out/builder.js">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<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="2" column="47" selection-start="71" selection-end="77" vertical-scroll-proportion="-1.3076923">
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/AccessTranslator.java">
|
<entry file="file://$PROJECT_DIR$/translator/testFiles/kotlin_lib.js">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state line="20" column="48" selection-start="920" selection-end="920" vertical-scroll-proportion="0.0">
|
<state line="899" column="31" selection-start="26085" selection-end="26085" vertical-scroll-proportion="-13.423077">
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
</entry>
|
</entry>
|
||||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java">
|
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/WebDemoExamples2Test.java">
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
<provider selected="true" editor-type-id="text-editor">
|
||||||
<state line="89" column="42" selection-start="4636" selection-end="4636" vertical-scroll-proportion="0.0">
|
<state line="28" column="16" selection-start="566" selection-end="566" vertical-scroll-proportion="0.723127">
|
||||||
<folding />
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/PsiUtils.java">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state line="31" column="57" selection-start="1007" selection-end="1007" 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="76" column="0" selection-start="3399" selection-end="3399" vertical-scroll-proportion="0.0">
|
|
||||||
<folding>
|
|
||||||
<element signature="e#5848#5862#0" expanded="true" />
|
|
||||||
<element signature="e#6333#6347#0" expanded="true" />
|
|
||||||
<element signature="e#9765#9779#0" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/QualifiedExpressionTranslator.java">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state line="91" column="0" selection-start="4690" selection-end="4690" vertical-scroll-proportion="0.0">
|
|
||||||
<folding>
|
|
||||||
<element signature="imports" expanded="true" />
|
|
||||||
</folding>
|
|
||||||
</state>
|
|
||||||
</provider>
|
|
||||||
</entry>
|
|
||||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java">
|
|
||||||
<provider selected="true" editor-type-id="text-editor">
|
|
||||||
<state line="118" column="57" selection-start="5365" selection-end="5365" vertical-scroll-proportion="0.39779875">
|
|
||||||
<folding />
|
<folding />
|
||||||
</state>
|
</state>
|
||||||
</provider>
|
</provider>
|
||||||
|
|||||||
@@ -1,16 +1,15 @@
|
|||||||
package org.jetbrains.k2js.translate.reference;
|
package org.jetbrains.k2js.translate.reference;
|
||||||
|
|
||||||
import com.google.dart.compiler.backend.js.ast.JsExpression;
|
import com.google.dart.compiler.backend.js.ast.JsExpression;
|
||||||
import com.google.dart.compiler.backend.js.ast.JsInvocation;
|
|
||||||
import com.google.dart.compiler.backend.js.ast.JsNameRef;
|
|
||||||
import com.google.dart.compiler.util.AstUtil;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
|
||||||
import org.jetbrains.jet.lang.psi.JetArrayAccessExpression;
|
import org.jetbrains.jet.lang.psi.JetArrayAccessExpression;
|
||||||
|
import org.jetbrains.jet.lang.resolve.calls.ResolvedCall;
|
||||||
import org.jetbrains.k2js.translate.context.TranslationContext;
|
import org.jetbrains.k2js.translate.context.TranslationContext;
|
||||||
import org.jetbrains.k2js.translate.general.Translation;
|
import org.jetbrains.k2js.translate.general.Translation;
|
||||||
import org.jetbrains.k2js.translate.intrinsic.array.ArrayGetIntrinsic;
|
import org.jetbrains.k2js.translate.intrinsic.array.ArrayGetIntrinsic;
|
||||||
import org.jetbrains.k2js.translate.intrinsic.array.ArraySetIntrinsic;
|
import org.jetbrains.k2js.translate.intrinsic.array.ArraySetIntrinsic;
|
||||||
|
import org.jetbrains.k2js.translate.utils.BindingUtils;
|
||||||
import org.jetbrains.k2js.translate.utils.TranslationUtils;
|
import org.jetbrains.k2js.translate.utils.TranslationUtils;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -30,13 +29,14 @@ public final class ArrayAccessTranslator extends AccessTranslator {
|
|||||||
@NotNull
|
@NotNull
|
||||||
private final JetArrayAccessExpression expression;
|
private final JetArrayAccessExpression expression;
|
||||||
@NotNull
|
@NotNull
|
||||||
private final DeclarationDescriptor methodDescriptor;
|
private final FunctionDescriptor methodDescriptor;
|
||||||
|
|
||||||
private ArrayAccessTranslator(@NotNull JetArrayAccessExpression expression,
|
private ArrayAccessTranslator(@NotNull JetArrayAccessExpression expression,
|
||||||
@NotNull TranslationContext context) {
|
@NotNull TranslationContext context) {
|
||||||
super(context);
|
super(context);
|
||||||
this.expression = expression;
|
this.expression = expression;
|
||||||
this.methodDescriptor = getDescriptorForReferenceExpression(context.bindingContext(), expression);
|
this.methodDescriptor = (FunctionDescriptor)
|
||||||
|
getDescriptorForReferenceExpression(context.bindingContext(), expression);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -52,6 +52,7 @@ public final class ArrayAccessTranslator extends AccessTranslator {
|
|||||||
return context().intrinsics().isIntrinsic(methodDescriptor);
|
return context().intrinsics().isIntrinsic(methodDescriptor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//TODO: hide direct access to intrinsics
|
||||||
@NotNull
|
@NotNull
|
||||||
private JsExpression intrinsicGet() {
|
private JsExpression intrinsicGet() {
|
||||||
return ArrayGetIntrinsic.INSTANCE.apply(translateArrayExpression(), translateIndexExpressions(), context());
|
return ArrayGetIntrinsic.INSTANCE.apply(translateArrayExpression(), translateIndexExpressions(), context());
|
||||||
@@ -74,17 +75,20 @@ public final class ArrayAccessTranslator extends AccessTranslator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private JsExpression overloadedSet(@NotNull JsExpression expression) {
|
private JsExpression overloadedSet(@NotNull JsExpression expressionToSetTo) {
|
||||||
JsInvocation setCall = translateAsAccessMethodCall();
|
ResolvedCall<?> resolvedCall = BindingUtils.getResolvedCall(context().bindingContext(), expression);
|
||||||
setCall.getArguments().add(expression);
|
List<JsExpression> arguments = translateIndexExpressions();
|
||||||
return setCall;
|
arguments.add(expressionToSetTo);
|
||||||
|
return CallTranslator.translate(translateArrayExpression(), arguments, resolvedCall,
|
||||||
|
methodDescriptor, context());
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private JsInvocation translateAsAccessMethodCall() {
|
private JsExpression translateAsAccessMethodCall() {
|
||||||
JsNameRef accessMethodReference = getAccessMethodReference();
|
ResolvedCall<?> resolvedCall = BindingUtils.getResolvedCall(context().bindingContext(), expression);
|
||||||
AstUtil.setQualifier(accessMethodReference, translateArrayExpression());
|
List<JsExpression> arguments = translateIndexExpressions();
|
||||||
return AstUtil.newInvocation(accessMethodReference, translateIndexExpressions());
|
return CallTranslator.translate(translateArrayExpression(), arguments, resolvedCall,
|
||||||
|
methodDescriptor, context());
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
@@ -92,11 +96,6 @@ public final class ArrayAccessTranslator extends AccessTranslator {
|
|||||||
return TranslationUtils.translateExpressionList(context(), expression.getIndexExpressions());
|
return TranslationUtils.translateExpressionList(context(), expression.getIndexExpressions());
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
|
||||||
private JsNameRef getAccessMethodReference() {
|
|
||||||
return context().getNameForDescriptor(methodDescriptor).makeRef();
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
private JsExpression translateArrayExpression() {
|
private JsExpression translateArrayExpression() {
|
||||||
return Translation.translateAsExpression(expression.getArrayExpression(), context());
|
return Translation.translateAsExpression(expression.getArrayExpression(), context());
|
||||||
|
|||||||
@@ -29,8 +29,8 @@ public final class RhinoSystemOutputChecker implements RhinoResultChecker {
|
|||||||
String result = getSystemOutput(context, scope);
|
String result = getSystemOutput(context, scope);
|
||||||
String trimmedExpected = trimSpace(expectedResult);
|
String trimmedExpected = trimSpace(expectedResult);
|
||||||
String trimmedActual = trimSpace(result);
|
String trimmedActual = trimSpace(result);
|
||||||
System.out.println(trimmedActual);
|
// System.out.println(trimmedActual);
|
||||||
System.out.println(trimmedExpected);
|
// System.out.println(trimmedExpected);
|
||||||
assertTrue("Returned:\n" + trimmedActual + "END_OF_RETURNED\nExpected:\n" + trimmedExpected
|
assertTrue("Returned:\n" + trimmedActual + "END_OF_RETURNED\nExpected:\n" + trimmedExpected
|
||||||
+ "END_OF_EXPECTED\n", trimmedExpected.equals(trimmedActual));
|
+ "END_OF_EXPECTED\n", trimmedExpected.equals(trimmedActual));
|
||||||
}
|
}
|
||||||
|
|||||||
+322
-306
@@ -373,7 +373,11 @@ Kotlin.System = function () {
|
|||||||
|
|
||||||
var print = function (obj) {
|
var print = function (obj) {
|
||||||
if (obj !== undefined) {
|
if (obj !== undefined) {
|
||||||
output += obj;
|
if (obj == null || typeof obj != "object") {
|
||||||
|
output += obj;
|
||||||
|
} else {
|
||||||
|
output += obj.toString();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
var println = function (obj) {
|
var println = function (obj) {
|
||||||
@@ -494,7 +498,6 @@ Kotlin.NumberRange = Kotlin.Class.create({initialize:function (start, size, reve
|
|||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Copyright 2010 Tim Down.
|
* Copyright 2010 Tim Down.
|
||||||
*
|
*
|
||||||
@@ -523,347 +526,347 @@ Kotlin.NumberRange = Kotlin.Class.create({initialize:function (start, size, reve
|
|||||||
* Website: http://www.timdown.co.uk/jshashtable
|
* Website: http://www.timdown.co.uk/jshashtable
|
||||||
*/
|
*/
|
||||||
|
|
||||||
(function() {
|
(function () {
|
||||||
var FUNCTION = "function";
|
var FUNCTION = "function";
|
||||||
|
|
||||||
var arrayRemoveAt = (typeof Array.prototype.splice == FUNCTION) ?
|
var arrayRemoveAt = (typeof Array.prototype.splice == FUNCTION) ?
|
||||||
function(arr, idx) {
|
function (arr, idx) {
|
||||||
arr.splice(idx, 1);
|
arr.splice(idx, 1);
|
||||||
} :
|
} :
|
||||||
|
|
||||||
function(arr, idx) {
|
function (arr, idx) {
|
||||||
var itemsAfterDeleted, i, len;
|
var itemsAfterDeleted, i, len;
|
||||||
if (idx === arr.length - 1) {
|
if (idx === arr.length - 1) {
|
||||||
arr.length = idx;
|
arr.length = idx;
|
||||||
} else {
|
} else {
|
||||||
itemsAfterDeleted = arr.slice(idx + 1);
|
itemsAfterDeleted = arr.slice(idx + 1);
|
||||||
arr.length = idx;
|
arr.length = idx;
|
||||||
for (i = 0, len = itemsAfterDeleted.length; i < len; ++i) {
|
for (i = 0, len = itemsAfterDeleted.length; i < len; ++i) {
|
||||||
arr[idx + i] = itemsAfterDeleted[i];
|
arr[idx + i] = itemsAfterDeleted[i];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
function hashObject(obj) {
|
function hashObject(obj) {
|
||||||
var hashCode;
|
var hashCode;
|
||||||
if (typeof obj == "string") {
|
if (typeof obj == "string") {
|
||||||
return obj;
|
return obj;
|
||||||
} else if (typeof obj.hashCode == FUNCTION) {
|
} else if (typeof obj.hashCode == FUNCTION) {
|
||||||
// Check the hashCode method really has returned a string
|
// Check the hashCode method really has returned a string
|
||||||
hashCode = obj.hashCode();
|
hashCode = obj.hashCode();
|
||||||
return (typeof hashCode == "string") ? hashCode : hashObject(hashCode);
|
return (typeof hashCode == "string") ? hashCode : hashObject(hashCode);
|
||||||
} else if (typeof obj.toString == FUNCTION) {
|
} else if (typeof obj.toString == FUNCTION) {
|
||||||
return obj.toString();
|
return obj.toString();
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
return String(obj);
|
return String(obj);
|
||||||
} catch (ex) {
|
} catch (ex) {
|
||||||
// For host objects (such as ActiveObjects in IE) that have no toString() method and throw an error when
|
// For host objects (such as ActiveObjects in IE) that have no toString() method and throw an error when
|
||||||
// passed to String()
|
// passed to String()
|
||||||
return Object.prototype.toString.call(obj);
|
return Object.prototype.toString.call(obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function equals_fixedValueHasEquals(fixedValue, variableValue) {
|
function equals_fixedValueHasEquals(fixedValue, variableValue) {
|
||||||
return fixedValue.equals(variableValue);
|
return fixedValue.equals(variableValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
function equals_fixedValueNoEquals(fixedValue, variableValue) {
|
function equals_fixedValueNoEquals(fixedValue, variableValue) {
|
||||||
return (typeof variableValue.equals == FUNCTION) ?
|
return (typeof variableValue.equals == FUNCTION) ?
|
||||||
variableValue.equals(fixedValue) : (fixedValue === variableValue);
|
variableValue.equals(fixedValue) : (fixedValue === variableValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
function createKeyValCheck(kvStr) {
|
function createKeyValCheck(kvStr) {
|
||||||
return function(kv) {
|
return function (kv) {
|
||||||
if (kv === null) {
|
if (kv === null) {
|
||||||
throw new Error("null is not a valid " + kvStr);
|
throw new Error("null is not a valid " + kvStr);
|
||||||
} else if (typeof kv == "undefined") {
|
} else if (typeof kv == "undefined") {
|
||||||
throw new Error(kvStr + " must not be undefined");
|
throw new Error(kvStr + " must not be undefined");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
var checkKey = createKeyValCheck("key"), checkValue = createKeyValCheck("value");
|
var checkKey = createKeyValCheck("key"), checkValue = createKeyValCheck("value");
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
function Bucket(hash, firstKey, firstValue, equalityFunction) {
|
function Bucket(hash, firstKey, firstValue, equalityFunction) {
|
||||||
this[0] = hash;
|
this[0] = hash;
|
||||||
this.entries = [];
|
this.entries = [];
|
||||||
this.addEntry(firstKey, firstValue);
|
this.addEntry(firstKey, firstValue);
|
||||||
|
|
||||||
if (equalityFunction !== null) {
|
if (equalityFunction !== null) {
|
||||||
this.getEqualityFunction = function() {
|
this.getEqualityFunction = function () {
|
||||||
return equalityFunction;
|
return equalityFunction;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var EXISTENCE = 0, ENTRY = 1, ENTRY_INDEX_AND_VALUE = 2;
|
var EXISTENCE = 0, ENTRY = 1, ENTRY_INDEX_AND_VALUE = 2;
|
||||||
|
|
||||||
function createBucketSearcher(mode) {
|
function createBucketSearcher(mode) {
|
||||||
return function(key) {
|
return function (key) {
|
||||||
var i = this.entries.length, entry, equals = this.getEqualityFunction(key);
|
var i = this.entries.length, entry, equals = this.getEqualityFunction(key);
|
||||||
while (i--) {
|
while (i--) {
|
||||||
entry = this.entries[i];
|
entry = this.entries[i];
|
||||||
if ( equals(key, entry[0]) ) {
|
if (equals(key, entry[0])) {
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
case EXISTENCE:
|
case EXISTENCE:
|
||||||
return true;
|
return true;
|
||||||
case ENTRY:
|
case ENTRY:
|
||||||
return entry;
|
return entry;
|
||||||
case ENTRY_INDEX_AND_VALUE:
|
case ENTRY_INDEX_AND_VALUE:
|
||||||
return [ i, entry[1] ];
|
return [ i, entry[1] ];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
function createBucketLister(entryProperty) {
|
function createBucketLister(entryProperty) {
|
||||||
return function(aggregatedArr) {
|
return function (aggregatedArr) {
|
||||||
var startIndex = aggregatedArr.length;
|
var startIndex = aggregatedArr.length;
|
||||||
for (var i = 0, len = this.entries.length; i < len; ++i) {
|
for (var i = 0, len = this.entries.length; i < len; ++i) {
|
||||||
aggregatedArr[startIndex + i] = this.entries[i][entryProperty];
|
aggregatedArr[startIndex + i] = this.entries[i][entryProperty];
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
Bucket.prototype = {
|
Bucket.prototype = {
|
||||||
getEqualityFunction: function(searchValue) {
|
getEqualityFunction:function (searchValue) {
|
||||||
return (typeof searchValue.equals == FUNCTION) ? equals_fixedValueHasEquals : equals_fixedValueNoEquals;
|
return (typeof searchValue.equals == FUNCTION) ? equals_fixedValueHasEquals : equals_fixedValueNoEquals;
|
||||||
},
|
},
|
||||||
|
|
||||||
getEntryForKey: createBucketSearcher(ENTRY),
|
getEntryForKey:createBucketSearcher(ENTRY),
|
||||||
|
|
||||||
getEntryAndIndexForKey: createBucketSearcher(ENTRY_INDEX_AND_VALUE),
|
getEntryAndIndexForKey:createBucketSearcher(ENTRY_INDEX_AND_VALUE),
|
||||||
|
|
||||||
removeEntryForKey: function(key) {
|
removeEntryForKey:function (key) {
|
||||||
var result = this.getEntryAndIndexForKey(key);
|
var result = this.getEntryAndIndexForKey(key);
|
||||||
if (result) {
|
if (result) {
|
||||||
arrayRemoveAt(this.entries, result[0]);
|
arrayRemoveAt(this.entries, result[0]);
|
||||||
return result[1];
|
return result[1];
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
},
|
},
|
||||||
|
|
||||||
addEntry: function(key, value) {
|
addEntry:function (key, value) {
|
||||||
this.entries[this.entries.length] = [key, value];
|
this.entries[this.entries.length] = [key, value];
|
||||||
},
|
},
|
||||||
|
|
||||||
keys: createBucketLister(0),
|
keys:createBucketLister(0),
|
||||||
|
|
||||||
values: createBucketLister(1),
|
values:createBucketLister(1),
|
||||||
|
|
||||||
getEntries: function(entries) {
|
getEntries:function (entries) {
|
||||||
var startIndex = entries.length;
|
var startIndex = entries.length;
|
||||||
for (var i = 0, len = this.entries.length; i < len; ++i) {
|
for (var i = 0, len = this.entries.length; i < len; ++i) {
|
||||||
// Clone the entry stored in the bucket before adding to array
|
// Clone the entry stored in the bucket before adding to array
|
||||||
entries[startIndex + i] = this.entries[i].slice(0);
|
entries[startIndex + i] = this.entries[i].slice(0);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
containsKey: createBucketSearcher(EXISTENCE),
|
containsKey:createBucketSearcher(EXISTENCE),
|
||||||
|
|
||||||
containsValue: function(value) {
|
containsValue:function (value) {
|
||||||
var i = this.entries.length;
|
var i = this.entries.length;
|
||||||
while (i--) {
|
while (i--) {
|
||||||
if ( value === this.entries[i][1] ) {
|
if (value === this.entries[i][1]) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
// Supporting functions for searching hashtable buckets
|
// Supporting functions for searching hashtable buckets
|
||||||
|
|
||||||
function searchBuckets(buckets, hash) {
|
function searchBuckets(buckets, hash) {
|
||||||
var i = buckets.length, bucket;
|
var i = buckets.length, bucket;
|
||||||
while (i--) {
|
while (i--) {
|
||||||
bucket = buckets[i];
|
bucket = buckets[i];
|
||||||
if (hash === bucket[0]) {
|
if (hash === bucket[0]) {
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
function getBucketForHash(bucketsByHash, hash) {
|
function getBucketForHash(bucketsByHash, hash) {
|
||||||
var bucket = bucketsByHash[hash];
|
var bucket = bucketsByHash[hash];
|
||||||
|
|
||||||
// Check that this is a genuine bucket and not something inherited from the bucketsByHash's prototype
|
// Check that this is a genuine bucket and not something inherited from the bucketsByHash's prototype
|
||||||
return ( bucket && (bucket instanceof Bucket) ) ? bucket : null;
|
return ( bucket && (bucket instanceof Bucket) ) ? bucket : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*----------------------------------------------------------------------------------------------------------------*/
|
/*----------------------------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
var Hashtable = function(hashingFunctionParam, equalityFunctionParam) {
|
var Hashtable = function (hashingFunctionParam, equalityFunctionParam) {
|
||||||
var that = this;
|
var that = this;
|
||||||
var buckets = [];
|
var buckets = [];
|
||||||
var bucketsByHash = {};
|
var bucketsByHash = {};
|
||||||
|
|
||||||
var hashingFunction = (typeof hashingFunctionParam == FUNCTION) ? hashingFunctionParam : hashObject;
|
var hashingFunction = (typeof hashingFunctionParam == FUNCTION) ? hashingFunctionParam : hashObject;
|
||||||
var equalityFunction = (typeof equalityFunctionParam == FUNCTION) ? equalityFunctionParam : null;
|
var equalityFunction = (typeof equalityFunctionParam == FUNCTION) ? equalityFunctionParam : null;
|
||||||
|
|
||||||
this.put = function(key, value) {
|
this.put = function (key, value) {
|
||||||
checkKey(key);
|
checkKey(key);
|
||||||
checkValue(value);
|
checkValue(value);
|
||||||
var hash = hashingFunction(key), bucket, bucketEntry, oldValue = null;
|
var hash = hashingFunction(key), bucket, bucketEntry, oldValue = null;
|
||||||
|
|
||||||
// Check if a bucket exists for the bucket key
|
// Check if a bucket exists for the bucket key
|
||||||
bucket = getBucketForHash(bucketsByHash, hash);
|
bucket = getBucketForHash(bucketsByHash, hash);
|
||||||
if (bucket) {
|
if (bucket) {
|
||||||
// Check this bucket to see if it already contains this key
|
// Check this bucket to see if it already contains this key
|
||||||
bucketEntry = bucket.getEntryForKey(key);
|
bucketEntry = bucket.getEntryForKey(key);
|
||||||
if (bucketEntry) {
|
if (bucketEntry) {
|
||||||
// This bucket entry is the current mapping of key to value, so replace old value and we're done.
|
// This bucket entry is the current mapping of key to value, so replace old value and we're done.
|
||||||
oldValue = bucketEntry[1];
|
oldValue = bucketEntry[1];
|
||||||
bucketEntry[1] = value;
|
bucketEntry[1] = value;
|
||||||
} else {
|
} else {
|
||||||
// The bucket does not contain an entry for this key, so add one
|
// The bucket does not contain an entry for this key, so add one
|
||||||
bucket.addEntry(key, value);
|
bucket.addEntry(key, value);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// No bucket exists for the key, so create one and put our key/value mapping in
|
// No bucket exists for the key, so create one and put our key/value mapping in
|
||||||
bucket = new Bucket(hash, key, value, equalityFunction);
|
bucket = new Bucket(hash, key, value, equalityFunction);
|
||||||
buckets[buckets.length] = bucket;
|
buckets[buckets.length] = bucket;
|
||||||
bucketsByHash[hash] = bucket;
|
bucketsByHash[hash] = bucket;
|
||||||
}
|
}
|
||||||
return oldValue;
|
return oldValue;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.get = function(key) {
|
this.get = function (key) {
|
||||||
checkKey(key);
|
checkKey(key);
|
||||||
|
|
||||||
var hash = hashingFunction(key);
|
var hash = hashingFunction(key);
|
||||||
|
|
||||||
// Check if a bucket exists for the bucket key
|
// Check if a bucket exists for the bucket key
|
||||||
var bucket = getBucketForHash(bucketsByHash, hash);
|
var bucket = getBucketForHash(bucketsByHash, hash);
|
||||||
if (bucket) {
|
if (bucket) {
|
||||||
// Check this bucket to see if it contains this key
|
// Check this bucket to see if it contains this key
|
||||||
var bucketEntry = bucket.getEntryForKey(key);
|
var bucketEntry = bucket.getEntryForKey(key);
|
||||||
if (bucketEntry) {
|
if (bucketEntry) {
|
||||||
// This bucket entry is the current mapping of key to value, so return the value.
|
// This bucket entry is the current mapping of key to value, so return the value.
|
||||||
return bucketEntry[1];
|
return bucketEntry[1];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.containsKey = function(key) {
|
this.containsKey = function (key) {
|
||||||
checkKey(key);
|
checkKey(key);
|
||||||
var bucketKey = hashingFunction(key);
|
var bucketKey = hashingFunction(key);
|
||||||
|
|
||||||
// Check if a bucket exists for the bucket key
|
// Check if a bucket exists for the bucket key
|
||||||
var bucket = getBucketForHash(bucketsByHash, bucketKey);
|
var bucket = getBucketForHash(bucketsByHash, bucketKey);
|
||||||
|
|
||||||
return bucket ? bucket.containsKey(key) : false;
|
return bucket ? bucket.containsKey(key) : false;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.containsValue = function(value) {
|
this.containsValue = function (value) {
|
||||||
checkValue(value);
|
checkValue(value);
|
||||||
var i = buckets.length;
|
var i = buckets.length;
|
||||||
while (i--) {
|
while (i--) {
|
||||||
if (buckets[i].containsValue(value)) {
|
if (buckets[i].containsValue(value)) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.clear = function() {
|
this.clear = function () {
|
||||||
buckets.length = 0;
|
buckets.length = 0;
|
||||||
bucketsByHash = {};
|
bucketsByHash = {};
|
||||||
};
|
};
|
||||||
|
|
||||||
this.isEmpty = function() {
|
this.isEmpty = function () {
|
||||||
return !buckets.length;
|
return !buckets.length;
|
||||||
};
|
};
|
||||||
|
|
||||||
var createBucketAggregator = function(bucketFuncName) {
|
var createBucketAggregator = function (bucketFuncName) {
|
||||||
return function() {
|
return function () {
|
||||||
var aggregated = [], i = buckets.length;
|
var aggregated = [], i = buckets.length;
|
||||||
while (i--) {
|
while (i--) {
|
||||||
buckets[i][bucketFuncName](aggregated);
|
buckets[i][bucketFuncName](aggregated);
|
||||||
}
|
}
|
||||||
return aggregated;
|
return aggregated;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
this.keys = createBucketAggregator("keys");
|
this.keys = createBucketAggregator("keys");
|
||||||
this.values = createBucketAggregator("values");
|
this.values = createBucketAggregator("values");
|
||||||
this.entries = createBucketAggregator("getEntries");
|
this.entries = createBucketAggregator("getEntries");
|
||||||
|
|
||||||
this.remove = function(key) {
|
this.remove = function (key) {
|
||||||
checkKey(key);
|
checkKey(key);
|
||||||
|
|
||||||
var hash = hashingFunction(key), bucketIndex, oldValue = null;
|
var hash = hashingFunction(key), bucketIndex, oldValue = null;
|
||||||
|
|
||||||
// Check if a bucket exists for the bucket key
|
// Check if a bucket exists for the bucket key
|
||||||
var bucket = getBucketForHash(bucketsByHash, hash);
|
var bucket = getBucketForHash(bucketsByHash, hash);
|
||||||
|
|
||||||
if (bucket) {
|
if (bucket) {
|
||||||
// Remove entry from this bucket for this key
|
// Remove entry from this bucket for this key
|
||||||
oldValue = bucket.removeEntryForKey(key);
|
oldValue = bucket.removeEntryForKey(key);
|
||||||
if (oldValue !== null) {
|
if (oldValue !== null) {
|
||||||
// Entry was removed, so check if bucket is empty
|
// Entry was removed, so check if bucket is empty
|
||||||
if (!bucket.entries.length) {
|
if (!bucket.entries.length) {
|
||||||
// Bucket is empty, so remove it from the bucket collections
|
// Bucket is empty, so remove it from the bucket collections
|
||||||
bucketIndex = searchBuckets(buckets, hash);
|
bucketIndex = searchBuckets(buckets, hash);
|
||||||
arrayRemoveAt(buckets, bucketIndex);
|
arrayRemoveAt(buckets, bucketIndex);
|
||||||
delete bucketsByHash[hash];
|
delete bucketsByHash[hash];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return oldValue;
|
return oldValue;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.size = function() {
|
this.size = function () {
|
||||||
var total = 0, i = buckets.length;
|
var total = 0, i = buckets.length;
|
||||||
while (i--) {
|
while (i--) {
|
||||||
total += buckets[i].entries.length;
|
total += buckets[i].entries.length;
|
||||||
}
|
}
|
||||||
return total;
|
return total;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.each = function(callback) {
|
this.each = function (callback) {
|
||||||
var entries = that.entries(), i = entries.length, entry;
|
var entries = that.entries(), i = entries.length, entry;
|
||||||
while (i--) {
|
while (i--) {
|
||||||
entry = entries[i];
|
entry = entries[i];
|
||||||
callback(entry[0], entry[1]);
|
callback(entry[0], entry[1]);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
this.putAll = function(hashtable, conflictCallback) {
|
this.putAll = function (hashtable, conflictCallback) {
|
||||||
var entries = hashtable.entries();
|
var entries = hashtable.entries();
|
||||||
var entry, key, value, thisValue, i = entries.length;
|
var entry, key, value, thisValue, i = entries.length;
|
||||||
var hasConflictCallback = (typeof conflictCallback == FUNCTION);
|
var hasConflictCallback = (typeof conflictCallback == FUNCTION);
|
||||||
while (i--) {
|
while (i--) {
|
||||||
entry = entries[i];
|
entry = entries[i];
|
||||||
key = entry[0];
|
key = entry[0];
|
||||||
value = entry[1];
|
value = entry[1];
|
||||||
|
|
||||||
// Check for a conflict. The default behaviour is to overwrite the value for an existing key
|
// Check for a conflict. The default behaviour is to overwrite the value for an existing key
|
||||||
if ( hasConflictCallback && (thisValue = that.get(key)) ) {
|
if (hasConflictCallback && (thisValue = that.get(key))) {
|
||||||
value = conflictCallback(key, thisValue, value);
|
value = conflictCallback(key, thisValue, value);
|
||||||
}
|
}
|
||||||
that.put(key, value);
|
that.put(key, value);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
this.clone = function() {
|
this.clone = function () {
|
||||||
var clone = new Hashtable(hashingFunctionParam, equalityFunctionParam);
|
var clone = new Hashtable(hashingFunctionParam, equalityFunctionParam);
|
||||||
clone.putAll(that);
|
clone.putAll(that);
|
||||||
return clone;
|
return clone;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.keySet = function() {
|
this.keySet = function () {
|
||||||
var res = new Kotlin.HashSet();
|
var res = new Kotlin.HashSet();
|
||||||
var keys = this.keys();
|
var keys = this.keys();
|
||||||
var i = keys.length;
|
var i = keys.length;
|
||||||
@@ -872,14 +875,14 @@ Kotlin.NumberRange = Kotlin.Class.create({initialize:function (start, size, reve
|
|||||||
}
|
}
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
Kotlin.HashTable = Hashtable;
|
Kotlin.HashTable = Hashtable;
|
||||||
})();
|
})();
|
||||||
|
|
||||||
Kotlin.HashMap = Kotlin.Class.create(
|
Kotlin.HashMap = Kotlin.Class.create(
|
||||||
{
|
{
|
||||||
initialize : function() {
|
initialize:function () {
|
||||||
Kotlin.HashTable.call(this);
|
Kotlin.HashTable.call(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -887,11 +890,14 @@ Kotlin.HashMap = Kotlin.Class.create(
|
|||||||
|
|
||||||
Kotlin.StringBuilder = Kotlin.Class.create(
|
Kotlin.StringBuilder = Kotlin.Class.create(
|
||||||
{
|
{
|
||||||
initialize : function() {
|
initialize:function () {
|
||||||
this.string = "";
|
this.string = "";
|
||||||
},
|
},
|
||||||
append : function(obj) {
|
append:function (obj) {
|
||||||
this.string = this.string + obj.toString();
|
this.string = this.string + obj.toString();
|
||||||
|
},
|
||||||
|
toString:function () {
|
||||||
|
return this.string;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@@ -925,52 +931,62 @@ Kotlin.StringBuilder = Kotlin.Class.create(
|
|||||||
* Build date: 27 March 2010
|
* Build date: 27 March 2010
|
||||||
* Website: http://www.timdown.co.uk/jshashtable/
|
* Website: http://www.timdown.co.uk/jshashtable/
|
||||||
*/
|
*/
|
||||||
(function() {
|
(function () {
|
||||||
function HashSet(hashingFunction, equalityFunction) {
|
function HashSet(hashingFunction, equalityFunction) {
|
||||||
var hashTable = new Hashtable(hashingFunction, equalityFunction);
|
var hashTable = new Kotlin.HashTable(hashingFunction, equalityFunction);
|
||||||
|
|
||||||
this.add = function(o) {
|
this.add = function (o) {
|
||||||
hashTable.put(o, true);
|
hashTable.put(o, true);
|
||||||
};
|
};
|
||||||
|
|
||||||
this.addAll = function(arr) {
|
this.addAll = function (arr) {
|
||||||
var i = arr.length;
|
var i = arr.length;
|
||||||
while (i--) {
|
while (i--) {
|
||||||
hashTable.put(arr[i], true);
|
hashTable.put(arr[i], true);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
this.values = function() {
|
this.values = function () {
|
||||||
return hashTable.keys();
|
return hashTable.keys();
|
||||||
};
|
};
|
||||||
|
|
||||||
this.remove = function(o) {
|
this.iterator = function () {
|
||||||
|
var list = new Kotlin.ArrayList();
|
||||||
|
var values = this.values();
|
||||||
|
var i = values.length;
|
||||||
|
while (i--) {
|
||||||
|
list.add(values[i]);
|
||||||
|
}
|
||||||
|
return list.iterator();
|
||||||
|
};
|
||||||
|
|
||||||
|
this.remove = function (o) {
|
||||||
return hashTable.remove(o) ? o : null;
|
return hashTable.remove(o) ? o : null;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.contains = function(o) {
|
this.contains = function (o) {
|
||||||
return hashTable.containsKey(o);
|
return hashTable.containsKey(o);
|
||||||
};
|
};
|
||||||
|
|
||||||
this.clear = function() {
|
this.clear = function () {
|
||||||
hashTable.clear();
|
hashTable.clear();
|
||||||
};
|
};
|
||||||
|
|
||||||
this.size = function() {
|
this.size = function () {
|
||||||
return hashTable.size();
|
return hashTable.size();
|
||||||
};
|
};
|
||||||
|
|
||||||
this.isEmpty = function() {
|
this.isEmpty = function () {
|
||||||
return hashTable.isEmpty();
|
return hashTable.isEmpty();
|
||||||
};
|
};
|
||||||
|
|
||||||
this.clone = function() {
|
this.clone = function () {
|
||||||
var h = new HashSet(hashingFunction, equalityFunction);
|
var h = new HashSet(hashingFunction, equalityFunction);
|
||||||
h.addAll(hashTable.keys());
|
h.addAll(hashTable.keys());
|
||||||
return h;
|
return h;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.intersection = function(hashSet) {
|
this.intersection = function (hashSet) {
|
||||||
var intersection = new HashSet(hashingFunction, equalityFunction);
|
var intersection = new HashSet(hashingFunction, equalityFunction);
|
||||||
var values = hashSet.values(), i = values.length, val;
|
var values = hashSet.values(), i = values.length, val;
|
||||||
while (i--) {
|
while (i--) {
|
||||||
@@ -982,7 +998,7 @@ Kotlin.StringBuilder = Kotlin.Class.create(
|
|||||||
return intersection;
|
return intersection;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.union = function(hashSet) {
|
this.union = function (hashSet) {
|
||||||
var union = this.clone();
|
var union = this.clone();
|
||||||
var values = hashSet.values(), i = values.length, val;
|
var values = hashSet.values(), i = values.length, val;
|
||||||
while (i--) {
|
while (i--) {
|
||||||
@@ -994,7 +1010,7 @@ Kotlin.StringBuilder = Kotlin.Class.create(
|
|||||||
return union;
|
return union;
|
||||||
};
|
};
|
||||||
|
|
||||||
this.isSubsetOf = function(hashSet) {
|
this.isSubsetOf = function (hashSet) {
|
||||||
var values = hashTable.keys(), i = values.length;
|
var values = hashTable.keys(), i = values.length;
|
||||||
while (i--) {
|
while (i--) {
|
||||||
if (!hashSet.contains(values[i])) {
|
if (!hashSet.contains(values[i])) {
|
||||||
@@ -1007,7 +1023,7 @@ Kotlin.StringBuilder = Kotlin.Class.create(
|
|||||||
|
|
||||||
Kotlin.HashSet = Kotlin.Class.create(
|
Kotlin.HashSet = Kotlin.Class.create(
|
||||||
{
|
{
|
||||||
initialize : function() {
|
initialize:function () {
|
||||||
HashSet.call(this);
|
HashSet.call(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user