implementing new declaration logic

This commit is contained in:
Pavel Talanov
2012-01-30 14:36:48 +04:00
parent d63de3b152
commit 23db60cf55
9 changed files with 451 additions and 392 deletions
+262 -326
View File
@@ -13,22 +13,15 @@
</component>
<component name="ChangeListManager">
<list default="true" id="f02ef53d-47a4-4f5e-a1aa-3df68aae9b20" name="Default" comment="">
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\src\org\jetbrains\k2js\Analyzer.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/analyze/Analyzer.java" />
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\src\org\jetbrains\k2js\Config.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/config/Config.java" />
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\src\org\jetbrains\k2js\IDEAConfig.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/config/IDEAConfig.java" />
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\src\org\jetbrains\k2js\K2JSTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/facade/K2JSTranslator.java" />
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\src\org\jetbrains\k2js\K2JSTranslatorApplet.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/facade/K2JSTranslatorApplet.java" />
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\src\org\jetbrains\k2js\TestConfig.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/config/TestConfig.java" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/DeclarationFacade.java" />
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\src\org\jetbrains\k2js\translate\context\DeclarationContext.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/DeclarationContext.java" />
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\src\org\jetbrains\k2js\translate\context\DeclarationVisitor.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/DeclarationVisitor.java" />
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\src\org\jetbrains\k2js\translate\context\Declarations.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/Declarations.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/jslib/src/core/core.kt" afterPath="$PROJECT_DIR$/jslib/src/core/core.kt" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/jslib/src/jquery/common.kt" afterPath="$PROJECT_DIR$/jslib/src/jquery/common.kt" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/DeclarationVisitor.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/DeclarationVisitor.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/Declarations.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/Declarations.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/StaticContext.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/StaticContext.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/TranslationContext.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/TranslationContext.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/general/Translation.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/general/Translation.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/utils/ErrorSender.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/utils/ErrorSender.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/AppletTest.java" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/AppletTest.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/TranslationTest.java" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/TranslationTest.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java" />
</list>
<ignored path="k2js.iws" />
<ignored path=".idea/workspace.xml" />
@@ -128,86 +121,72 @@
<favorites_list name="k2js" />
</component>
<component name="FileEditorManager">
<splitter split-orientation="horizontal" split-proportion="0.59754145">
<splitter split-orientation="horizontal" split-proportion="0.47295424">
<split-first>
<leaf>
<file leaf-file-name="DeclarationVisitor.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/DeclarationVisitor.java">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/DeclarationVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="138" column="10" selection-start="6033" selection-end="6033" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="DeclarationBodyVisitor.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/declaration/DeclarationBodyVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="22" column="19" selection-start="817" selection-end="817" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="AbstractNamespaceDescriptorImpl.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/AbstractNamespaceDescriptorImpl.java">
<provider selected="true" editor-type-id="text-editor">
<state line="36" column="23" selection-start="1251" selection-end="1251" vertical-scroll-proportion="0.0">
<state line="17" column="19" selection-start="600" selection-end="600" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Declarations.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/Declarations.java">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/Declarations.java">
<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="50" column="83" selection-start="1885" selection-end="1885" vertical-scroll-proportion="0.0">
<folding>
<element signature="e#1401#1435#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="PatternTranslator.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/PatternTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="107" column="0" selection-start="4558" selection-end="4558" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="MultiFileTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/MultiFileTest.java">
<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="17" column="16" selection-start="312" selection-end="312" vertical-scroll-proportion="0.0">
<state line="102" column="16" selection-start="5065" selection-end="5065" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="BindingUtils.java" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java">
<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="53" column="75" selection-start="2453" selection-end="2453" vertical-scroll-proportion="0.4332061">
<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="BindingContext.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContext.java">
<file leaf-file-name="PropertyTranslator.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/declaration/PropertyTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="116" column="57" selection-start="6751" selection-end="6751" vertical-scroll-proportion="0.0">
<state line="25" column="19" selection-start="973" selection-end="973" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ObservableBindingTrace.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ObservableBindingTrace.java">
<file leaf-file-name="DeclarationFacade.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/DeclarationFacade.java">
<provider selected="true" editor-type-id="text-editor">
<state line="38" column="23" selection-start="1064" selection-end="1064" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="JetTestCaseBuilder.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/examples/test/JetTestCaseBuilder.java">
<provider selected="true" editor-type-id="text-editor">
<state line="60" column="0" selection-start="2256" selection-end="2256" vertical-scroll-proportion="0.0">
<folding />
<state line="55" column="89" selection-start="1655" selection-end="1655" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
@@ -215,7 +194,25 @@
<file leaf-file-name="StaticContext.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/StaticContext.java">
<provider selected="true" editor-type-id="text-editor">
<state line="80" column="16" selection-start="2843" selection-end="2843" vertical-scroll-proportion="0.0">
<state line="178" column="21" selection-start="5930" selection-end="5930" vertical-scroll-proportion="0.0">
<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 />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="TranslationContext.java" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/TranslationContext.java">
<provider selected="true" editor-type-id="text-editor">
<state line="146" column="65" selection-start="5702" selection-end="5702" vertical-scroll-proportion="0.36594912">
<folding />
</state>
</provider>
@@ -225,10 +222,10 @@
</split-first>
<split-second>
<leaf>
<file leaf-file-name="K2JSTranslator.java" pinned="false" current="false" current-in-tab="true">
<file leaf-file-name="K2JSTranslator.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/facade/K2JSTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="127" column="19" selection-start="5449" selection-end="5449" vertical-scroll-proportion="2.8609407">
<state line="79" column="6" selection-start="3282" selection-end="3282" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -279,10 +276,10 @@
</provider>
</entry>
</file>
<file leaf-file-name="TranslationUtils.java" pinned="false" current="false" current-in-tab="false">
<file leaf-file-name="TranslationUtils.java" pinned="false" current="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state line="17" column="0" selection-start="667" selection-end="667" vertical-scroll-proportion="0.0">
<state line="100" column="51" selection-start="4752" selection-end="4752" vertical-scroll-proportion="0.3110687">
<folding />
</state>
</provider>
@@ -340,22 +337,22 @@
<component name="IdeDocumentHistory">
<option name="changedFiles">
<list>
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/Analyzer.java" />
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/FunctionTest.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/DescriptorUtils.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/utils/GenerationUtils.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/K2JSTranslator.java" />
<option value="$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/alt/AltClassFinder.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/config/Config.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/config/IDEAConfig.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/config/TestConfig.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/general/Translation.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/analyze/Analyzer.java" />
<option value="$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/facade/K2JSTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/DeclarationVisitor.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/Declarations.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/Declarations.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/DeclarationVisitor.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/general/Translation.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/Declarations.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/DeclarationFacade.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/StaticContext.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/TranslationContext.java" />
</list>
</option>
</component>
@@ -598,82 +595,6 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="k2js" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="translator" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="testFiles" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<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="libImplementations" />
<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="extensionFunction" />
<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="extensionFunction" />
<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" />
@@ -710,7 +631,7 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="facade" />
<option name="myItemId" value="translate" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
@@ -732,7 +653,11 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="config" />
<option name="myItemId" value="translate" />
<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>
@@ -754,7 +679,11 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="analyze" />
<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>
@@ -764,21 +693,27 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="stdlib" />
<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>
<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="stdlib" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="ktSrc" />
<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>
@@ -825,67 +760,6 @@
</key>
</component>
<component name="RunManager" selected="JUnit.All in jetTests">
<configuration default="false" name="WebDemoExamples1Test.printArg" 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.WebDemoExamples1Test" />
<option name="METHOD_NAME" value="printArg" />
<option name="TEST_OBJECT" value="method" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="singleModule" />
</option>
<envs />
<dir value="$PROJECT_DIR$/translator" />
<patterns />
<RunnerSettings RunnerId="Run" />
<ConfigurationWrapper RunnerId="Run" />
<method />
</configuration>
<configuration default="false" name="ExtensionFunctionTest.extensionLiteralPassedToFunction" type="JUnit" factoryName="JUnit" temporary="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
<option name="PATTERN" value="org.jetbrains.k2js.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="extensionLiteralPassedToFunction" />
<option name="TEST_OBJECT" value="method" />
<option name="VM_PARAMETERS" value="-ea" />
<option name="PARAMETERS" value="" />
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$" />
<option name="ENV_VARIABLES" />
<option name="PASS_PARENT_ENVS" value="true" />
<option name="TEST_SEARCH_SCOPE">
<value defaultName="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="ExtensionFunctionTest" type="JUnit" factoryName="JUnit" temporary="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
@@ -980,6 +854,62 @@
<ConfigurationWrapper RunnerId="Debug" />
<method />
</configuration>
<configuration default="false" name="WebDemoExamples1Test.isCheck" 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="isCheck" />
<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="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="isCheck" />
<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">
<option name="USE_SOCKET_TRANSPORT" value="true" />
<option name="SERVER_MODE" value="false" />
@@ -1166,11 +1096,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.WebDemoExamples1Test.printArg" />
<item index="4" class="java.lang.String" itemvalue="JUnit.ExtensionFunctionTest.extensionLiteralPassedToFunction" />
<item index="5" class="java.lang.String" itemvalue="JUnit.ExtensionFunctionTest" />
<item index="6" class="java.lang.String" itemvalue="JUnit.ArrayListTest.isEmpty" />
<item index="7" class="java.lang.String" itemvalue="JUnit.OperationTest.prefixIntOperations" />
<item index="3" class="java.lang.String" itemvalue="JUnit.ExtensionFunctionTest" />
<item index="4" class="java.lang.String" itemvalue="JUnit.ArrayListTest.isEmpty" />
<item index="5" class="java.lang.String" itemvalue="JUnit.OperationTest.prefixIntOperations" />
<item index="6" class="java.lang.String" itemvalue="JUnit.WebDemoExamples1Test.isCheck" />
<item index="7" class="java.lang.String" itemvalue="JUnit.WebDemoExamples1Test" />
</list>
<configuration name="&lt;template&gt;" type="WebApp" default="true" selected="false">
<Host>localhost</Host>
@@ -1258,8 +1188,8 @@
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.20363443" sideWeight="0.7588857" order="1" side_tool="true" content_ui="tabs" />
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32977018" sideWeight="0.6570605" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3997862" sideWeight="0.6705998" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.22928914" sideWeight="0.77617675" 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.44956774" sideWeight="0.8530198" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.22928914" sideWeight="0.55043226" order="0" side_tool="false" content_ui="combo" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.44956774" sideWeight="0.8530198" order="2" side_tool="false" content_ui="tabs" />
<window_info id="CodeWindow" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="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="ResolveWindow" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
@@ -1306,7 +1236,7 @@
<option name="CREATE_PATCH_EXPAND_DETAILS_DEFAULT" value="true" />
<option name="SHOW_FILE_HISTORY_DETAILS" value="true" />
<option name="FORCE_NON_EMPTY_COMMENT" value="false" />
<option name="LAST_COMMIT_MESSAGE" value="migrated to new code" />
<option name="LAST_COMMIT_MESSAGE" value="migrating code" />
<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" />
@@ -1319,7 +1249,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="KT-962: Function is called two times &#10;safecall expression now compute receiver only once." />
<MESSAGE value="refactor and TODO clean-up" />
<MESSAGE value="migrated according to the last when changes" />
<MESSAGE value="Very big code migration started. Still in progress. Tests fail." />
@@ -1344,6 +1273,7 @@
<MESSAGE value="added different configs for idea and test environment" />
<MESSAGE value="fixed a couple of problems introduced with rebase before previous push" />
<MESSAGE value="migrated to new code" />
<MESSAGE value="migrating code" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager />
@@ -1353,102 +1283,6 @@
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/DescriptorUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state line="21" column="66" selection-start="587" selection-end="587" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/facade/K2JSTranslatorApplet.java">
<provider selected="true" editor-type-id="text-editor">
<state line="14" column="19" selection-start="349" selection-end="349" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/facade/K2JSTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="127" column="19" selection-start="5449" selection-end="5449" vertical-scroll-proportion="2.8609407">
<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="4998" selection-end="4998" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/resolve/TypeHierarchyResolver.java">
<provider selected="true" editor-type-id="text-editor">
<state line="189" column="0" selection-start="10884" selection-end="10884" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/analyze/Analyzer.java">
<provider selected="true" editor-type-id="text-editor">
<state line="28" column="0" selection-start="1029" selection-end="1029" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/resolve/BindingContext.java">
<provider selected="true" editor-type-id="text-editor">
<state line="116" column="57" selection-start="6751" selection-end="6751" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ObservableBindingTrace.java">
<provider selected="true" editor-type-id="text-editor">
<state line="38" column="23" selection-start="1064" selection-end="1064" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/examples/test/JetTestCaseBuilder.java">
<provider selected="true" editor-type-id="text-editor">
<state line="60" column="0" selection-start="2256" selection-end="2256" vertical-scroll-proportion="0.0" />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/StaticContext.java">
<provider selected="true" editor-type-id="text-editor">
<state line="80" column="16" selection-start="2843" selection-end="2843" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/declaration/DeclarationBodyVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="22" column="19" selection-start="817" selection-end="817" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/AbstractNamespaceDescriptorImpl.java">
<provider selected="true" editor-type-id="text-editor">
<state line="36" column="23" selection-start="1251" selection-end="1251" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/DeclarationVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="138" column="10" selection-start="6033" selection-end="6033" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/Declarations.java">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/MultiFileTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="17" column="16" selection-start="312" selection-end="312" vertical-scroll-proportion="0.0">
@@ -1458,7 +1292,109 @@
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state line="53" column="75" selection-start="2453" selection-end="2453" vertical-scroll-proportion="0.4332061">
<state line="79" column="94" selection-start="3835" selection-end="3835" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/StandardClasses.java">
<provider selected="true" editor-type-id="text-editor">
<state line="16" column="19" selection-start="483" selection-end="483" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/NamingScope.java">
<provider selected="true" editor-type-id="text-editor">
<state line="14" column="19" selection-start="410" selection-end="410" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/DeclarationVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="17" column="19" selection-start="600" selection-end="600" 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="102" column="16" selection-start="5065" selection-end="5065" 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/declaration/PropertyTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="25" column="19" selection-start="973" selection-end="973" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/facade/K2JSTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="79" column="6" selection-start="3282" selection-end="3282" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<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 />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/Declarations.java">
<provider selected="true" editor-type-id="text-editor">
<state line="50" column="83" selection-start="1885" selection-end="1885" vertical-scroll-proportion="0.0">
<folding>
<element signature="e#1401#1435#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/PatternTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="107" column="0" selection-start="4558" selection-end="4558" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/declaration/DeclarationFacade.java">
<provider selected="true" editor-type-id="text-editor">
<state line="55" column="89" selection-start="1655" selection-end="1655" 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/StaticContext.java">
<provider selected="true" editor-type-id="text-editor">
<state line="178" column="21" selection-start="5930" selection-end="5930" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state line="100" column="51" selection-start="4752" selection-end="4752" vertical-scroll-proportion="0.3110687">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/TranslationContext.java">
<provider selected="true" editor-type-id="text-editor">
<state line="146" column="65" selection-start="5702" selection-end="5702" vertical-scroll-proportion="0.36594912">
<folding />
</state>
</provider>
@@ -1,6 +1,7 @@
package org.jetbrains.k2js.translate.context;
import com.google.dart.compiler.backend.js.ast.JsName;
import com.google.dart.compiler.backend.js.ast.JsNameRef;
import com.google.dart.compiler.backend.js.ast.JsProgram;
import com.google.dart.compiler.backend.js.ast.JsRootScope;
import org.jetbrains.annotations.NotNull;
@@ -8,6 +9,8 @@ import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.psi.JetElement;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.types.JetStandardLibrary;
import org.jetbrains.k2js.translate.context.declaration.DeclarationFacade;
import org.jetbrains.k2js.translate.context.declaration.Declarations;
import org.jetbrains.k2js.translate.intrinsic.Intrinsics;
import org.jetbrains.k2js.translate.utils.BindingUtils;
@@ -20,7 +23,7 @@ public class StaticContext {
Namer namer = Namer.newInstance(jsRootScope);
Aliaser aliaser = Aliaser.newInstance();
NamingScope scope = NamingScope.rootScope(jsRootScope);
Declarations declarations = Declarations.newInstance(scope);
DeclarationFacade declarations = DeclarationFacade.createFacade(scope);
Intrinsics intrinsics = Intrinsics.standardLibraryIntrinsics(library);
StandardClasses standardClasses =
StandardClasses.bindImplementations(namer.getKotlinScope(), jsRootScope);
@@ -35,7 +38,7 @@ public class StaticContext {
private final BindingContext bindingContext;
@NotNull
private final Declarations declarations;
private final DeclarationFacade declarationFacade;
@NotNull
private final Aliaser aliaser;
@@ -53,13 +56,14 @@ public class StaticContext {
private final NamingScope rootScope;
//TODO: too many parameters in constructor
private StaticContext(@NotNull JsProgram program, @NotNull BindingContext bindingContext,
@NotNull Declarations declarations, @NotNull Aliaser aliaser,
@NotNull DeclarationFacade declarations, @NotNull Aliaser aliaser,
@NotNull Namer namer, @NotNull Intrinsics intrinsics,
@NotNull StandardClasses standardClasses, @NotNull NamingScope rootScope) {
this.program = program;
this.bindingContext = bindingContext;
this.declarations = declarations;
this.declarationFacade = declarations;
this.aliaser = aliaser;
this.namer = namer;
this.intrinsics = intrinsics;
@@ -78,8 +82,8 @@ public class StaticContext {
}
@NotNull
public Declarations getDeclarations() {
return declarations;
public DeclarationFacade getDeclarationFacade() {
return declarationFacade;
}
@NotNull
@@ -107,9 +111,25 @@ public class StaticContext {
return standardClasses;
}
@NotNull
public Declarations getLibraryDeclarations() {
return declarationFacade.getLibraryDeclarations();
}
@NotNull
public Declarations getNativeDeclarations() {
return declarationFacade.getKotlinDeclarations();
}
@NotNull
public Declarations getKotlinDeclarations() {
return declarationFacade.getKotlinDeclarations();
}
//TODO: helper method outdated
@NotNull
public NamingScope getScopeForDescriptor(@NotNull DeclarationDescriptor descriptor) {
return declarations.getScope(descriptor);
return declarationFacade.getKotlinDeclarations().getScope(descriptor);
}
@NotNull
@@ -118,12 +138,42 @@ public class StaticContext {
return getScopeForDescriptor(descriptor);
}
//TODO: consider using nullable return value instead
@NotNull
public JsName getGlobalName(@NotNull DeclarationDescriptor descriptor) {
return declarations.getName(descriptor);
for (Declarations declarations : declarationFacade.getAllDeclarations()) {
if (declarations.hasDeclaredName(descriptor)) {
return declarations.getName(descriptor);
}
}
throw new AssertionError("Use is declared method to check.");
}
public boolean isDeclared(@NotNull DeclarationDescriptor descriptor) {
return declarations.hasDeclaredName(descriptor);
for (Declarations declarations : declarationFacade.getAllDeclarations()) {
if (declarations.hasDeclaredName(descriptor)) {
return true;
}
}
return false;
}
@NotNull
public JsNameRef getQualifier(@NotNull DeclarationDescriptor descriptor) {
for (Declarations declarations : declarationFacade.getAllDeclarations()) {
if (declarations.hasQualifier(descriptor)) {
return declarations.getQualifier(descriptor);
}
}
throw new AssertionError("Use hasQualifier method to check.");
}
public boolean hasQualifier(@NotNull DeclarationDescriptor descriptor) {
for (Declarations declarations : declarationFacade.getAllDeclarations()) {
if (declarations.hasQualifier(descriptor)) {
return true;
}
}
return false;
}
}
@@ -10,6 +10,7 @@ import org.jetbrains.jet.lang.psi.JetElement;
import org.jetbrains.jet.lang.psi.JetNamedFunction;
import org.jetbrains.jet.lang.psi.JetPropertyAccessor;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.k2js.translate.context.declaration.DeclarationFacade;
import org.jetbrains.k2js.translate.intrinsic.Intrinsics;
import org.jetbrains.k2js.translate.utils.BindingUtils;
@@ -61,7 +62,8 @@ public final class TranslationContext {
@NotNull
public TranslationContext newDeclaration(@NotNull DeclarationDescriptor descriptor) {
NamingScope declarationScope = staticContext.getDeclarations().getScope(descriptor);
//TODO: chained call on static context suspicious
NamingScope declarationScope = staticContext.getDeclarationFacade().getKotlinDeclarations().getScope(descriptor);
return contextWithScope(declarationScope);
}
@@ -126,12 +128,12 @@ public final class TranslationContext {
if (standardClasses().isStandardObject(descriptor)) {
return namer().kotlinObject();
}
return declarations().getQualifier(descriptor);
return staticContext.getQualifier(descriptor);
}
public boolean hasQualifierForDescriptor(@NotNull DeclarationDescriptor descriptor) {
return (declarations().hasQualifier(descriptor) ||
return (staticContext.hasQualifier(descriptor) ||
standardClasses().isStandardObject(descriptor));
}
@@ -168,11 +170,6 @@ public final class TranslationContext {
return staticContext.getNamer();
}
@NotNull
public Declarations declarations() {
return staticContext.getDeclarations();
}
@NotNull
public Intrinsics intrinsics() {
return staticContext.getIntrinsics();
@@ -192,4 +189,9 @@ public final class TranslationContext {
public JsScope jsScope() {
return dynamicContext.jsScope();
}
@NotNull
private DeclarationFacade declarationFacade() {
return staticContext.getDeclarationFacade();
}
}
@@ -1,10 +1,11 @@
package org.jetbrains.k2js.translate.context;
package org.jetbrains.k2js.translate.context.declaration;
import com.google.dart.compiler.backend.js.ast.JsName;
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.Nullable;
import org.jetbrains.k2js.translate.context.NamingScope;
public final class DeclarationContext {
@@ -0,0 +1,101 @@
package org.jetbrains.k2js.translate.context.declaration;
import com.google.common.collect.Sets;
import com.google.dart.compiler.backend.js.ast.JsNameRef;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.types.JetStandardLibrary;
import org.jetbrains.k2js.translate.context.NamingScope;
import org.jetbrains.k2js.translate.utils.BindingUtils;
import java.util.List;
import java.util.Set;
/**
* @author Pavel Talanov
*/
public final class DeclarationFacade {
@NotNull
public static DeclarationFacade createFacade(@NotNull NamingScope scope) {
return new DeclarationFacade(scope);
}
@NotNull
private final Declarations libraryDeclarations;
@NotNull
private final Declarations kotlinDeclarations;
@NotNull
private final Declarations nativeDeclarations;
@NotNull
private final NamingScope rootScope;
private DeclarationFacade(@NotNull NamingScope rootScope) {
this.rootScope = rootScope;
this.libraryDeclarations = Declarations.newInstance();
this.kotlinDeclarations = Declarations.newInstance();
this.nativeDeclarations = Declarations.newInstance();
}
@NotNull
public Declarations getLibraryDeclarations() {
return libraryDeclarations;
}
@NotNull
public Declarations getKotlinDeclarations() {
return kotlinDeclarations;
}
@NotNull
public Declarations getNativeDeclarations() {
return nativeDeclarations;
}
@NotNull
public Set<Declarations> getAllDeclarations() {
return Sets.newHashSet(libraryDeclarations, kotlinDeclarations, nativeDeclarations);
}
@NotNull
public DeclarationFacade extractStandardLibrary(@NotNull JetStandardLibrary standardLibrary,
@NotNull JsNameRef standardLibraryObjectName) {
DeclarationVisitor visitor = new DeclarationVisitor(libraryDeclarations, false);
for (DeclarationDescriptor descriptor :
standardLibrary.getLibraryScope().getAllDescriptors()) {
descriptor.accept(visitor, DeclarationContext.rootContext(rootScope, standardLibraryObjectName));
}
return this;
}
//TODO: decide if is public
public void extractDeclarationsFromNamespace(@NotNull NamespaceDescriptor descriptor,
@Nullable JsNameRef namespaceQualifier) {
DeclarationVisitor visitor = new DeclarationVisitor(kotlinDeclarations, true);
visitor.traverseNamespace(descriptor, DeclarationContext.rootContext(rootScope, namespaceQualifier));
}
public void extractDeclarationsFromFiles(@NotNull List<JetFile> files, @NotNull BindingContext context) {
for (NamespaceDescriptor namespace : getAllNamespaces(files, context)) {
extractDeclarationsFromNamespace(namespace, null);
}
}
//TODO: util method
@NotNull
private Set<NamespaceDescriptor> getAllNamespaces(@NotNull List<JetFile> files, @NotNull BindingContext context) {
Set<NamespaceDescriptor> namespaces = Sets.newHashSet();
for (JetFile file : files) {
namespaces.add(BindingUtils.getNamespaceDescriptor(context, file));
}
return namespaces;
}
}
@@ -1,9 +1,11 @@
package org.jetbrains.k2js.translate.context;
package org.jetbrains.k2js.translate.context.declaration;
import com.google.dart.compiler.backend.js.ast.JsName;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.k2js.translate.context.Namer;
import org.jetbrains.k2js.translate.context.NamingScope;
import java.util.Set;
@@ -1,21 +1,15 @@
package org.jetbrains.k2js.translate.context;
package org.jetbrains.k2js.translate.context.declaration;
import com.google.common.collect.Sets;
import com.google.dart.compiler.backend.js.ast.JsName;
import com.google.dart.compiler.backend.js.ast.JsNameRef;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.types.JetStandardLibrary;
import org.jetbrains.k2js.translate.utils.BindingUtils;
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
import org.jetbrains.k2js.translate.context.NamingScope;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* @author Pavel Talanov
@@ -23,8 +17,8 @@ import java.util.Set;
public final class Declarations {
@NotNull
public static Declarations newInstance(@NotNull NamingScope rootScope) {
return new Declarations(rootScope);
/*package*/ static Declarations newInstance() {
return new Declarations();
}
@NotNull
@@ -33,40 +27,12 @@ public final class Declarations {
private final Map<DeclarationDescriptor, JsName> descriptorToNameMap = new HashMap<DeclarationDescriptor, JsName>();
@NotNull
private final Map<DeclarationDescriptor, JsNameRef> descriptorToQualifierMap = new HashMap<DeclarationDescriptor, JsNameRef>();
@NotNull
private final NamingScope rootScope;
private Declarations(@NotNull NamingScope scope) {
this.rootScope = scope;
}
public void extractDeclarationsFromNamespace(@NotNull NamespaceDescriptor descriptor) {
DeclarationVisitor visitor = new DeclarationVisitor(this, true);
visitor.traverseNamespace(descriptor, DeclarationContext.rootContext(rootScope, null));
}
public void extractDeclarationsFromFiles(@NotNull List<JetFile> files, @NotNull BindingContext context) {
Set<NamespaceDescriptor> namespaces = Sets.newHashSet();
for (JetFile file : files) {
namespaces.add(BindingUtils.getNamespaceDescriptor(context, file));
}
for (NamespaceDescriptor namespace : namespaces) {
extractDeclarationsFromNamespace(namespace);
}
}
public void extractStandardLibrary(@NotNull JetStandardLibrary standardLibrary,
@NotNull JsNameRef standardLibraryObjectName) {
DeclarationVisitor visitor = new DeclarationVisitor(this, false);
for (DeclarationDescriptor descriptor :
standardLibrary.getLibraryScope().getAllDescriptors()) {
descriptor.accept(visitor, DeclarationContext.rootContext(rootScope,
standardLibraryObjectName));
}
private Declarations() {
}
@NotNull
/*package*/ NamingScope getScope(@NotNull DeclarationDescriptor descriptor) {
public NamingScope getScope(@NotNull DeclarationDescriptor descriptor) {
NamingScope scope = descriptorToScopeMap.get(descriptor.getOriginal());
assert scope != null : "Unknown declaration";
return scope;
@@ -75,7 +41,7 @@ public final class Declarations {
@NotNull
public JsName getName(@NotNull DeclarationDescriptor descriptor) {
JsName name = descriptorToNameMap.get(descriptor.getOriginal());
assert name != null : "Unknown declaration";
assert name != null : "Unknown declaration: " + DescriptorUtils.getFQName(descriptor);
return name;
}
@@ -83,12 +49,12 @@ public final class Declarations {
return descriptorToNameMap.containsKey(descriptor.getOriginal());
}
/*package*/ boolean hasQualifier(@NotNull DeclarationDescriptor descriptor) {
public boolean hasQualifier(@NotNull DeclarationDescriptor descriptor) {
return (descriptorToQualifierMap.get(descriptor.getOriginal()) != null);
}
@NotNull
/*package*/ JsNameRef getQualifier(@NotNull DeclarationDescriptor descriptor) {
public JsNameRef getQualifier(@NotNull DeclarationDescriptor descriptor) {
JsNameRef qualifier = descriptorToQualifierMap.get(descriptor.getOriginal());
assert qualifier != null : "Cannot be null. Use hasQualifier to check.";
return qualifier;
@@ -97,9 +97,10 @@ public final class Translation {
//TODO: move some of the code somewhere
JetStandardLibrary standardLibrary = JetStandardLibrary.getJetStandardLibrary(project);
StaticContext staticContext = StaticContext.generateStaticContext(standardLibrary, bindingContext);
staticContext.getDeclarations().
staticContext.getDeclarationFacade().
extractStandardLibrary(standardLibrary, staticContext.getNamer().kotlinObject());
staticContext.getDeclarations().extractDeclarationsFromFiles(files, bindingContext);
staticContext.getDeclarationFacade().
extractDeclarationsFromFiles(files, bindingContext);
JsBlock block = staticContext.getProgram().getFragmentBlock(0);
TranslationContext context = TranslationContext.rootContext(staticContext);
block.addStatement(Translation.translateNamespace(namespaceToTranslate, context));
@@ -98,7 +98,7 @@ public final class TranslationUtils {
@NotNull
public static JsNameRef getQualifiedReference(@NotNull TranslationContext context,
@NotNull DeclarationDescriptor descriptor) {
JsName name = context.declarations().getName(descriptor);
JsName name = context.getNameForDescriptor(descriptor);
JsNameRef reference = name.makeRef();
if (context.hasQualifierForDescriptor(descriptor)) {
JsNameRef qualifier = context.getQualifierForDescriptor(descriptor);