refactor to implement library annotations

This commit is contained in:
Pavel Talanov
2012-01-30 23:06:49 +04:00
parent 7a61a7520d
commit e4d43c5147
10 changed files with 787 additions and 431 deletions
+408 -220
View File
@@ -12,18 +12,17 @@
<bookmark url="file://$PROJECT_DIR$/translator/testFiles/propertyAccess/cases/safeCallReturnsNullIfFails.kt" line="3" />
</component>
<component name="ChangeListManager">
<list default="true" id="f02ef53d-47a4-4f5e-a1aa-3df68aae9b20" name="Default" comment="added test for complex expression with when">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/expression/conditional/cases/ifAsExpressionWithThrow.kt" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/patternMatching/cases/whenAsExpressionWithThrow.kt" />
<list default="true" id="f02ef53d-47a4-4f5e-a1aa-3df68aae9b20" name="Default" comment="">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/jslib/src/core/javalang.kt" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/AnnotatedDeclarationVisitor.java" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/LibraryDeclarationVisitor.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/js/src/com/google/dart/compiler/util/AstUtil.java" afterPath="$PROJECT_DIR$/js/src/com/google/dart/compiler/util/AstUtil.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/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/WhenTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/WhenTranslator.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/patternMatching/cases/whenValueOrType.kt" afterPath="$PROJECT_DIR$/translator/testFiles/patternMatching/cases/whenValueOrType.kt" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ConditionalTest.java" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ConditionalTest.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/PatternMatchingTest.java" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/PatternMatchingTest.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/jslib/src/core/javautil.kt" afterPath="$PROJECT_DIR$/jslib/src/core/javautil.kt" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/config/Config.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/config/Config.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/AnnotationsUtils.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/AnnotationsUtils.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/KotlinDeclarationVisitor.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/KotlinDeclarationVisitor.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/NativeDeclarationVisitor.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/NativeDeclarationVisitor.java" />
</list>
<ignored path="k2js.iws" />
<ignored path=".idea/workspace.xml" />
@@ -123,13 +122,40 @@
<favorites_list name="k2js" />
</component>
<component name="FileEditorManager">
<splitter split-orientation="horizontal" split-proportion="0.403215">
<splitter split-orientation="horizontal" split-proportion="0.6443403">
<split-first>
<leaf>
<file leaf-file-name="javautil.kt" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/jslib/src/core/javautil.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="21" column="45" selection-start="1034" selection-end="1038" vertical-scroll-proportion="-10.769231">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="javalang.kt" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/jslib/src/core/javalang.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="6" column="25" selection-start="114" selection-end="114" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<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">
<provider selected="true" editor-type-id="text-editor">
<state line="130" column="19" selection-start="3319" selection-end="3319" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="NativeDeclarationVisitor.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/NativeDeclarationVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="16" column="19" selection-start="709" selection-end="709" vertical-scroll-proportion="0.0">
<state line="7" column="3" selection-start="333" selection-end="333" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
@@ -137,19 +163,10 @@
</provider>
</entry>
</file>
<file leaf-file-name="Analyzer.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/analyze/Analyzer.java">
<file leaf-file-name="LibraryDeclarationVisitor.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/LibraryDeclarationVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="22" column="19" selection-start="765" selection-end="765" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="AbstractDeclarationVisitor.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/AbstractDeclarationVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="39" column="0" selection-start="1550" selection-end="1550" vertical-scroll-proportion="0.0">
<state line="13" column="101" selection-start="636" selection-end="636" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
@@ -157,64 +174,52 @@
</provider>
</entry>
</file>
<file leaf-file-name="Translation.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/general/Translation.java">
<provider selected="true" editor-type-id="text-editor">
<state line="101" column="0" selection-start="5003" selection-end="5003" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="coverage-error.log" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/coverage-error.log">
<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="KotlinDeclarationVisitor.java" pinned="false" current="false" current-in-tab="false">
<file leaf-file-name="KotlinDeclarationVisitor.java" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/KotlinDeclarationVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="15" column="63" selection-start="551" selection-end="551" vertical-scroll-proportion="0.0">
<state line="25" column="24" selection-start="985" selection-end="985" vertical-scroll-proportion="0.8110687">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="AnnotationsUtils.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/AnnotationsUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state line="43" column="41" selection-start="1680" selection-end="1680" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="AnnotatedDeclarationVisitor.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/AnnotatedDeclarationVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="16" column="13" selection-start="718" selection-end="718" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="DeclarationContext.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/DeclarationContext.java">
<provider selected="true" editor-type-id="text-editor">
<state line="9" column="19" selection-start="380" selection-end="380" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="WhenTranslator.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/WhenTranslator.java">
<file leaf-file-name="WebDemoExamples2Test.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/WebDemoExamples2Test.java">
<provider selected="true" editor-type-id="text-editor">
<state line="105" column="77" selection-start="4065" selection-end="4065" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="AstUtil.java" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/util/AstUtil.java">
<provider selected="true" editor-type-id="text-editor">
<state line="366" column="40" selection-start="13142" selection-end="13142" vertical-scroll-proportion="0.5503212">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ifAsExpressionWithThrow.js" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/conditional/out/ifAsExpressionWithThrow.js">
<provider selected="true" editor-type-id="text-editor">
<state line="15" column="6" selection-start="264" selection-end="264" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="kt242.jet" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/examples/cases/kt242.jet">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<state line="29" column="16" selection-start="620" selection-end="620" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -263,7 +268,7 @@
<file leaf-file-name="ExpressionVisitor.java" pinned="false" current="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="133" column="56" selection-start="6129" selection-end="6129" vertical-scroll-proportion="-0.31340206">
<state line="133" column="0" selection-start="6129" selection-end="6129" vertical-scroll-proportion="-0.3627685">
<folding />
</state>
</provider>
@@ -341,14 +346,6 @@
<component name="IdeDocumentHistory">
<option name="changedFiles">
<list>
<option value="$PROJECT_DIR$/translator/config.txt" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/config/Config.java" />
<option value="$PROJECT_DIR$/config.txt" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/PsiUtils.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/TranslationContext.java" />
<option value="$PROJECT_DIR$/translator/testFiles/patternMatching/cases/whenWithIf.kt" />
<option value="$PROJECT_DIR$/translator/testFiles/patternMatching/cases/whenValueOrType.kt" />
<option value="$PROJECT_DIR$/translator/testFiles/patternMatching/cases/whenAsExpressionWithReturn.kt" />
<option value="$PROJECT_DIR$/translator/testFiles/kotlin_lib.js" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/StandardClasses.java" />
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/PatternMatchingTest.java" />
@@ -357,6 +354,14 @@
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/WhenTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java" />
<option value="$PROJECT_DIR$/js/src/com/google/dart/compiler/util/AstUtil.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/config/Config.java" />
<option value="$PROJECT_DIR$/jslib/src/core/javalang.kt" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/AnnotatedDeclarationsVisitor.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/AnnotatedDeclarationVisitor.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/NativeDeclarationVisitor.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/LibraryDeclarationVisitor.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/AnnotationsUtils.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/KotlinDeclarationVisitor.java" />
</list>
</option>
</component>
@@ -439,7 +444,7 @@
<hideEmptyPackages ProjectPane="true" />
<abbreviatePackageNames />
<autoscrollToSource ProjectPane="true" />
<autoscrollFromSource ProjectPane="false" />
<autoscrollFromSource ProjectPane="true" />
<sortByType />
</navigator>
<panes>
@@ -613,6 +618,46 @@
<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_ELEMENT>
<option name="myItemId" value="k2js" />
@@ -671,6 +716,144 @@
<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="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="k2js" />
<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="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="k2js" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="translate" />
<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="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="k2js" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="translate" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="context" />
<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="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="k2js" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="translate" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="context" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="declaration" />
<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="jslib" />
<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="jslib" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<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="jslib" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="src" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="core" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
</subPane>
</pane>
<pane id="Favorites" />
@@ -714,62 +897,6 @@
</key>
</component>
<component name="RunManager" selected="JUnit.All in jetTests">
<configuration default="false" name="PatternMatchingTest.whenWithIf" 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.PatternMatchingTest" />
<option name="METHOD_NAME" value="whenWithIf" />
<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="Run" />
<ConfigurationWrapper RunnerId="Run" />
<method />
</configuration>
<configuration default="false" name="PatternMatchingTest.whenValueOrType" 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.PatternMatchingTest" />
<option name="METHOD_NAME" value="whenValueOrType" />
<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="Run" />
<ConfigurationWrapper RunnerId="Run" />
<method />
</configuration>
<configuration default="false" name="PatternMatchingTest" type="JUnit" factoryName="JUnit" temporary="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
@@ -854,6 +981,62 @@
<ConfigurationWrapper RunnerId="Run" />
<method />
</configuration>
<configuration default="false" name="OperatorOverloadingTest.usingModInCaseModAssignNotAvailable" 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.OperatorOverloadingTest" />
<option name="METHOD_NAME" value="usingModInCaseModAssignNotAvailable" />
<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="Run" />
<ConfigurationWrapper RunnerId="Run" />
<method />
</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="Run" />
<ConfigurationWrapper RunnerId="Run" />
<method />
</configuration>
<configuration default="true" type="Remote" factoryName="Remote">
<option name="USE_SOCKET_TRANSPORT" value="true" />
<option name="SERVER_MODE" value="false" />
@@ -1040,11 +1223,11 @@
<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.All in jetTests" />
<item index="3" class="java.lang.String" itemvalue="JUnit.PatternMatchingTest.whenWithIf" />
<item index="4" class="java.lang.String" itemvalue="JUnit.PatternMatchingTest.whenValueOrType" />
<item index="5" class="java.lang.String" itemvalue="JUnit.PatternMatchingTest" />
<item index="6" class="java.lang.String" itemvalue="JUnit.PatternMatchingTest.whenAsExpressionWithThrow" />
<item index="7" class="java.lang.String" itemvalue="JUnit.ConditionalTest.ifElseAsExpressionWithThrow" />
<item index="3" class="java.lang.String" itemvalue="JUnit.PatternMatchingTest" />
<item index="4" class="java.lang.String" itemvalue="JUnit.PatternMatchingTest.whenAsExpressionWithThrow" />
<item index="5" class="java.lang.String" itemvalue="JUnit.ConditionalTest.ifElseAsExpressionWithThrow" />
<item index="6" class="java.lang.String" itemvalue="JUnit.OperatorOverloadingTest.usingModInCaseModAssignNotAvailable" />
<item index="7" class="java.lang.String" itemvalue="JUnit.WebDemoExamples2Test.builder" />
</list>
<configuration name="&lt;template&gt;" type="WebApp" default="true" selected="false">
<Host>localhost</Host>
@@ -1180,7 +1363,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="added test for complex expression with when" />
<option name="LAST_COMMIT_MESSAGE" value="if as expression with control statements support" />
<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" />
@@ -1193,7 +1376,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="builder example working" />
<MESSAGE value="lots of minore refactorings" />
<MESSAGE value="implement and test extension properties" />
<MESSAGE value="tuple support and tests" />
@@ -1218,6 +1400,7 @@
<MESSAGE value="supported NativeClass() and NativeFun(String) annotations" />
<MESSAGE value="solving when problem" />
<MESSAGE value="added test for complex expression with when" />
<MESSAGE value="if as expression with control statements support" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager />
@@ -1227,72 +1410,16 @@
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/StandardClasses.java">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/WebDemoExamples2Test.java">
<provider selected="true" editor-type-id="text-editor">
<state line="155" column="81" selection-start="6052" selection-end="6052" vertical-scroll-proportion="0.0">
<state line="29" column="16" selection-start="620" selection-end="620" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/PatternMatchingTest.java">
<entry file="file://$PROJECT_DIR$/jslib/src/core/javalang.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="65" column="0" selection-start="1460" selection-end="1460" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/kotlin_lib.js">
<provider selected="true" editor-type-id="text-editor">
<state line="249" column="31" selection-start="6311" selection-end="6311" vertical-scroll-proportion="-8.538462">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/patternMatching/out/whenValueOrType.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>
<marker date="1327942202025" expanded="true" signature="-1:-1" placeholder="{...}" />
<marker date="1327942202025" expanded="true" signature="-1:-1" placeholder="{...}" />
<marker date="1327942202025" expanded="true" signature="-1:-1" placeholder="{...}" />
<marker date="1327942202025" expanded="true" signature="-1:-1" placeholder="{...}" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/patternMatching/cases/whenValueOrType.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="23" column="20" selection-start="306" selection-end="306" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ConditionalTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="33" column="16" selection-start="766" selection-end="766" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/conditional/cases/ifAsExpressionWithThrow.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="2" column="27" selection-start="40" selection-end="40" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/KotlinDeclarationVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="15" column="63" selection-start="551" selection-end="551" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/general/Translation.java">
<provider selected="true" editor-type-id="text-editor">
<state line="101" column="0" selection-start="5003" selection-end="5003" vertical-scroll-proportion="0.0">
<state line="6" column="25" selection-start="114" selection-end="114" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -1304,16 +1431,9 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java">
<entry file="file://$PROJECT_DIR$/translator/testFiles/webDemoExamples2/cases/builder.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="133" column="56" selection-start="6129" selection-end="6129" vertical-scroll-proportion="-0.31340206">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/jslib/src/jquery/common.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<state line="130" column="19" selection-start="3319" selection-end="3319" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -1325,9 +1445,9 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/jslib/src/core/annotations.kt">
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/util/AstUtil.java">
<provider selected="true" editor-type-id="text-editor">
<state line="3" column="35" selection-start="94" selection-end="94" vertical-scroll-proportion="0.0">
<state line="356" column="26" selection-start="12646" selection-end="12646" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -1339,13 +1459,81 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/util/AstUtil.java">
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticHolder.java">
<provider selected="true" editor-type-id="text-editor">
<state line="366" column="40" selection-start="13142" selection-end="13142" vertical-scroll-proportion="0.5503212">
<state line="18" column="47" selection-start="572" selection-end="572" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/Configuration.java">
<provider selected="true" editor-type-id="text-editor">
<state line="11" column="17" selection-start="344" selection-end="344" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/DeclarationContext.java">
<provider selected="true" editor-type-id="text-editor">
<state line="9" column="19" selection-start="380" selection-end="380" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/NativeDeclarationVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="7" column="3" selection-start="333" selection-end="333" 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/context/declaration/AnnotatedDeclarationVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="16" column="13" selection-start="718" selection-end="718" 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/context/declaration/LibraryDeclarationVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="13" column="101" selection-start="636" selection-end="636" 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/config/Config.java">
<provider selected="true" editor-type-id="text-editor">
<state line="29" column="50" selection-start="933" selection-end="933" vertical-scroll-proportion="0.0">
<folding>
<element signature="e#1443#1452#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/AnnotationsUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state line="43" column="41" selection-start="1680" selection-end="1680" 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/context/declaration/KotlinDeclarationVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="25" column="24" selection-start="985" selection-end="985" vertical-scroll-proportion="0.8110687">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</component>
<component name="masterDetails">
<states>
@@ -353,6 +353,8 @@ public class AstUtil {
public JsNode mutate(JsNode node);
}
//TODO: move somewhere
//TODO: refactor and review
public static JsNode mutateLastExpression(JsNode node, Mutator mutator) {
if (node instanceof JsBlock) {
+9
View File
@@ -0,0 +1,9 @@
package java.lang
import java.util.Iterator;
import js.annotations.LibraryClass
LibraryClass
trait Iterable<T> {
fun iterator() : java.util.Iterator<T> {}
}
+178 -90
View File
@@ -1,106 +1,194 @@
package java.util
public open class ArrayList<E>(initialCapacity : Int = 0) : List<E> {
override public fun size() : Int
override public fun isEmpty() : Boolean
override public fun contains(o : Any?) : Boolean
override public fun containsAll(c : Collection<*>?) : Boolean
override public fun indexOf(o : Any?) : Int
override public fun lastIndexOf(o : Any?) : Int
override public fun toArray() : Array<Any>
override public fun toArray<T>(a : Array<T>) : Array<T>
override public fun get(index : Int) : E
override public fun set(index : Int, element : E) : E
override public fun add(e : E) : Boolean
override public fun add(index : Int, element : E) : Unit
override public fun remove(index : Int) : E?
override public fun clear() : Unit
override public fun addAll(c : Collection<out E?>?) : Boolean
override public fun addAll(index : Int, c : Collection<out E?>?) : Boolean
override public fun removeAll(c : Collection<*>?) : Boolean
override public fun retainAll(c : Collection<*>?) : Boolean
override public fun iterator() : Iterator<E>
override public fun subList(fromIndex : Int, toIndex : Int) : List<E?>?
override public fun remove(o : Any?) : Boolean
import java.lang;
import js.annotations.LibraryClass
LibraryClass
public trait Iterator<T> {
fun hasNext() : Boolean
fun next() : T
}
public trait Collection<E> {
open public fun size() : Int
open public fun isEmpty() : Boolean
open public fun contains(o : Any?) : Boolean
open public fun iterator() : Iterator<E>
open public fun toArray() : Array<Any>
open public fun toArray<T>(a : Array<T>) : Array<T>
open public fun add(e : E) : Boolean
open public fun containsAll(c : Collection<*>?) : Boolean
open public fun addAll(c : Collection<out E?>?) : Boolean
open public fun removeAll(c : Collection<*>?) : Boolean
open public fun retainAll(c : Collection<*>?) : Boolean
open public fun clear() : Unit
open public fun remove(o : Any?) : Boolean
LibraryClass
public open class ArrayList<erased E>() : java.util.List<E>, java.util.AbstractList<E>() {
override public fun size() : Int {}
override public fun isEmpty() : Boolean {}
override public fun contains(o : Any?) : Boolean {}
override public fun indexOf(o : Any?) : Int {}
override public fun lastIndexOf(o : Any?) : Int {}
override public fun toArray() : Array<Any?> {}
override public fun toArray<erased T>(a : Array<out T>) : Array<T> {}
override public fun get(index : Int) : E {}
override public fun set(index : Int, element : E) : E {}
override public fun add(e : E) : Boolean {}
override public fun add(index : Int, element : E) : Unit {}
override public fun remove(index : Int) : E {}
override public fun remove(o : Any?) : Boolean {}
override public fun clear() : Unit {}
override public fun addAll(c : java.util.Collection<out E>) : Boolean {}
override public fun addAll(index : Int, c : java.util.Collection<out E>) : Boolean {}
}
public trait List<E> : Collection<E> {
override public fun size() : Int
override public fun isEmpty() : Boolean
override public fun contains(o : Any?) : Boolean
override public fun iterator() : Iterator<E>
override public fun toArray() : Array<Any>
override public fun toArray<T>(a : Array<T>) : Array<T>
override public fun add(e : E) : Boolean
override public fun containsAll(c : Collection<*>?) : Boolean
override public fun addAll(c : Collection<out E?>?) : Boolean
open public fun addAll(index : Int, c : Collection<out E?>?) : Boolean
override public fun removeAll(c : Collection<*>?) : Boolean
override public fun retainAll(c : Collection<*>?) : Boolean
override public fun clear() : Unit
open public fun get(index : Int) : E
open public fun set(index : Int, element : E) : E
open public fun add(index : Int, element : E) : Unit
js_name("remove_foo")
open public fun remove(index : Int) : E?
open public fun indexOf(o : Any?) : Int
open public fun lastIndexOf(o : Any?) : Int
open public fun subList(fromIndex : Int, toIndex : Int) : List<E?>?
js_name("remove_foo")
override public fun remove(o : Any?) : Boolean
LibraryClass
public trait Collection<erased E> : java.lang.Iterable<E> {
open fun size() : Int
open fun isEmpty() : Boolean
open fun contains(o : Any?) : Boolean
override fun iterator() : Iterator<E>
open fun toArray() : Array<Any?>
open fun toArray<erased T>(a : Array<out T>) : Array<T>
open fun add(e : E) : Boolean
open fun remove(o : Any?) : Boolean
open fun containsAll(c : java.util.Collection<*>) : Boolean
open fun addAll(c : java.util.Collection<out E>) : Boolean
open fun removeAll(c : java.util.Collection<*>) : Boolean
open fun retainAll(c : java.util.Collection<*>) : Boolean
open fun clear() : Unit
}
annotation class js_name(s : String)
trait Set<E> : Collection<E>
public trait Map<K, V> {
open public fun size() : Int
open public fun isEmpty() : Boolean
open public fun containsKey(key : Any?) : Boolean
open public fun containsValue(value : Any?) : Boolean
open public fun get(key : Any?) : V
open public fun put(key : K?, value : V?) : V?
open public fun remove(key : Any?) : V?
open public fun putAll(m : Map<out K?, out V?>?) : Unit
open public fun clear() : Unit
open public fun keySet() : Set<K>
open public fun values() : Collection<V?>?
LibraryClass
public trait List<erased E> : java.util.Collection<E> {
override fun size() : Int
override fun isEmpty() : Boolean
override fun contains(o : Any?) : Boolean
override fun iterator() : Iterator<E>
override fun toArray() : Array<Any?>
// Simulate Java's array covariance
override fun toArray<erased T>(a : Array<out T>) : Array<T>
override fun add(e : E) : Boolean
override fun remove(o : Any?) : Boolean
override fun containsAll(c : java.util.Collection<*>) : Boolean
override fun addAll(c : java.util.Collection<out E>) : Boolean
open fun addAll(index : Int, c : java.util.Collection<out E>) : Boolean
override fun removeAll(c : java.util.Collection<*>) : Boolean
override fun retainAll(c : java.util.Collection<*>) : Boolean
override fun clear() : Unit
open fun get(index : Int) : E
open fun set(index : Int, element : E) : E
open fun add(index : Int, element : E) : Unit
open fun remove(index : Int) : E
open fun indexOf(o : Any?) : Int
open fun lastIndexOf(o : Any?) : Int
}
public open class HashMap<K, V>() : Map<K, V>{
override public fun size() : Int
override public fun isEmpty() : Boolean
override public fun get(key : Any?) : V
override public fun containsKey(key : Any?) : Boolean
override public fun put(key : K?, value : V?) : V?
override public fun putAll(m : Map<out K?, out V?>?) : Unit
override public fun remove(key : Any?) : V?
override public fun clear() : Unit
override public fun containsValue(value : Any?) : Boolean
override public fun keySet() : Set<K>
override public fun values() : Collection<V?>?
LibraryClass
abstract public class AbstractCollection<erased E> protected () : java.util.Collection<E> {
abstract override public fun iterator() : java.util.Iterator<E>
abstract override public fun size() : Int
override public fun isEmpty() : Boolean {}
override public fun contains(o : Any?) : Boolean {}
override public fun toArray() : Array<Any?> {}
override public fun toArray<erased T>(a : Array<out T>) : Array<T> {}
override public fun add(e : E) : Boolean {}
override public fun remove(o : Any?) : Boolean {}
override public fun containsAll(c : java.util.Collection<*>) : Boolean {}
override public fun addAll(c : java.util.Collection<out E>) : Boolean {}
override public fun removeAll(c : java.util.Collection<*>) : Boolean {}
override public fun retainAll(c : java.util.Collection<*>) : Boolean {}
override public fun clear() : Unit {}
}
LibraryClass
abstract public open class AbstractList<erased E> protected () : java.util.AbstractCollection<E>(), java.util.List<E> {
override public fun add(e : E) : Boolean {}
abstract override public fun get(index : Int) : E
override public fun set(index : Int, element : E) : E {}
override public fun add(index : Int, element : E) : Unit {}
override public fun remove(index : Int) : E {}
override public fun indexOf(o : Any?) : Int {}
override public fun lastIndexOf(o : Any?) : Int {}
override public fun clear() : Unit {}
override public fun addAll(index : Int, c : java.util.Collection<out E>) : Boolean {}
override public fun iterator() : Iterator<E> {}
open protected fun removeRange(fromIndex : Int, toIndex : Int) : Unit {}
}
LibraryClass
public trait Set<erased E> : java.util.Collection<E> {
override fun size() : Int
override fun isEmpty() : Boolean
override fun contains(o : Any?) : Boolean
override fun iterator() : Iterator<E>
override fun toArray() : Array<Any?>
override fun toArray<erased T>(a : Array<out T>) : Array<T>
override fun add(e : E) : Boolean
override fun remove(o : Any?) : Boolean
override fun containsAll(c : java.util.Collection<*>) : Boolean
override fun addAll(c : java.util.Collection<out E>) : Boolean
override fun retainAll(c : java.util.Collection<*>) : Boolean
override fun removeAll(c : java.util.Collection<*>) : Boolean
override fun clear() : Unit
}
LibraryClass
abstract public class AbstractSet<erased E> protected () : java.util.AbstractCollection<E>(), java.util.Set<E> {
override public fun removeAll(c : java.util.Collection<*>) : Boolean {}
}
LibraryClass
public open class HashSet<erased E>() : java.util.Set<E> {
override public fun iterator() : Iterator<E> {}
override public fun size() : Int {}
override public fun isEmpty() : Boolean {}
override public fun contains(o : Any?) : Boolean {}
override public fun add(e : E) : Boolean {}
override public fun remove(o : Any?) : Boolean {}
override fun toArray() : Array<Any?> {}
override fun toArray<erased T>(a : Array<out T>) : Array<T> {}
override fun containsAll(c : java.util.Collection<*>) : Boolean {}
override fun addAll(c : java.util.Collection<out E>) : Boolean {}
override fun retainAll(c : java.util.Collection<*>) : Boolean {}
override fun removeAll(c : java.util.Collection<*>) : Boolean {}
override fun clear() : Unit {}
}
LibraryClass
public trait Map<erased K, erased V> {
open fun size() : Int
open fun isEmpty() : Boolean
open fun containsKey(key : Any?) : Boolean
open fun containsValue(value : Any?) : Boolean
open fun get(key : Any?) : V
open fun put(key : K, value : V) : V?
open fun remove(key : Any?) : V?
open fun putAll(m : java.util.Map<out K, out V>) : Unit
open fun clear() : Unit
open fun keySet() : java.util.Set<K>
open fun values() : java.util.Collection<V>
}
LibraryClass
abstract public open class AbstractMap<erased K, erased V> protected () : java.util.Map<K, V> {
override public fun size() : Int {}
override public fun isEmpty() : Boolean {}
override public fun containsValue(value : Any?) : Boolean {}
override public fun containsKey(key : Any?) : Boolean {}
override public fun get(key : Any?) : V {}
override public fun put(key : K, value : V) : V? {}
override public fun remove(key : Any?) : V? {}
override public fun putAll(m : java.util.Map<out K, out V>) : Unit {}
override public fun clear() : Unit {}
override public fun keySet() : java.util.Set<K> {}
override public fun values() : java.util.Collection<V> {}
}
LibraryClass
public open class HashMap<erased K, erased V>() : java.util.Map<K, V> {
override public fun size() : Int {}
override public fun isEmpty() : Boolean {}
override public fun get(key : Any?) : V {}
override public fun containsKey(key : Any?) : Boolean {}
override public fun put(key : K, value : V) : V? {}
override public fun putAll(m : java.util.Map<out K, out V>) : Unit {}
override public fun remove(key : Any?) : V? {}
override public fun clear() : Unit {}
override public fun containsValue(value : Any?) : Boolean {}
override public fun keySet() : java.util.Set<K> {}
override public fun values() : java.util.Collection<V> {}
}
LibraryClass
public class StringBuilder() {
public fun append(obj : Any) : StringBuilder
public fun toString() : String
}
@@ -27,6 +27,7 @@ public abstract class Config {
PATH_TO_JS_LIB_SRC + "\\core\\annotations.kt",
PATH_TO_JS_LIB_SRC + "\\jquery\\common.kt",
PATH_TO_JS_LIB_SRC + "\\core\\javautil.kt",
PATH_TO_JS_LIB_SRC + "\\core\\javalang.kt",
PATH_TO_JS_LIB_SRC + "\\core\\core.kt"
);
@@ -0,0 +1,138 @@
package org.jetbrains.k2js.translate.context.declaration;
import com.google.dart.compiler.backend.js.ast.JsName;
import org.jetbrains.annotations.NotNull;
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.NamespaceDescriptor;
import org.jetbrains.k2js.translate.context.NamingScope;
import static org.jetbrains.k2js.translate.context.declaration.AnnotationsUtils.annotationStringParameter;
import static org.jetbrains.k2js.translate.context.declaration.AnnotationsUtils.getAnnotationByName;
/**
* @author Pavel Talanov
*/
public class AnnotatedDeclarationVisitor extends AbstractDeclarationVisitor {
@NotNull
private final String classAnnotationFQName;
@NotNull
private final String funAnnotationFQName;
/*package*/ AnnotatedDeclarationVisitor(@NotNull Declarations declarations,
@NotNull String classAnnotationFQName,
@NotNull String funAnnotationFQName) {
super(declarations);
this.classAnnotationFQName = classAnnotationFQName;
this.funAnnotationFQName = funAnnotationFQName;
}
@NotNull
@Override
protected NamingScope doDeclareScope(@NotNull DeclarationDescriptor descriptor, @NotNull DeclarationContext context,
@NotNull String recommendedName) {
//TODO: probably need to keep track
if (!(descriptor instanceof ClassDescriptor)) {
return context.getScope();
}
NamingScope innerScope = context.getScope().innerScope(recommendedName);
declarations().putScope(descriptor, innerScope);
return innerScope;
}
@NotNull
@Override
protected JsName doDeclareName(@NotNull DeclarationDescriptor descriptor, @NotNull DeclarationContext context,
@NotNull String recommendedName) {
String nativeName = getName(descriptor);
JsName jsName = context.getScope().
declareVariable(descriptor, nativeName, false);
jsName.setObfuscatable(false);
declarations().putName(descriptor, jsName);
declarations().putQualifier(descriptor, context.getQualifier());
return jsName;
}
@Override
protected boolean accept(@NotNull DeclarationDescriptor descriptor) {
if (descriptor instanceof NamespaceDescriptor) {
return true;
}
if (descriptor instanceof FunctionDescriptor) {
return isAnnotatedFunction((FunctionDescriptor) descriptor);
}
if (descriptor instanceof ClassDescriptor) {
return isAnnotatedClass((ClassDescriptor) descriptor);
}
return false;
}
@Override
public void traverseNamespace(@NotNull NamespaceDescriptor namespace, @NotNull DeclarationContext context) {
declareMembers(namespace, context);
}
@NotNull
public String getName(@NotNull DeclarationDescriptor descriptor) {
if (descriptor instanceof FunctionDescriptor) {
return getNameForFunction((FunctionDescriptor) descriptor);
}
if (descriptor instanceof ClassDescriptor) {
return getNameForClass((ClassDescriptor) descriptor);
}
throw new AssertionError();
}
@NotNull
private String getNameForFunction(@NotNull FunctionDescriptor descriptor) {
if (hasFunctionAnnotation(descriptor)) {
return annotationStringParameter(descriptor, funAnnotationFQName);
}
if (declaredInAnnotatedClass(descriptor)) {
return descriptor.getName();
}
throw new AssertionError("Use isAnnotatedFunction to check");
}
@NotNull
private String getNameForClass(@NotNull ClassDescriptor descriptor) {
if (hasClassAnnotation(descriptor)) {
return descriptor.getName();
}
throw new AssertionError("Use isAnnotatedClass to check");
}
public boolean isAnnotatedDeclaration(@NotNull DeclarationDescriptor descriptor) {
return hasClassAnnotation(descriptor) || hasFunctionAnnotation(descriptor)
|| declaredInAnnotatedClass(descriptor);
}
public boolean isAnnotatedFunction(@NotNull FunctionDescriptor functionDescriptor) {
return hasFunctionAnnotation(functionDescriptor) || declaredInAnnotatedClass(functionDescriptor);
}
public boolean isAnnotatedClass(@NotNull ClassDescriptor classDescriptor) {
return hasClassAnnotation(classDescriptor);
}
private boolean declaredInAnnotatedClass(@NotNull DeclarationDescriptor descriptor) {
DeclarationDescriptor containingDeclaration = descriptor.getContainingDeclaration();
if (!(containingDeclaration instanceof ClassDescriptor)) return false;
return hasClassAnnotation(containingDeclaration);
}
private boolean hasFunctionAnnotation(@NotNull DeclarationDescriptor descriptor) {
return (getAnnotationByName(descriptor, funAnnotationFQName) != null);
}
private boolean hasClassAnnotation(@NotNull DeclarationDescriptor descriptor) {
return (getAnnotationByName(descriptor, classAnnotationFQName) != null);
}
}
@@ -1,88 +1,55 @@
package org.jetbrains.k2js.translate.context.declaration;
import com.google.common.collect.Sets;
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.annotations.AnnotationDescriptor;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import java.util.Set;
/**
* @author Pavel Talanov
*/
public final class AnnotationsUtils {
@NotNull
private static final String NATIVE_FUNCTION_ANNOTATION_FQNAME = "js.annotations.NativeFun";
public static final String NATIVE_FUNCTION_ANNOTATION_FQNAME = "js.annotations.NativeFun";
@NotNull
private static final String NATIVE_CLASS_ANNOTATION_FQNAME = "js.annotations.NativeClass";
public static final String NATIVE_CLASS_ANNOTATION_FQNAME = "js.annotations.NativeClass";
@NotNull
public static final String LIBRARY_FUNCTION_ANNOTATION_FQNAME = "js.annotations.NativeFun";
@NotNull
public static final String LIBRARY_CLASS_ANNOTATION_FQNAME = "js.annotations.NativeClass";
@NotNull
public static Set<String> INTERNAL_ANNOTATIONS_FQNAMES = Sets.newHashSet(
NATIVE_CLASS_ANNOTATION_FQNAME, NATIVE_FUNCTION_ANNOTATION_FQNAME,
LIBRARY_CLASS_ANNOTATION_FQNAME, LIBRARY_FUNCTION_ANNOTATION_FQNAME);
private AnnotationsUtils() {
}
@NotNull
public static String getNativeName(@NotNull DeclarationDescriptor descriptor) {
if (descriptor instanceof FunctionDescriptor) {
return getNativeNameForFunction((FunctionDescriptor) descriptor);
public static boolean doesNotHaveInternalAnnotations(@NotNull DeclarationDescriptor descriptor) {
for (String annotationFQNAme : INTERNAL_ANNOTATIONS_FQNAMES) {
if (hasAnnotation(descriptor, annotationFQNAme)) {
return false;
}
}
if (descriptor instanceof ClassDescriptor) {
return getNativeNameForClass((ClassDescriptor) descriptor);
}
throw new AssertionError("Use isNativeDeclaration to check");
return true;
}
private static boolean hasAnnotation(@NotNull DeclarationDescriptor descriptor,
@NotNull String annotationFQNAme) {
return getAnnotationByName(descriptor, annotationFQNAme) != null;
}
@NotNull
private static String getNativeNameForFunction(@NotNull FunctionDescriptor descriptor) {
if (hasNativeFunctionAnnotation(descriptor)) {
return getNativeFunctionName(descriptor);
}
if (declaredInNativeClass(descriptor)) {
return descriptor.getName();
}
throw new AssertionError("Use isNativeFunction to check");
}
@NotNull
private static String getNativeNameForClass(@NotNull ClassDescriptor descriptor) {
if (hasNativeClassAnnotation(descriptor)) {
return descriptor.getName();
}
throw new AssertionError("Use isNativeClass to check");
}
public static boolean isNativeDeclaration(@NotNull DeclarationDescriptor descriptor) {
return hasNativeClassAnnotation(descriptor) || hasNativeFunctionAnnotation(descriptor)
|| declaredInNativeClass(descriptor);
}
public static boolean isNativeFunction(@NotNull FunctionDescriptor functionDescriptor) {
return hasNativeFunctionAnnotation(functionDescriptor) || declaredInNativeClass(functionDescriptor);
}
public static boolean isNativeClass(@NotNull ClassDescriptor classDescriptor) {
return hasNativeClassAnnotation(classDescriptor);
}
private static boolean declaredInNativeClass(@NotNull DeclarationDescriptor descriptor) {
DeclarationDescriptor containingDeclaration = descriptor.getContainingDeclaration();
if (!(containingDeclaration instanceof ClassDescriptor)) return false;
return hasNativeClassAnnotation(containingDeclaration);
}
//TODO: constants
private static boolean hasNativeFunctionAnnotation(@NotNull DeclarationDescriptor descriptor) {
return (getAnnotationByName(descriptor, NATIVE_FUNCTION_ANNOTATION_FQNAME) != null);
}
private static boolean hasNativeClassAnnotation(@NotNull DeclarationDescriptor descriptor) {
return (getAnnotationByName(descriptor, NATIVE_CLASS_ANNOTATION_FQNAME) != null);
}
@NotNull
private static String getNativeFunctionName(@NotNull FunctionDescriptor declarationDescriptor) {
public static String annotationStringParameter(@NotNull FunctionDescriptor declarationDescriptor,
@NotNull String annotationFQName) {
AnnotationDescriptor annotationDescriptor =
getAnnotationByName(declarationDescriptor, NATIVE_FUNCTION_ANNOTATION_FQNAME);
getAnnotationByName(declarationDescriptor, annotationFQName);
assert annotationDescriptor != null;
Object value = annotationDescriptor.getValueArguments().iterator().next().getValue();
assert value instanceof String : "Native function annotation should have one String parameter";
@@ -90,8 +57,8 @@ public final class AnnotationsUtils {
}
@Nullable
private static AnnotationDescriptor getAnnotationByName(@NotNull DeclarationDescriptor descriptor,
@NotNull String FQName) {
public static AnnotationDescriptor getAnnotationByName(@NotNull DeclarationDescriptor descriptor,
@NotNull String FQName) {
for (AnnotationDescriptor annotationDescriptor : descriptor.getAnnotations()) {
String annotationClassFQName = getAnnotationClassFQName(annotationDescriptor);
if (annotationClassFQName.equals(FQName)) {
@@ -5,7 +5,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.k2js.translate.context.NamingScope;
import static org.jetbrains.k2js.translate.context.declaration.AnnotationsUtils.isNativeDeclaration;
import static org.jetbrains.k2js.translate.context.declaration.AnnotationsUtils.doesNotHaveInternalAnnotations;
/**
* @author Pavel Talanov
@@ -41,6 +41,6 @@ public final class KotlinDeclarationVisitor extends AbstractDeclarationVisitor {
@Override
protected boolean accept(@NotNull DeclarationDescriptor descriptor) {
return (!isNativeDeclaration(descriptor));
return (doesNotHaveInternalAnnotations(descriptor));
}
}
@@ -0,0 +1,16 @@
package org.jetbrains.k2js.translate.context.declaration;
import org.jetbrains.annotations.NotNull;
import static org.jetbrains.k2js.translate.context.declaration.AnnotationsUtils.LIBRARY_CLASS_ANNOTATION_FQNAME;
import static org.jetbrains.k2js.translate.context.declaration.AnnotationsUtils.LIBRARY_FUNCTION_ANNOTATION_FQNAME;
/**
* @author Pavel Talanov
*/
public final class LibraryDeclarationVisitor extends AnnotatedDeclarationVisitor {
/*package*/ LibraryDeclarationVisitor(@NotNull Declarations nativeDeclarations) {
super(nativeDeclarations, LIBRARY_CLASS_ANNOTATION_FQNAME, LIBRARY_FUNCTION_ANNOTATION_FQNAME);
}
}
@@ -1,69 +1,16 @@
package org.jetbrains.k2js.translate.context.declaration;
import com.google.dart.compiler.backend.js.ast.JsName;
import org.jetbrains.annotations.NotNull;
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.NamespaceDescriptor;
import org.jetbrains.k2js.translate.context.NamingScope;
import static org.jetbrains.k2js.translate.context.declaration.AnnotationsUtils.isNativeClass;
import static org.jetbrains.k2js.translate.context.declaration.AnnotationsUtils.isNativeFunction;
import static org.jetbrains.k2js.translate.context.declaration.AnnotationsUtils.NATIVE_CLASS_ANNOTATION_FQNAME;
import static org.jetbrains.k2js.translate.context.declaration.AnnotationsUtils.NATIVE_FUNCTION_ANNOTATION_FQNAME;
/**
* @author Pavel Talanov
*/
public final class NativeDeclarationVisitor extends AbstractDeclarationVisitor {
public final class NativeDeclarationVisitor extends AnnotatedDeclarationVisitor {
/*package*/ NativeDeclarationVisitor(@NotNull Declarations nativeDeclarations) {
super(nativeDeclarations);
super(nativeDeclarations, NATIVE_CLASS_ANNOTATION_FQNAME, NATIVE_FUNCTION_ANNOTATION_FQNAME);
}
@NotNull
@Override
protected NamingScope doDeclareScope(@NotNull DeclarationDescriptor descriptor, @NotNull DeclarationContext context,
@NotNull String recommendedName) {
//TODO: probably need to keep track
if (!(descriptor instanceof ClassDescriptor)) {
return context.getScope();
}
NamingScope innerScope = context.getScope().innerScope(recommendedName);
declarations().putScope(descriptor, innerScope);
return innerScope;
}
@NotNull
@Override
protected JsName doDeclareName(@NotNull DeclarationDescriptor descriptor, @NotNull DeclarationContext context,
@NotNull String recommendedName) {
String nativeName = AnnotationsUtils.getNativeName(descriptor);
JsName jsName = context.getScope().
declareVariable(descriptor, nativeName, false);
jsName.setObfuscatable(false);
declarations().putName(descriptor, jsName);
declarations().putQualifier(descriptor, context.getQualifier());
return jsName;
}
@Override
protected boolean accept(@NotNull DeclarationDescriptor descriptor) {
if (descriptor instanceof NamespaceDescriptor) {
return true;
}
if (descriptor instanceof FunctionDescriptor) {
return isNativeFunction((FunctionDescriptor) descriptor);
}
if (descriptor instanceof ClassDescriptor) {
return isNativeClass((ClassDescriptor) descriptor);
}
return false;
}
@Override
public void traverseNamespace(@NotNull NamespaceDescriptor namespace, @NotNull DeclarationContext context) {
declareMembers(namespace, context);
}
}