added visitors
This commit is contained in:
Generated
+82
-119
@@ -98,28 +98,10 @@
|
||||
<splitter split-orientation="horizontal" split-proportion="0.4299611">
|
||||
<split-first>
|
||||
<leaf>
|
||||
<file leaf-file-name="DeclarationTranslator.java" pinned="false" current="false" current-in-tab="false">
|
||||
<file leaf-file-name="DeclarationTranslator.java" pinned="false" current="true" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/src/org/jetbrains/k2js/translate/DeclarationTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="26" column="16" selection-start="679" selection-end="679" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="JetVisitor.java" pinned="false" current="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetVisitor.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="12" column="54" selection-start="280" selection-end="280" vertical-scroll-proportion="0.35416666">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="JetNamespaceBody.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetNamespaceBody.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="11" column="13" selection-start="216" selection-end="216" vertical-scroll-proportion="0.0">
|
||||
<state line="75" column="30" selection-start="2696" selection-end="2696" vertical-scroll-proportion="1.5930233">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
@@ -134,10 +116,30 @@
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="JsToStringGenerationVisitor.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/com/google/dart/compiler/backend/js/JsToStringGenerationVisitor.java">
|
||||
<file leaf-file-name="K2JsVisitor.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/org/jetbrains/k2js/translate/K2JsVisitor.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="665" column="0" selection-start="17342" selection-end="17342" vertical-scroll-proportion="0.0">
|
||||
<state line="18" column="52" selection-start="550" selection-end="550" vertical-scroll-proportion="0.0">
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="JetVisitor.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetVisitor.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="39" column="35" selection-start="1120" selection-end="1120" vertical-scroll-proportion="-8.692307">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="JetNamespaceBody.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetNamespaceBody.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="11" column="13" selection-start="216" selection-end="216" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
@@ -192,10 +194,10 @@
|
||||
</split-first>
|
||||
<split-second>
|
||||
<leaf>
|
||||
<file leaf-file-name="ExpressionTranslator.java" pinned="false" current="false" current-in-tab="false">
|
||||
<file leaf-file-name="ExpressionTranslator.java" pinned="false" current="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/src/org/jetbrains/k2js/translate/ExpressionTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="28" column="11" selection-start="865" selection-end="865" vertical-scroll-proportion="0.0">
|
||||
<state line="29" column="5" selection-start="876" selection-end="876" vertical-scroll-proportion="0.53543305">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
@@ -204,7 +206,7 @@
|
||||
<file leaf-file-name="ExpressionVisitor.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/org/jetbrains/k2js/translate/ExpressionVisitor.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="20" column="46" selection-start="686" selection-end="686" vertical-scroll-proportion="-11.48">
|
||||
<state line="15" column="57" selection-start="493" selection-end="493" vertical-scroll-proportion="-10.2">
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
@@ -239,19 +241,10 @@
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="JsNameRef.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/src/com/google/dart/compiler/backend/js/ast/JsNameRef.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="9" column="25" selection-start="362" selection-end="362" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="test.kt" pinned="false" current="true" current-in-tab="true">
|
||||
<file leaf-file-name="test.kt" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/test_files/test.kt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="18" column="1" selection-start="271" selection-end="271" vertical-scroll-proportion="0.48188975">
|
||||
<state line="17" column="42" selection-start="269" selection-end="269" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
@@ -301,8 +294,6 @@
|
||||
<component name="IdeDocumentHistory">
|
||||
<option name="changedFiles">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/src/org/jetbrains/k2js/translate/Translator.java" />
|
||||
<option value="$PROJECT_DIR$/src/org/jetbrains/k2js/translate/GenerationState.java" />
|
||||
<option value="$PROJECT_DIR$/src/org/jetbrains/k2js/translate/OperationTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/src/com/google/dart/compiler/backend/js/ast/JsFunction.java" />
|
||||
<option value="$PROJECT_DIR$/src/org/jetbrains/k2js/translate/AbstractTranslator.java" />
|
||||
@@ -313,10 +304,12 @@
|
||||
<option value="$PROJECT_DIR$/src/org/jetbrains/k2js/translate/FunctionTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/test_files/test.kt" />
|
||||
<option value="$PROJECT_DIR$/src/org/jetbrains/k2js/K2JSTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetVisitor.java" />
|
||||
<option value="$PROJECT_DIR$/src/org/jetbrains/k2js/translate/TranslationContext.java" />
|
||||
<option value="$PROJECT_DIR$/src/org/jetbrains/k2js/translate/ExpressionTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/src/org/jetbrains/k2js/translate/K2JsVisitor.java" />
|
||||
<option value="$PROJECT_DIR$/src/org/jetbrains/k2js/translate/ExpressionVisitor.java" />
|
||||
<option value="$PROJECT_DIR$/src/org/jetbrains/k2js/translate/DeclarationVisitor.java" />
|
||||
<option value="$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetVisitor.java" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
@@ -393,38 +386,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="k2js" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="test_files" />
|
||||
<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="k2js" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="test" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="js" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="k2js" />
|
||||
@@ -490,7 +451,7 @@
|
||||
<property name="options.splitter.main.proportions" value="0.3" />
|
||||
<property name="recentsLimit" value="5" />
|
||||
<property name="MemberChooser.sorted" value="false" />
|
||||
<property name="options.lastSelected" value="fileTemplates" />
|
||||
<property name="options.lastSelected" value="preferences.pluginManager" />
|
||||
<property name="project.structure.side.proportion" value="0.2" />
|
||||
<property name="MemberChooser.copyJavadoc" value="false" />
|
||||
<property name="GoToClass.toSaveIncludeLibraries" value="false" />
|
||||
@@ -669,7 +630,7 @@
|
||||
</component>
|
||||
<component name="ToolWindowManager">
|
||||
<frame x="-8" y="-8" width="1936" height="1176" extended-state="6" />
|
||||
<editor active="false" />
|
||||
<editor active="true" />
|
||||
<layout>
|
||||
<window_info id="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
@@ -683,9 +644,9 @@
|
||||
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" 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.33" sideWeight="0.5" order="3" 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.17540108" sideWeight="0.6719057" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.17540108" sideWeight="0.6719057" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Dependency Viewer" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.3280943" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Run" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.3280943" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="JsTestDriver Server" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
@@ -745,34 +706,6 @@
|
||||
<option name="FILTER_TARGETS" value="false" />
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$PROJECT_DIR$/src/org/jetbrains/k2js/translate/ContextType.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="22" column="63" selection-start="800" selection-end="800" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/com/google/dart/compiler/util/AstUtil.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="126" column="20" selection-start="4197" selection-end="4197" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/com/google/dart/compiler/backend/js/ast/JsVars.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="15" column="13" selection-start="463" selection-end="463" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/com/google/dart/compiler/backend/js/JsSourceGenerationVisitor.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="24" column="0" selection-start="837" selection-end="837" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/org/jetbrains/k2js/translate/NamespaceTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="38" column="69" selection-start="1402" selection-end="1402" vertical-scroll-proportion="0.0">
|
||||
@@ -808,13 +741,6 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/org/jetbrains/k2js/translate/DeclarationTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="26" column="16" selection-start="679" selection-end="679" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/org/jetbrains/k2js/translate/TranslationContext.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="6" column="36" selection-start="273" selection-end="274" vertical-scroll-proportion="-0.65384614">
|
||||
@@ -829,32 +755,69 @@
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/org/jetbrains/k2js/translate/ExpressionTranslator.java">
|
||||
<entry file="file://$PROJECT_DIR$/test_files/test.kt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="28" column="11" selection-start="865" selection-end="865" vertical-scroll-proportion="0.0">
|
||||
<state line="17" column="42" selection-start="269" selection-end="269" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/org/jetbrains/k2js/translate/ExpressionVisitor.java">
|
||||
<entry file="file://$PROJECT_DIR$/src/org/jetbrains/k2js/translate/K2JsVisitor.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="20" column="46" selection-start="686" selection-end="686" vertical-scroll-proportion="-11.48">
|
||||
<state line="18" column="52" selection-start="550" selection-end="550" vertical-scroll-proportion="0.0">
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetVisitor.java">
|
||||
<entry file="file://$PROJECT_DIR$/src/com/google/dart/compiler/backend/js/ast/JsNameRef.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="12" column="54" selection-start="280" selection-end="280" vertical-scroll-proportion="0.35416666">
|
||||
<state line="9" column="25" selection-start="362" selection-end="362" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/test_files/test.kt">
|
||||
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetVisitor.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="18" column="1" selection-start="271" selection-end="271" vertical-scroll-proportion="0.48188975">
|
||||
<state line="39" column="35" selection-start="1120" selection-end="1120" vertical-scroll-proportion="-8.692307">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/com/google/dart/compiler/backend/js/JsToStringGenerationVisitor.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="665" column="0" selection-start="17342" selection-end="17342" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/org/jetbrains/k2js/translate/FunctionTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="38" column="15" selection-start="1475" selection-end="1475" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/org/jetbrains/k2js/translate/ExpressionVisitor.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="15" column="57" selection-start="493" selection-end="493" vertical-scroll-proportion="-10.2">
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/org/jetbrains/k2js/translate/ExpressionTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="29" column="5" selection-start="876" selection-end="876" vertical-scroll-proportion="0.53543305">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/src/org/jetbrains/k2js/translate/DeclarationTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="75" column="30" selection-start="2696" selection-end="2696" vertical-scroll-proportion="1.5930233">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
|
||||
Binary file not shown.
@@ -1,5 +1,6 @@
|
||||
package org.jetbrains.k2js;
|
||||
|
||||
import com.google.common.base.Predicates;
|
||||
import com.google.common.collect.LinkedHashMultimap;
|
||||
import com.google.common.collect.Lists;
|
||||
import com.google.common.collect.Multimap;
|
||||
@@ -83,7 +84,7 @@ public class K2JSTranslator {
|
||||
}
|
||||
|
||||
BindingContext bindingContext = AnalyzingUtils.getInstance(JavaDefaultImports.JAVA_DEFAULT_IMPORTS)
|
||||
.analyzeNamespaces(project, namespaces, JetControlFlowDataTraceFactory.EMPTY);
|
||||
.analyzeNamespaces(project, namespaces, Predicates.<PsiFile>alwaysTrue(), JetControlFlowDataTraceFactory.EMPTY);
|
||||
|
||||
ErrorCollector errorCollector = new ErrorCollector(bindingContext);
|
||||
errorCollector.report();
|
||||
|
||||
@@ -16,6 +16,8 @@ import java.util.List;
|
||||
*/
|
||||
class ExpressionTranslator extends AbstractTranslator {
|
||||
|
||||
final private ExpressionVisitor visitor = new ExpressionVisitor();
|
||||
|
||||
public ExpressionTranslator(TranslationContext context) {
|
||||
super(context);
|
||||
}
|
||||
@@ -23,80 +25,7 @@ class ExpressionTranslator extends AbstractTranslator {
|
||||
@NotNull
|
||||
public JsNode translate(JetExpression jetExpression) {
|
||||
assert jetExpression != null;
|
||||
if (jetExpression instanceof JetConstantExpression) {
|
||||
return translateConstantExpression((JetConstantExpression) jetExpression);
|
||||
}
|
||||
if (jetExpression instanceof JetReturnExpression) {
|
||||
return translateReturn((JetReturnExpression) jetExpression);
|
||||
}
|
||||
if (jetExpression instanceof JetBlockExpression) {
|
||||
return translateBlock((JetBlockExpression) jetExpression);
|
||||
}
|
||||
if (jetExpression instanceof JetBinaryExpression) {
|
||||
return translateBinaryExpression((JetBinaryExpression)jetExpression);
|
||||
}
|
||||
if (jetExpression instanceof JetParenthesizedExpression) {
|
||||
return translate(((JetParenthesizedExpression)(jetExpression)).getExpression());
|
||||
}
|
||||
if (jetExpression instanceof JetProperty) {
|
||||
DeclarationTranslator declarationTranslator = new DeclarationTranslator(translationContext());
|
||||
return declarationTranslator.translateProperty((JetProperty)jetExpression);
|
||||
}
|
||||
if (jetExpression instanceof JetSimpleNameExpression) {
|
||||
return translateSimpleNameExpression((JetSimpleNameExpression)jetExpression);
|
||||
}
|
||||
throw new RuntimeException("Unexpected expression encountered:" + jetExpression.toString());
|
||||
}
|
||||
return jetExpression.accept(visitor, translationContext());
|
||||
|
||||
private JsNameRef translateSimpleNameExpression(JetSimpleNameExpression jetSimpleNameExpression) {
|
||||
String referencedName = jetSimpleNameExpression.getReferencedName();
|
||||
return new JsNameRef(getJSName(referencedName));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsExpression translateConstantExpression(JetConstantExpression expression) {
|
||||
JsExpression result = null;
|
||||
Object value;
|
||||
CompileTimeConstant<?> compileTimeValue = bindingContext().get(BindingContext.COMPILE_TIME_VALUE, expression);
|
||||
assert compileTimeValue != null;
|
||||
value = compileTimeValue.getValue();
|
||||
if (value instanceof Integer) {
|
||||
result = program().getNumberLiteral((Integer) value);
|
||||
}
|
||||
assert result != null;
|
||||
return result;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsReturn translateReturn(JetReturnExpression jetReturnExpression) {
|
||||
JsExpression jsExpression = (JsExpression) translate(jetReturnExpression.getReturnedExpression());
|
||||
JsReturn jsReturnExpression = new JsReturn(jsExpression);
|
||||
return jsReturnExpression;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsBlock translateBlock(JetBlockExpression jetBlock) {
|
||||
List<JetElement> jetElements = jetBlock.getStatements();
|
||||
JsBlock jsBlock = new JsBlock();
|
||||
ExpressionTranslator expressionTranslator =
|
||||
new ExpressionTranslator(translationContext().newBlock(jsBlock));
|
||||
for (JetElement jetElement : jetElements) {
|
||||
//TODO hack alert
|
||||
JetExpression jetExpression = (JetExpression) jetElement;
|
||||
JsNode jsNode = expressionTranslator.translate(jetExpression);
|
||||
jsBlock.addStatement(AstUtil.convertToStatement(jsNode));
|
||||
}
|
||||
return jsBlock;
|
||||
}
|
||||
|
||||
private JsBinaryOperation translateBinaryExpression(JetBinaryExpression jetBinaryExpression) {
|
||||
JsExpression left = AstUtil.convertToExpression(translate(jetBinaryExpression.getLeft()));
|
||||
JsExpression right = AstUtil.convertToExpression(translate(jetBinaryExpression.getRight()));
|
||||
//TODO cast dangerous?
|
||||
JetToken jetOperationToken = (JetToken)jetBinaryExpression.getOperationToken();
|
||||
JsBinaryOperation jsBinaryOperation =
|
||||
new JsBinaryOperation(OperationTranslator.getBinaryOperator(jetOperationToken), left, right);
|
||||
return jsBinaryOperation;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -73,6 +73,12 @@ public class TranslationContext {
|
||||
return new JsNameRef(name);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public JsName getJSName(String jetName) {
|
||||
//TODO dummy implemetation
|
||||
return new JsName(program().getScope(), jetName, jetName, jetName);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public BindingContext bindingContext() {
|
||||
return context;
|
||||
|
||||
Reference in New Issue
Block a user