basic intrinsic implementation. very hacky

This commit is contained in:
Pavel Talanov
2011-11-30 17:41:16 +04:00
parent 9c9c9e3141
commit 26d9da8360
18 changed files with 710 additions and 420 deletions
+353 -333
View File
@@ -7,19 +7,25 @@
<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="Work on reference expression. Test fixes to follow.">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/PsiUtils.java" />
<list default="true" id="f02ef53d-47a4-4f5e-a1aa-3df68aae9b20" name="Default" comment="">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/intrinsic/BinaryOperationIntrinsic.java" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/intrinsic/Intrinsic.java" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/intrinsic/IntrinsicDeclarationVisitor.java" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/intrinsic/Intrinsics.java" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/general/StaticContext.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/declarations/Declarations.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/declarations/Declarations.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/declaration/ClassTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/declaration/ClassTranslator.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/FunctionTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/FunctionTranslator.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/PatternTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/PatternTranslator.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/general/GenerationState.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/general/GenerationState.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/general/TranslationContext.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/general/TranslationContext.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/BinaryOperationTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/BinaryOperationTranslator.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/OperationTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/OperationTranslator.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/UnaryOperationTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/UnaryOperationTranslator.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java" />
</list>
<ignored path="k2js.iws" />
<ignored path=".idea/workspace.xml" />
@@ -90,6 +96,45 @@
<option name="CONDITION" value="" />
<option name="LOG_MESSAGE" value="" />
</breakpoint>
<breakpoint url="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/OperationTranslator.java" line="32" class="org.jetbrains.k2js.translate.operation.OperationTranslator" package="org.jetbrains.k2js.translate.operation">
<option name="ENABLED" value="true" />
<option name="LOG_ENABLED" value="false" />
<option name="LOG_EXPRESSION_ENABLED" value="false" />
<option name="SUSPEND_POLICY" value="SuspendAll" />
<option name="COUNT_FILTER_ENABLED" value="false" />
<option name="COUNT_FILTER" value="0" />
<option name="CONDITION_ENABLED" value="false" />
<option name="CLASS_FILTERS_ENABLED" value="false" />
<option name="INSTANCE_FILTERS_ENABLED" value="false" />
<option name="CONDITION" value="" />
<option name="LOG_MESSAGE" value="" />
</breakpoint>
<breakpoint url="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/intrinsic/IntrinsicDeclarationVisitor.java" line="33" class="org.jetbrains.k2js.intrinsic.IntrinsicDeclarationVisitor" package="org.jetbrains.k2js.intrinsic">
<option name="ENABLED" value="true" />
<option name="LOG_ENABLED" value="false" />
<option name="LOG_EXPRESSION_ENABLED" value="false" />
<option name="SUSPEND_POLICY" value="SuspendAll" />
<option name="COUNT_FILTER_ENABLED" value="false" />
<option name="COUNT_FILTER" value="0" />
<option name="CONDITION_ENABLED" value="false" />
<option name="CLASS_FILTERS_ENABLED" value="false" />
<option name="INSTANCE_FILTERS_ENABLED" value="false" />
<option name="CONDITION" value="" />
<option name="LOG_MESSAGE" value="" />
</breakpoint>
<breakpoint url="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/intrinsic/IntrinsicDeclarationVisitor.java" line="26" class="org.jetbrains.k2js.intrinsic.IntrinsicDeclarationVisitor" package="org.jetbrains.k2js.intrinsic">
<option name="ENABLED" value="true" />
<option name="LOG_ENABLED" value="false" />
<option name="LOG_EXPRESSION_ENABLED" value="false" />
<option name="SUSPEND_POLICY" value="SuspendAll" />
<option name="COUNT_FILTER_ENABLED" value="false" />
<option name="COUNT_FILTER" value="0" />
<option name="CONDITION_ENABLED" value="false" />
<option name="CLASS_FILTERS_ENABLED" value="false" />
<option name="INSTANCE_FILTERS_ENABLED" value="false" />
<option name="CONDITION" value="" />
<option name="LOG_MESSAGE" value="" />
</breakpoint>
</line_breakpoints>
<breakpoint_any>
<breakpoint>
@@ -147,31 +192,154 @@
<favorites_list name="k2js" />
</component>
<component name="FileEditorManager">
<splitter split-orientation="horizontal" split-proportion="0.41879195">
<splitter split-orientation="horizontal" split-proportion="0.6067114">
<split-first>
<leaf>
<file leaf-file-name="PropertyDescriptor.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/PropertyDescriptor.java">
<file leaf-file-name="Intrinsics.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/intrinsic/Intrinsics.java">
<provider selected="true" editor-type-id="text-editor">
<state line="175" column="0" selection-start="6343" selection-end="6343" vertical-scroll-proportion="0.0">
<state line="39" column="91" selection-start="1477" selection-end="1477" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
<element signature="e#616#647#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="StandardClassesTest.java" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/StandardClassesTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="20" column="27" selection-start="390" selection-end="390" vertical-scroll-proportion="0.48022598">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ReflectiveCallable.class" pinned="false" current="false" current-in-tab="false">
<entry file="jar://C:/Program Files (x86)/JetBrains/IntelliJ IDEA Community Edition 110.408/lib/junit-4.10.jar!/org/junit/internal/runners/model/ReflectiveCallable.class">
<file leaf-file-name="breakDoWhile.js" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/while/out/breakDoWhile.js">
<provider selected="true" editor-type-id="text-editor">
<state line="11" column="40" selection-start="397" selection-end="397" vertical-scroll-proportion="0.0">
<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="ParentRunner.class" pinned="false" current="false" current-in-tab="false">
<entry file="jar://C:/Program Files (x86)/JetBrains/IntelliJ IDEA Community Edition 110.408/lib/junit-4.10.jar!/org/junit/runners/ParentRunner.class">
<file leaf-file-name="WhileTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/WhileTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="43" column="25" selection-start="2461" selection-end="2461" vertical-scroll-proportion="0.0">
<state line="16" column="16" selection-start="297" selection-end="297" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="JetStandardLibrary.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/types/JetStandardLibrary.java">
<provider selected="true" editor-type-id="text-editor">
<state line="30" column="13" selection-start="1140" selection-end="1140" vertical-scroll-proportion="0.0">
<folding>
<element signature="e#14956#14978#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Library.jet" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/jet/Library.jet">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="DeclarationVisitor.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/declarations/DeclarationVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="70" column="42" selection-start="653" selection-end="2962" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="IntrinsicDeclarationVisitor.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/intrinsic/IntrinsicDeclarationVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="33" column="0" selection-start="1215" selection-end="1215" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="assign.js" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/operation/out/assign.js">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="DeclarationContext.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/declarations/DeclarationContext.java">
<provider selected="true" editor-type-id="text-editor">
<state line="9" column="19" selection-start="362" selection-end="362" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
</leaf>
</split-first>
<split-second>
<leaf>
<file leaf-file-name="BinaryOperationTranslator.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/BinaryOperationTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="42" column="47" selection-start="1748" selection-end="1748" 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/declarations/Declarations.java">
<provider selected="true" editor-type-id="text-editor">
<state line="47" column="12" selection-start="1898" selection-end="1898" vertical-scroll-proportion="0.0">
<folding>
<element signature="e#1007#1041#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="OperationTranslator.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/OperationTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="32" column="0" selection-start="1356" selection-end="1356" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="OperationTest.java" pinned="false" current="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/OperationTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="36" column="16" selection-start="814" selection-end="814" vertical-scroll-proportion="0.92727274">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="PatternMatchingTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/PatternMatchingTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="37" column="16" selection-start="772" selection-end="772" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -180,47 +348,16 @@
<file leaf-file-name="ClassInheritanceTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ClassInheritanceTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="17" column="16" selection-start="321" selection-end="321" vertical-scroll-proportion="0.0">
<state line="47" column="16" selection-start="1168" selection-end="1168" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="TraitTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/TraitTest.java">
<file leaf-file-name="FunctionTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/FunctionTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="17" column="16" selection-start="304" selection-end="304" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Declarations.java" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/declarations/Declarations.java">
<provider selected="true" editor-type-id="text-editor">
<state line="77" column="72" selection-start="3004" selection-end="3004" vertical-scroll-proportion="0.36939722">
<folding>
<element signature="e#912#946#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Aliaser.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/general/Aliaser.java">
<provider selected="true" editor-type-id="text-editor">
<state line="32" column="0" selection-start="1097" selection-end="1097" vertical-scroll-proportion="0.0">
<folding>
<element signature="e#922#953#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="OperatorOverloadingTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/OperatorOverloadingTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="47" column="16" selection-start="1070" selection-end="1070" vertical-scroll-proportion="0.0">
<state line="37" column="16" selection-start="833" selection-end="833" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -235,111 +372,26 @@
</provider>
</entry>
</file>
<file leaf-file-name="classUsesNamespaceProperties.kt" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/propertyAccess/cases/classUsesNamespaceProperties.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="12" column="78" selection-start="94" selection-end="94" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
</leaf>
</split-first>
<split-second>
<leaf>
<file leaf-file-name="ReferenceTranslator.java" pinned="false" current="false" current-in-tab="true">
<file leaf-file-name="ReferenceTranslator.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="68" column="0" selection-start="2643" selection-end="2643" vertical-scroll-proportion="0.3323398">
<state line="73" column="0" selection-start="2860" selection-end="2860" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="UnaryOperationTranslator.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/UnaryOperationTranslator.java">
<file leaf-file-name="ParentRunner.class" pinned="false" current="false" current-in-tab="false">
<entry file="jar://C:/Program Files (x86)/JetBrains/IntelliJ IDEA Community Edition 110.408/lib/junit-4.10.jar!/org/junit/runners/ParentRunner.class">
<provider selected="true" editor-type-id="text-editor">
<state line="128" column="92" selection-start="5282" selection-end="5282" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="PropertyAccessTranslator.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="105" column="20" selection-start="5187" selection-end="5187" vertical-scroll-proportion="0.0">
<state line="34" column="4" selection-start="2015" selection-end="2015" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
<element signature="e#0#3733#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ExpressionVisitor.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="261" column="93" selection-start="11645" selection-end="11645" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="OperationTranslator.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/OperationTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="45" column="39" selection-start="1882" selection-end="1882" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="BinaryOperationTranslator.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/BinaryOperationTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="148" column="102" selection-start="5773" selection-end="5773" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="TranslationUtils.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state line="135" column="0" selection-start="6206" selection-end="6206" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="PropertyAccessTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/PropertyAccessTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="63" column="16" selection-start="1470" selection-end="1470" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="namespaceCustomAccessors.js" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/propertyAccess/out/namespaceCustomAccessors.js">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="TranslationTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/TranslationTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="2" column="25" selection-start="59" selection-end="59" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
</leaf>
</split-second>
</splitter>
@@ -361,22 +413,22 @@
<component name="IdeDocumentHistory">
<option name="changedFiles">
<list>
<option value="$PROJECT_DIR$/translator/testFiles/class/out/classInstantiation.js" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/declarations/DeclarationVisitor.java" />
<option value="$PROJECT_DIR$/translator/testFiles/class/out/simpleInitializer.js" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/ReferenceProvider.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/general/Translation.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/PsiUtils.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/FunctionTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/PatternTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/general/GenerationState.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/UnaryOperationTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/OperationTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/BinaryOperationTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java" />
<option value="$PROJECT_DIR$/translator/testFiles/propertyAccess/out/namespaceCustomAccessors.js" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.java" />
<option value="$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/OperatorConventions.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/intrinsic/Intrinsic.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/intrinsic/BinaryOperationIntrinsic.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/general/Translation.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/general/TranslationContext.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/general/StaticContext.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/BinaryOperationTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/OperationTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/declarations/Declarations.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/intrinsic/IntrinsicDeclarationVisitor.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/intrinsic/Intrinsics.java" />
</list>
</option>
</component>
@@ -527,7 +579,11 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="trait" />
<option name="myItemId" value="expression" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="while" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
@@ -549,7 +605,11 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="trait" />
<option name="myItemId" value="expression" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="while" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
@@ -567,73 +627,7 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="standardClasses" />
<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="standardClasses" />
<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="propertyAccess" />
<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="propertyAccess" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="cases" />
<option name="myItemId" value="expression" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
@@ -695,11 +689,29 @@
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
<PATH_ELEMENT>
<option name="myItemId" value="translate" />
<option name="myItemId" value="intrinsic" />
<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="initializer" />
<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="generate" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
@@ -818,38 +830,6 @@
</key>
</component>
<component name="RunManager" selected="JUnit.All in jetTests">
<configuration default="false" name="BasicClassTest.classInstantiation" 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.BasicClassTest" />
<option name="METHOD_NAME" value="classInstantiation" />
<option name="TEST_OBJECT" value="method" />
<option name="VM_PARAMETERS" value="" />
<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="ClassInheritanceTest.initializersOfBasicClassExecute" type="JUnit" factoryName="JUnit" temporary="true">
<extension name="coverage" enabled="false" merge="false" sample_coverage="true" runner="idea">
<pattern>
@@ -971,6 +951,38 @@
<ConfigurationWrapper RunnerId="Run" />
<method />
</configuration>
<configuration default="false" name="OperationTest.assign" 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.OperationTest" />
<option name="METHOD_NAME" value="assign" />
<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="true" type="Remote" factoryName="Remote">
<option name="USE_SOCKET_TRANSPORT" value="true" />
<option name="SERVER_MODE" value="false" />
@@ -1091,12 +1103,12 @@
<method />
</configuration>
<list size="6">
<item index="0" class="java.lang.String" itemvalue="JUnit.BasicClassTest.classInstantiation" />
<item index="1" class="java.lang.String" itemvalue="JUnit.ClassInheritanceTest.initializersOfBasicClassExecute" />
<item index="2" class="java.lang.String" itemvalue="JUnit.tests" />
<item index="3" class="java.lang.String" itemvalue="JUnit.All in jetTests" />
<item index="4" class="java.lang.String" itemvalue="JUnit.BasicClassTest.SimpleInitializer" />
<item index="5" class="java.lang.String" itemvalue="JUnit.PropertyAccessTest.namespaceCustomAccessors" />
<item index="0" class="java.lang.String" itemvalue="JUnit.ClassInheritanceTest.initializersOfBasicClassExecute" />
<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.BasicClassTest.SimpleInitializer" />
<item index="4" class="java.lang.String" itemvalue="JUnit.PropertyAccessTest.namespaceCustomAccessors" />
<item index="5" class="java.lang.String" itemvalue="JUnit.OperationTest.assign" />
</list>
<configuration name="&lt;template&gt;" type="WebApp" default="true" selected="false">
<Host>localhost</Host>
@@ -1214,7 +1226,7 @@
<option name="INCLUDE_TEXT_INTO_SHELF" value="false" />
<option name="CREATE_PATCH_EXPAND_DETAILS_DEFAULT" value="true" />
<option name="FORCE_NON_EMPTY_COMMENT" value="false" />
<option name="LAST_COMMIT_MESSAGE" value="Work on reference expression. Test fixes to follow." />
<option name="LAST_COMMIT_MESSAGE" value="fix test" />
<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" />
@@ -1227,7 +1239,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="Refactoring BinaryOperationTranslator." />
<MESSAGE value="Binary operation overloading for most cases (except contains, compareTo)." />
<MESSAGE value="Added test for operator overloading." />
<MESSAGE value="Lots of refactoring and code improvements." />
@@ -1252,6 +1263,7 @@
<MESSAGE value="Include standard library." />
<MESSAGE value="Reworked ExtractionVisitor into Declaration visitor." />
<MESSAGE value="Work on reference expression. Test fixes to follow." />
<MESSAGE value="fix test" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager />
@@ -1261,126 +1273,134 @@
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/PropertyAccessorDescriptor.java">
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/types/JetStandardLibrary.java">
<provider selected="true" editor-type-id="text-editor">
<state line="15" column="22" selection-start="457" selection-end="457" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/PsiUtils.java">
<provider selected="true" editor-type-id="text-editor">
<state line="16" column="18" selection-start="420" selection-end="420" vertical-scroll-proportion="0.0">
<state line="30" column="13" selection-start="1140" selection-end="1140" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
<element signature="e#14956#14978#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/TranslationTest.java">
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/OperatorConventions.java">
<provider selected="true" editor-type-id="text-editor">
<state line="2" column="25" selection-start="59" selection-end="59" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/UnaryOperationTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="128" column="92" selection-start="5282" selection-end="5282" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/expression/ExpressionVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="261" column="93" selection-start="11645" selection-end="11645" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/OperationTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="45" column="39" selection-start="1882" selection-end="1882" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/BinaryOperationTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="148" column="102" selection-start="5773" selection-end="5773" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="105" column="20" selection-start="5187" selection-end="5187" vertical-scroll-proportion="0.0">
<state line="35" column="61" selection-start="1142" selection-end="1142" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
<element signature="e#1182#1204#0" expanded="true" />
<element signature="e#2484#2512#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/propertyAccess/out/namespaceCustomAccessors.js">
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/jet/Library.jet">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/PropertyAccessTest.java">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/general/StaticContext.java">
<provider selected="true" editor-type-id="text-editor">
<state line="63" column="16" selection-start="1470" selection-end="1470" vertical-scroll-proportion="0.0">
<state line="86" column="90" selection-start="2721" selection-end="2721" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/TraitTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="135" column="0" selection-start="6206" selection-end="6206" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/propertyAccess/cases/classUsesNamespaceProperties.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="12" column="78" selection-start="94" selection-end="94" vertical-scroll-proportion="0.0">
<state line="37" column="16" selection-start="836" selection-end="836" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/declarations/DeclarationVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="44" column="7" selection-start="1742" selection-end="1742" vertical-scroll-proportion="0.0">
<state line="70" column="42" selection-start="653" selection-end="2962" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/TraitTest.java">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/OperationTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="17" column="16" selection-start="304" selection-end="304" vertical-scroll-proportion="0.0">
<state line="36" column="16" selection-start="814" selection-end="814" vertical-scroll-proportion="0.92727274">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.java">
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/operation/out/assign.js">
<provider selected="true" editor-type-id="text-editor">
<state line="68" column="0" selection-start="2643" selection-end="2643" vertical-scroll-proportion="0.3323398">
<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/src/org/jetbrains/k2js/declarations/Declarations.java">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/intrinsic/IntrinsicDeclarationVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="77" column="72" selection-start="3004" selection-end="3004" vertical-scroll-proportion="0.36939722">
<state line="33" column="0" selection-start="1215" selection-end="1215" vertical-scroll-proportion="0.0">
<folding>
<element signature="e#912#946#0" expanded="true" />
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="jar://C:/Program Files (x86)/JetBrains/IntelliJ IDEA Community Edition 110.283/lib/guava-r09.jar!/com/google/common/collect/ImmutableBiMap.class">
<provider selected="true" editor-type-id="text-editor">
<state line="6" column="22" selection-start="255" selection-end="255" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/WhileTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="16" column="16" selection-start="297" selection-end="297" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/intrinsic/BinaryOperationIntrinsic.java">
<provider selected="true" editor-type-id="text-editor">
<state line="23" column="25" selection-start="965" selection-end="965" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/expression/while/out/breakDoWhile.js">
<provider selected="true" editor-type-id="text-editor">
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/intrinsic/Intrinsics.java">
<provider selected="true" editor-type-id="text-editor">
<state line="39" column="91" selection-start="1477" selection-end="1477" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
<element signature="e#616#647#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/intrinsic/Intrinsic.java">
<provider selected="true" editor-type-id="text-editor">
<state line="16" column="63" selection-start="376" selection-end="513" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/StandardClassesTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="20" column="27" selection-start="390" selection-end="390" vertical-scroll-proportion="0.48022598">
<folding />
</state>
</provider>
</entry>
</component>
<component name="masterDetails">
<states>
@@ -41,11 +41,10 @@ public final class Declarations {
//TODO: provide a mechanism to do intrinsics
public void extractStandardLibrary(@NotNull JetStandardLibrary standardLibrary) {
DeclarationVisitor visitor = new DeclarationVisitor(this);
// for (DeclarationDescriptor descriptor :
// standardLibrary.getLibraryScope().getAllDescriptors()) {
// descriptor.accept(visitor, rootScope);
// }
// standardLibrary.getArray().accept(visitor, rootScope);
for (DeclarationDescriptor descriptor :
standardLibrary.getLibraryScope().getAllDescriptors()) {
descriptor.accept(visitor, DeclarationContext.rootContext(rootScope, null));
}
}
@NotNull
@@ -0,0 +1,31 @@
package org.jetbrains.k2js.intrinsic;
import com.google.dart.compiler.backend.js.ast.JsExpression;
import com.google.dart.compiler.backend.js.ast.JsThisRef;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
import org.jetbrains.jet.lang.psi.JetExpression;
import java.util.List;
/**
* @author Talanov Pavel
*/
public final class BinaryOperationIntrinsic implements Intrinsic {
@NotNull
@Override
public JsExpression apply(@NotNull FunctionDescriptor descriptor, @NotNull JetExpression receiver,
@NotNull List<JetExpression> arguments) {
//TODO: implement
//
// JetToken correspondingToken = OperatorConventions.getTokenForMethodName(descriptor.getName());
// JsBinaryOperator operator = OperatorTable.getBinaryOperator(correspondingToken);
//
// assert arguments.size() == 1 : "Binary operations expects 2 arguments.";
// JsExpression argument = arguments.get(0);
// assert argument != null;
//
// return new JsBinaryOperation(operator, receiver, argument);
return new JsThisRef();
}
}
@@ -0,0 +1,19 @@
package org.jetbrains.k2js.intrinsic;
import com.google.dart.compiler.backend.js.ast.JsExpression;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
import org.jetbrains.jet.lang.psi.JetExpression;
import java.util.List;
/**
* @author Talanov Pavel
*/
public interface Intrinsic {
@NotNull
JsExpression apply(@NotNull FunctionDescriptor descriptor, @NotNull JetExpression receiver,
@NotNull List<JetExpression> arguments);
}
@@ -0,0 +1,36 @@
package org.jetbrains.k2js.intrinsic;
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.DeclarationDescriptorVisitor;
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
/**
* @author Talanov Pavel
*/
public final class IntrinsicDeclarationVisitor extends DeclarationDescriptorVisitor<Void, Void> {
@NotNull
private final Intrinsics intrinsics;
/*package*/ IntrinsicDeclarationVisitor(@NotNull Intrinsics intrinsics) {
this.intrinsics = intrinsics;
}
@Override
public Void visitClassDescriptor(@NotNull ClassDescriptor descriptor, @Nullable Void nothing) {
for (DeclarationDescriptor memberDescriptor :
descriptor.getDefaultType().getMemberScope().getAllDescriptors()) {
memberDescriptor.accept(this, null);
}
return null;
}
@Override
public Void visitFunctionDescriptor(@NotNull FunctionDescriptor descriptor, @Nullable Void nothing) {
intrinsics.declareIntrinsic(descriptor);
return null;
}
}
@@ -0,0 +1,81 @@
package org.jetbrains.k2js.intrinsic;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
import org.jetbrains.jet.lang.types.JetStandardLibrary;
import org.jetbrains.jet.lang.types.expressions.OperatorConventions;
import java.util.HashMap;
import java.util.Map;
/**
* @author Talanov Pavel
*/
public final class Intrinsics {
@NotNull
private final Map<FunctionDescriptor, Intrinsic> descriptorToIntrinsicMap =
new HashMap<FunctionDescriptor, Intrinsic>();
public static Intrinsics standardLibraryIntrinsics(@NotNull JetStandardLibrary library) {
return new Intrinsics(library);
}
private Intrinsics(@NotNull JetStandardLibrary library) {
IntrinsicDeclarationVisitor visitor = new IntrinsicDeclarationVisitor(this);
for (DeclarationDescriptor descriptor : library.getLibraryScope().getAllDescriptors()) {
descriptor.accept(visitor, null);
}
}
/*package*/ void declareIntrinsic(@NotNull FunctionDescriptor descriptor) {
//TODO: this is a hack
// addBinaryIntrinsics(descriptor);
// addUnaryIntrinsics(descriptor);
// addAssignmentIntrinsics(descriptor);
// addEqualsIntrinsics(descriptor);
BinaryOperationIntrinsic binaryOperationIntrinsic = new BinaryOperationIntrinsic();
descriptorToIntrinsicMap.put(descriptor, binaryOperationIntrinsic);
}
private void addEqualsIntrinsics(FunctionDescriptor descriptor) {
BinaryOperationIntrinsic binaryOperationIntrinsic = new BinaryOperationIntrinsic();
String functionName = descriptor.getName();
if (OperatorConventions.ASSIGNMENT_OPERATIONS.containsValue(functionName)) {
descriptorToIntrinsicMap.put(descriptor, binaryOperationIntrinsic);
}
}
private void addUnaryIntrinsics(@NotNull FunctionDescriptor descriptor) {
BinaryOperationIntrinsic binaryOperationIntrinsic = new BinaryOperationIntrinsic();
String functionName = descriptor.getName();
if (OperatorConventions.UNARY_OPERATION_NAMES.containsValue(functionName)) {
descriptorToIntrinsicMap.put(descriptor, binaryOperationIntrinsic);
}
}
private void addBinaryIntrinsics(@NotNull FunctionDescriptor descriptor) {
String functionName = descriptor.getName();
if (OperatorConventions.BINARY_OPERATION_NAMES.containsValue(functionName)) {
BinaryOperationIntrinsic binaryOperationIntrinsic = new BinaryOperationIntrinsic();
descriptorToIntrinsicMap.put(descriptor, binaryOperationIntrinsic);
}
}
private void addAssignmentIntrinsics(@NotNull FunctionDescriptor descriptor) {
String functionName = descriptor.getName();
if (OperatorConventions.ASSIGNMENT_OPERATIONS.containsValue(functionName)) {
BinaryOperationIntrinsic binaryOperationIntrinsic = new BinaryOperationIntrinsic();
descriptorToIntrinsicMap.put(descriptor, binaryOperationIntrinsic);
}
}
public boolean isIntrinsic(@NotNull DeclarationDescriptor descriptor) {
if (descriptor instanceof FunctionDescriptor) {
FunctionDescriptor functionDescriptor = (FunctionDescriptor) descriptor;
return descriptorToIntrinsicMap.containsKey(functionDescriptor);
}
return false;
}
}
@@ -100,7 +100,7 @@ public final class ClassTranslator extends AbstractTranslator {
@NotNull
private JsNameRef getClassReference(@NotNull ClassDescriptor superClassDescriptor) {
//TODO we actually know that in current implementation superclass must have an alias but
// if future it might change
// in future it might change
return context().aliaser().getAliasForDeclaration(superClassDescriptor);
}
@@ -57,7 +57,6 @@ public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
public JsNode visitBlockExpression(@NotNull JetBlockExpression jetBlock, @NotNull TranslationContext context) {
List<JetElement> statements = jetBlock.getStatements();
JsBlock jsBlock = new JsBlock();
;
for (JetElement statement : statements) {
assert statement instanceof JetExpression : "Elements in JetBlockExpression " +
"should be of type JetExpression";
@@ -45,6 +45,7 @@ public final class FunctionTranslator extends AbstractTranslator {
//TODO: consider refactoring
@NotNull
public JsExpression translateAsLiteral() {
//TODO: provide a way not to pollute global namespace
JsName aliasForThis = context().enclosingScope().declareName("that");
context().aliaser().setAliasForThis(aliasForThis);
JsFunction function = generateFunctionObject();
@@ -2,7 +2,6 @@ package org.jetbrains.k2js.translate.expression;
import com.google.dart.compiler.backend.js.ast.JsExpression;
import com.google.dart.compiler.backend.js.ast.JsInvocation;
import com.google.dart.compiler.backend.js.ast.JsName;
import com.google.dart.compiler.backend.js.ast.JsNameRef;
import com.google.dart.compiler.util.AstUtil;
import org.jetbrains.annotations.NotNull;
@@ -96,9 +95,6 @@ public final class PatternTranslator extends AbstractTranslator {
private JsNameRef getClassNameReferenceForTypeReference(@NotNull JetTypeReference typeReference) {
ClassDescriptor referencedClass = BindingUtils.getClassDescriptorForTypeReference
(context().bindingContext(), typeReference);
//TODO should reference class by full name here
JsName className = context().getNameForDescriptor(referencedClass);
assert TranslationUtils.hasQualifier(context(), referencedClass);
return TranslationUtils.getQualifiedReference(context(), referencedClass);
}
@@ -13,6 +13,7 @@ import org.jetbrains.k2js.translate.utils.BindingUtils;
import java.util.List;
//TODO: rework this class and the outer API
public final class GenerationState {
@NotNull
@@ -0,0 +1,121 @@
package org.jetbrains.k2js.translate.general;
import com.google.dart.compiler.backend.js.ast.JsName;
import com.google.dart.compiler.backend.js.ast.JsProgram;
import com.google.dart.compiler.backend.js.ast.JsRootScope;
import com.google.dart.compiler.backend.js.ast.JsScope;
import org.jetbrains.annotations.NotNull;
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.declarations.Declarations;
import org.jetbrains.k2js.intrinsic.Intrinsics;
import org.jetbrains.k2js.translate.utils.Namer;
public class StaticContext {
public static StaticContext generateStaticContext(@NotNull JetStandardLibrary library,
@NotNull BindingContext bindingContext) {
JsProgram program = new JsProgram("main");
JsRootScope rootScope = program.getRootScope();
Namer namer = Namer.newInstance(rootScope);
Aliaser aliaser = Aliaser.aliasesForStandardClasses(library, namer);
Declarations declarations = Declarations.newInstance(rootScope);
Intrinsics intrinsics = Intrinsics.standardLibraryIntrinsics(library);
return new StaticContext(program, bindingContext, declarations, aliaser, namer, intrinsics);
}
@NotNull
private final JsProgram program;
@NotNull
public final BindingContext bindingContext;
@NotNull
private final Declarations declarations;
@NotNull
private final Aliaser aliaser;
@NotNull
private final Namer namer;
@NotNull
private final Intrinsics intrinsics;
private StaticContext(@NotNull JsProgram program, @NotNull BindingContext bindingContext,
@NotNull Declarations declarations, @NotNull Aliaser aliaser,
@NotNull Namer namer, @NotNull Intrinsics intrinsics) {
this.program = program;
this.bindingContext = bindingContext;
this.declarations = declarations;
this.aliaser = aliaser;
this.namer = namer;
this.intrinsics = intrinsics;
}
@NotNull
public JsProgram getProgram() {
return program;
}
@NotNull
public BindingContext getBindingContext() {
return bindingContext;
}
@NotNull
public Declarations getDeclarations() {
return declarations;
}
@NotNull
public Aliaser getAliaser() {
return aliaser;
}
@NotNull
public Intrinsics getIntrinsics() {
return intrinsics;
}
@NotNull
public Namer getNamer() {
return namer;
}
@NotNull
public JsScope getScopeForDescriptor(@NotNull DeclarationDescriptor descriptor) {
return declarations.getScope(descriptor);
}
@NotNull
public JsScope getScopeForElement(@NotNull JetElement element) {
DeclarationDescriptor descriptor = getDescriptorForElement(element);
return getScopeForDescriptor(descriptor);
}
@NotNull
public JsName getNameForDescriptor(@NotNull DeclarationDescriptor descriptor) {
return declarations.getName(descriptor);
}
@NotNull
public JsName getNameForElement(@NotNull JetElement element) {
DeclarationDescriptor descriptor = getDescriptorForElement(element);
return getNameForDescriptor(descriptor);
}
@NotNull
DeclarationDescriptor getDescriptorForElement(@NotNull JetElement element) {
DeclarationDescriptor descriptor = bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, element);
assert descriptor != null : "Element should have a descriptor";
return descriptor;
}
public boolean isDeclared(@NotNull DeclarationDescriptor descriptor) {
return declarations.hasDeclaredName(descriptor);
}
}
@@ -8,7 +8,6 @@ import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.types.JetStandardLibrary;
import org.jetbrains.k2js.declarations.Declarations;
import org.jetbrains.k2js.translate.declaration.ClassTranslator;
import org.jetbrains.k2js.translate.declaration.NamespaceTranslator;
import org.jetbrains.k2js.translate.expression.ExpressionVisitor;
@@ -56,17 +55,20 @@ public final class Translation {
}
@NotNull
static public JsExpression translateAsExpression(@NotNull JetExpression expression, @NotNull TranslationContext context) {
static public JsExpression translateAsExpression(@NotNull JetExpression expression,
@NotNull TranslationContext context) {
return AstUtil.convertToExpression(translateExpression(expression, context));
}
@NotNull
static public JsStatement translateAsStatement(@NotNull JetExpression expression, @NotNull TranslationContext context) {
static public JsStatement translateAsStatement(@NotNull JetExpression expression,
@NotNull TranslationContext context) {
return AstUtil.convertToStatement(translateExpression(expression, context));
}
@NotNull
static public JsNode translateWhenExpression(@NotNull JetWhenExpression expression, @NotNull TranslationContext context) {
static public JsNode translateWhenExpression(@NotNull JetWhenExpression expression,
@NotNull TranslationContext context) {
return WhenTranslator.translateWhenExpression(expression, context);
}
@@ -84,16 +86,15 @@ public final class Translation {
public static JsProgram generateAst(@NotNull BindingContext bindingContext,
@NotNull JetNamespace namespace, @NotNull Project project) {
//TODO hardcoded
JsProgram result = new JsProgram("main");
JetStandardLibrary standardLibrary = JetStandardLibrary.getJetStandardLibrary(project);
NamespaceDescriptor descriptor = BindingUtils.getNamespaceDescriptor(bindingContext, namespace);
Declarations declarations = Declarations.newInstance(result.getRootScope());
declarations.extractStandardLibrary(JetStandardLibrary.getJetStandardLibrary(project));
declarations.extractDeclarations(descriptor);
JsBlock block = result.getFragmentBlock(0);
TranslationContext context = TranslationContext.rootContext(result, bindingContext, declarations, project);
StaticContext staticContext = StaticContext.generateStaticContext(standardLibrary, bindingContext);
staticContext.getDeclarations().extractStandardLibrary(standardLibrary);
staticContext.getDeclarations().extractDeclarations(descriptor);
JsBlock block = staticContext.getProgram().getFragmentBlock(0);
TranslationContext context = TranslationContext.rootContext(staticContext);
block.addStatement(Translation.translateNamespace(namespace, context));
return result;
return context.program();
}
@@ -3,13 +3,12 @@ package org.jetbrains.k2js.translate.general;
import com.google.dart.compiler.backend.js.ast.JsName;
import com.google.dart.compiler.backend.js.ast.JsProgram;
import com.google.dart.compiler.backend.js.ast.JsScope;
import com.intellij.openapi.project.Project;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.descriptors.*;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.types.JetStandardLibrary;
import org.jetbrains.k2js.declarations.Declarations;
import org.jetbrains.k2js.intrinsic.Intrinsics;
import org.jetbrains.k2js.translate.utils.BindingUtils;
import org.jetbrains.k2js.translate.utils.Namer;
@@ -18,7 +17,6 @@ import org.jetbrains.k2js.translate.utils.Namer;
*/
public final class TranslationContext {
// TODO: extract different parts of this classes into separate classes
private static class Scopes {
public Scopes(@NotNull JsScope enclosingScope, @NotNull JsScope functionScope, @NotNull JsScope namespaceScope) {
this.enclosingScope = enclosingScope;
@@ -35,72 +33,50 @@ public final class TranslationContext {
}
@NotNull
public static TranslationContext rootContext(@NotNull JsProgram program, @NotNull BindingContext bindingContext,
@NotNull Declarations extractor, @NotNull Project project) {
JsScope rootScope = program.getRootScope();
public static TranslationContext rootContext(@NotNull StaticContext staticContext) {
JsScope rootScope = staticContext.getProgram().getRootScope();
Scopes scopes = new Scopes(rootScope, rootScope, rootScope);
Namer namer = Namer.newInstance(rootScope);
Aliaser aliaser = Aliaser.aliasesForStandardClasses
(JetStandardLibrary.getJetStandardLibrary(project), namer);
return new TranslationContext(program, bindingContext,
scopes, extractor, aliaser, namer);
return new TranslationContext(staticContext, scopes);
}
@NotNull
private final JsProgram program;
@NotNull
private final BindingContext bindingContext;
@NotNull
private final Scopes scopes;
@NotNull
private final Declarations declarations;
@NotNull
private final Aliaser aliaser;
@NotNull
private final Namer namer;
private final StaticContext staticContext;
private TranslationContext(@NotNull JsProgram program,
@NotNull BindingContext bindingContext, @NotNull Scopes scopes,
@NotNull Declarations declarations, @NotNull Aliaser aliaser,
@NotNull Namer namer) {
this.program = program;
this.bindingContext = bindingContext;
private TranslationContext(@NotNull StaticContext staticContext, @NotNull Scopes scopes) {
this.scopes = scopes;
this.declarations = declarations;
this.aliaser = aliaser;
this.namer = namer;
this.staticContext = staticContext;
}
@NotNull
public TranslationContext newNamespace(@NotNull JetNamespace declaration) {
return newNamespace(BindingUtils.getNamespaceDescriptor(bindingContext, declaration));
return newNamespace(BindingUtils.getNamespaceDescriptor(staticContext.getBindingContext(), declaration));
}
@NotNull
public TranslationContext newNamespace(@NotNull NamespaceDescriptor descriptor) {
JsScope namespaceScope = declarations.getScope(descriptor);
JsScope namespaceScope = staticContext.getDeclarations().getScope(descriptor);
Scopes newScopes = new Scopes(namespaceScope, namespaceScope, namespaceScope);
return new TranslationContext(program, bindingContext, newScopes,
declarations, aliaser, namer);
return new TranslationContext(staticContext, newScopes);
}
@NotNull
public TranslationContext newClass(@NotNull JetClass declaration) {
return newClass(BindingUtils.getClassDescriptor(bindingContext, declaration));
return newClass(BindingUtils.getClassDescriptor(staticContext.getBindingContext(), declaration));
}
@NotNull
public TranslationContext newClass(@NotNull ClassDescriptor descriptor) {
JsScope classScope = declarations.getScope(descriptor);
JsScope classScope = staticContext.getDeclarations().getScope(descriptor);
Scopes newScopes = new Scopes(classScope, classScope, scopes.namespaceScope);
return new TranslationContext(program, bindingContext,
newScopes, declarations, aliaser, namer);
return new TranslationContext(staticContext, newScopes);
}
@NotNull
public TranslationContext newPropertyAccess(@NotNull JetPropertyAccessor declaration) {
return newPropertyAccess(BindingUtils.getPropertyAccessorDescriptor(bindingContext, declaration));
return newPropertyAccess(BindingUtils.getPropertyAccessorDescriptor(staticContext.getBindingContext(), declaration));
}
@NotNull
@@ -110,33 +86,31 @@ public final class TranslationContext {
@NotNull
public TranslationContext newFunctionDeclaration(@NotNull JetNamedFunction declaration) {
return newFunctionDeclaration(BindingUtils.getFunctionDescriptor(bindingContext, declaration));
return newFunctionDeclaration(BindingUtils.getFunctionDescriptor(staticContext.getBindingContext(), declaration));
}
@NotNull
public TranslationContext newFunctionDeclaration(@NotNull FunctionDescriptor descriptor) {
JsScope functionScope = declarations.getScope(descriptor);
JsScope functionScope = staticContext.getDeclarations().getScope(descriptor);
Scopes newScopes = new Scopes(functionScope, scopes.classScope, scopes.namespaceScope);
return new TranslationContext(program, bindingContext,
newScopes, declarations, aliaser, namer);
return new TranslationContext(staticContext, newScopes);
}
// Note: Should be used if and only if scope has no corresponding descriptor
@NotNull
public TranslationContext newEnclosingScope(@NotNull JsScope enclosingScope) {
Scopes newScopes = new Scopes(enclosingScope, scopes.classScope, scopes.namespaceScope);
return new TranslationContext(program, bindingContext,
newScopes, declarations, aliaser, namer);
return new TranslationContext(staticContext, newScopes);
}
@NotNull
public BindingContext bindingContext() {
return bindingContext;
return staticContext.getBindingContext();
}
@NotNull
public JsProgram program() {
return program;
return staticContext.getProgram();
}
@NotNull
@@ -157,49 +131,50 @@ public final class TranslationContext {
@NotNull
public JsScope getScopeForDescriptor(@NotNull DeclarationDescriptor descriptor) {
return declarations.getScope(descriptor);
return staticContext.getScopeForDescriptor(descriptor);
}
@NotNull
public JsScope getScopeForElement(@NotNull JetElement element) {
DeclarationDescriptor descriptor = getDescriptorForElement(element);
return getScopeForDescriptor(descriptor);
return staticContext.getScopeForElement(element);
}
@NotNull
public JsName getNameForDescriptor(@NotNull DeclarationDescriptor descriptor) {
return declarations.getName(descriptor);
return staticContext.getNameForDescriptor(descriptor);
}
@NotNull
public JsName getNameForElement(@NotNull JetElement element) {
DeclarationDescriptor descriptor = getDescriptorForElement(element);
return getNameForDescriptor(descriptor);
return staticContext.getNameForElement(element);
}
@NotNull
private DeclarationDescriptor getDescriptorForElement(@NotNull JetElement element) {
DeclarationDescriptor descriptor = bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, element);
assert descriptor != null : "Element should have a descriptor";
return descriptor;
return staticContext.getDescriptorForElement(element);
}
public boolean isDeclared(@NotNull DeclarationDescriptor descriptor) {
return declarations.hasDeclaredName(descriptor);
return staticContext.isDeclared(descriptor);
}
@NotNull
public Aliaser aliaser() {
return aliaser;
return staticContext.getAliaser();
}
@NotNull
public Namer namer() {
return namer;
return staticContext.getNamer();
}
@NotNull
public Declarations declarations() {
return declarations;
return staticContext.getDeclarations();
}
@NotNull
public Intrinsics intrinsics() {
return staticContext.getIntrinsics();
}
}
@@ -61,9 +61,9 @@ public final class BinaryOperationTranslator extends OperationTranslator {
private JsExpression asCompareToOverload() {
JetToken operationToken = getOperationToken();
assert (OperatorConventions.COMPARISON_OPERATIONS.contains(operationToken));
JsNumberLiteral zetoLiteral = program().getNumberLiteral(0);
JsNumberLiteral zeroLiteral = program().getNumberLiteral(0);
JsBinaryOperator correspondingOperator = OperatorTable.getBinaryOperator(operationToken);
return new JsBinaryOperation(correspondingOperator, overloadedMethodInvocation(), zetoLiteral);
return new JsBinaryOperation(correspondingOperator, overloadedMethodInvocation(), zeroLiteral);
}
private boolean isOverloadedCall() {
@@ -29,6 +29,9 @@ public class OperationTranslator extends AbstractTranslator {
if (operationDescriptor == null) {
return null;
}
if (context().intrinsics().isIntrinsic(operationDescriptor)) {
return null;
}
if (!context().isDeclared(operationDescriptor)) {
return null;
}
@@ -107,7 +107,6 @@ public final class UnaryOperationTranslator extends OperationTranslator {
return AstUtil.newSequence(t1.assignmentExpression(), t2.assignmentExpression(), methodCall, returnedValue);
}
//TODO: should modify this for properties
@NotNull
private JsExpression variableReassignment(@NotNull JsExpression toCallMethodUpon) {
if (isPropertyAccess) {
@@ -23,7 +23,6 @@ import org.jetbrains.k2js.translate.utils.TranslationUtils;
/**
* @author Talanov Pavel
*/
//TODO Refactor.
public final class PropertyAccessTranslator extends AbstractTranslator {
private static String MESSAGE = "Cannot be accessor call. Use canBeProperty*Call to ensure this method " +
@@ -219,6 +218,15 @@ public final class PropertyAccessTranslator extends AbstractTranslator {
@Nullable
private JsName getNullableSetterName() {
PropertySetterDescriptor setter = getSetterDescriptor();
if (setter == null) return null;
return context().getNameForDescriptor(setter);
}
@Nullable
private PropertySetterDescriptor getSetterDescriptor() {
PropertyDescriptor property = getNullablePropertyDescriptor();
if (property == null) {
return null;
@@ -227,7 +235,7 @@ public final class PropertyAccessTranslator extends AbstractTranslator {
if (setter == null) {
return null;
}
return context().getNameForDescriptor(setter);
return setter;
}
@Nullable