Added class inheritance support and reorganised test classes.
Minor impovements include: 1. Support for functions with no body 2. Not equals operator 3. Refactorings.
This commit is contained in:
Generated
+401
-313
@@ -6,25 +6,59 @@
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="f02ef53d-47a4-4f5e-a1aa-3df68aae9b20" name="Default" comment="">
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/InitializerVisitor.java" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/PropertyAccessTranslator.java" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/test_files/test_cases/constructorWithParameter.kt" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/test_files/test_cases/setter.kt" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/test_files/test_cases/twoClassesWithProperties.kt" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/inheritance/cases/initializersOfBasicClassExecute.kt" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/inheritance/cases/methodOverride.kt" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/propertyAccess/cases/customGetter.kt" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/propertyAccess/cases/customSetter.kt" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/AbstractClassTest.java" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/BasicClassTest.java" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ClassInheritanceTest.java" />
|
||||
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/PropertyAccessorTest.java" />
|
||||
<change type="DELETED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test\org\jetbrains\k2js\test\ClassTest.java" afterPath="" />
|
||||
<change type="DELETED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\test_cases\assign.js" afterPath="" />
|
||||
<change type="DELETED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\test_cases\classInstantiation.js" afterPath="" />
|
||||
<change type="DELETED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\test_cases\comparison.js" afterPath="" />
|
||||
<change type="DELETED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\test_cases\incrementProperty.jet" afterPath="" />
|
||||
<change type="DELETED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\test_cases\localProperty.js" afterPath="" />
|
||||
<change type="DELETED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\test_cases\prototype.js" afterPath="" />
|
||||
<change type="DELETED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\test_cases\test.js" afterPath="" />
|
||||
<change type="DELETED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\test_cases\testKotlinLib.js" afterPath="" />
|
||||
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\test_cases\accessToInstanceProperty.kt" afterPath="$PROJECT_DIR$/translator/testFiles/propertyAccess/cases/accessToInstanceProperty.kt" />
|
||||
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\test_cases\assign.jet" afterPath="$PROJECT_DIR$/translator/testFiles/function/cases/assign.jet" />
|
||||
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\test_cases\classInstantiation.kt" afterPath="$PROJECT_DIR$/translator/testFiles/class/cases/classInstantiation.kt" />
|
||||
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\test_cases\comparison.kt" afterPath="$PROJECT_DIR$/translator/testFiles/function/cases/comparison.kt" />
|
||||
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\test_cases\constructorWithParameter.kt" afterPath="$PROJECT_DIR$/translator/testFiles/class/cases/constructorWithParameter.kt" />
|
||||
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\test_cases\doWhile.kt" afterPath="$PROJECT_DIR$/translator/testFiles/function/cases/doWhile.kt" />
|
||||
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\test_cases\doWhile2.kt" afterPath="$PROJECT_DIR$/translator/testFiles/function/cases/doWhile2.kt" />
|
||||
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\test_cases\elseif.kt" afterPath="$PROJECT_DIR$/translator/testFiles/function/cases/elseif.kt" />
|
||||
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\test_cases\functionUsedBeforeDeclaration.kt" afterPath="$PROJECT_DIR$/translator/testFiles/function/cases/functionUsedBeforeDeclaration.kt" />
|
||||
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\test_cases\if.kt" afterPath="$PROJECT_DIR$/translator/testFiles/function/cases/if.kt" />
|
||||
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\test_cases\kotlin_lib.js" afterPath="$PROJECT_DIR$/translator/testFiles/kotlin_lib.js" />
|
||||
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\test_cases\localProperty.jet" afterPath="$PROJECT_DIR$/translator/testFiles/function/cases/localProperty.jet" />
|
||||
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\test_cases\methodDeclarationAndCall.kt" afterPath="$PROJECT_DIR$/translator/testFiles/class/cases/methodDeclarationAndCall.kt" />
|
||||
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\test_cases\setter.kt" afterPath="$PROJECT_DIR$/translator/testFiles/propertyAccess/cases/setter.kt" />
|
||||
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\test_cases\stringAssignment.kt" afterPath="$PROJECT_DIR$/translator/testFiles/function/cases/stringAssignment.kt" />
|
||||
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\test_cases\stringConstant.kt" afterPath="$PROJECT_DIR$/translator/testFiles/function/cases/stringConstant.kt" />
|
||||
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\test_cases\test.kt" afterPath="$PROJECT_DIR$/translator/testFiles/function/cases/test.kt" />
|
||||
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\test_cases\twoClassesWithProperties.kt" afterPath="$PROJECT_DIR$/translator/testFiles/propertyAccess/cases/twoClassesWithProperties.kt" />
|
||||
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\test_cases\while.kt" afterPath="$PROJECT_DIR$/translator/testFiles/function/cases/while.kt" />
|
||||
<change type="MOVED" beforePath="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\test_cases\while2.kt" afterPath="$PROJECT_DIR$/translator/testFiles/function/cases/while2.kt" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/js/src/com/google/dart/compiler/backend/js/ast/JsBlock.java" afterPath="$PROJECT_DIR$/js/src/com/google/dart/compiler/backend/js/ast/JsBlock.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/js/src/com/google/dart/compiler/backend/js/ast/JsInvocation.java" afterPath="$PROJECT_DIR$/js/src/com/google/dart/compiler/backend/js/ast/JsInvocation.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/declarations/DeclarationExtractor.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/declarations/DeclarationExtractor.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/declarations/ExtractionVisitor.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/declarations/ExtractionVisitor.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/generate/CodeGenerator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/generate/CodeGenerator.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/BindingUtils.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/BindingUtils.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ClassBodyVisitor.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ClassBodyVisitor.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ClassTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ClassTranslator.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionTranslator.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/FunctionTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/FunctionTranslator.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/InitializerVisitor.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/InitializerVisitor.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/Namer.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/Namer.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/OperationTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/OperationTranslator.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/PropertyAccessTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/PropertyAccessTranslator.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslationContext.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslationContext.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ClassTest.java" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ClassTest.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/test_files/test_cases/accessToInstanceProperty.kt" afterPath="$PROJECT_DIR$/translator/test_files/test_cases/accessToInstanceProperty.kt" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslatorVisitor.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslatorVisitor.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/FunctionTest.java" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/FunctionTest.java" />
|
||||
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/TranslationTest.java" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/TranslationTest.java" />
|
||||
</list>
|
||||
<ignored path="k2js.iws" />
|
||||
<ignored path=".idea/workspace.xml" />
|
||||
@@ -62,19 +96,6 @@
|
||||
<option name="CONDITION" value="" />
|
||||
<option name="LOG_MESSAGE" value="" />
|
||||
</breakpoint>
|
||||
<breakpoint url="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ClassTest.java" line="28" class="org.jetbrains.k2js.test.ClassTest" package="org.jetbrains.k2js.test">
|
||||
<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>
|
||||
@@ -115,31 +136,31 @@
|
||||
<favorites_list name="k2js" />
|
||||
</component>
|
||||
<component name="FileEditorManager">
|
||||
<splitter split-orientation="horizontal" split-proportion="0.27544528">
|
||||
<splitter split-orientation="horizontal" split-proportion="0.577426">
|
||||
<split-first>
|
||||
<leaf>
|
||||
<file leaf-file-name="DeclarationDescriptorVisitor.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/DeclarationDescriptorVisitor.java">
|
||||
<file leaf-file-name="DeclarationTranslator.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/DeclarationTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="5" column="21" selection-start="94" selection-end="94" vertical-scroll-proportion="0.0">
|
||||
<state line="9" column="19" selection-start="244" selection-end="244" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="DescriptorUtils.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java">
|
||||
<file leaf-file-name="DeclarationVisitor.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/DeclarationVisitor.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="17" column="13" selection-start="504" selection-end="504" vertical-scroll-proportion="0.0">
|
||||
<state line="17" column="13" selection-start="643" selection-end="643" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="BindingUtils.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/BindingUtils.java">
|
||||
<file leaf-file-name="ExpressionTranslator.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="23" column="30" selection-start="864" selection-end="864" vertical-scroll-proportion="0.0">
|
||||
<state line="9" column="19" selection-start="238" selection-end="238" vertical-scroll-proportion="0.0">
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
@@ -147,46 +168,55 @@
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="twoClassesWithProperties.kt" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/test_files/test_cases/twoClassesWithProperties.kt">
|
||||
<file leaf-file-name="TranslationContext.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslationContext.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="11" column="39" selection-start="146" selection-end="146" vertical-scroll-proportion="0.0">
|
||||
<state line="182" column="5" selection-start="6802" selection-end="6802" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="twoClassesWithProperties.js" pinned="false" current="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/translator/test_files/test_cases/twoClassesWithProperties.js">
|
||||
<file leaf-file-name="methodOverride.kt" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/inheritance/cases/methodOverride.kt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="22" column="0" selection-start="363" selection-end="363" vertical-scroll-proportion="0.82560706">
|
||||
<state line="14" column="50" selection-start="213" selection-end="213" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="JsNew.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/backend/js/ast/JsNew.java">
|
||||
<file leaf-file-name="JetFunction.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFunction.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="12" column="22" selection-start="394" selection-end="394" vertical-scroll-proportion="0.0">
|
||||
<state line="16" column="22" selection-start="421" selection-end="421" vertical-scroll-proportion="8.76">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="Cloner.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/backend/js/Cloner.java">
|
||||
<file leaf-file-name="FunctionDescriptor.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/FunctionDescriptor.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="153" column="4" selection-start="5360" selection-end="5360" vertical-scroll-proportion="0.0">
|
||||
<state line="19" column="55" selection-start="424" selection-end="424" vertical-scroll-proportion="0.0">
|
||||
<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/ExpressionVisitor.java">
|
||||
<file leaf-file-name="JetNamedFunction.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetNamedFunction.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="172" column="40" selection-start="7413" selection-end="7413" vertical-scroll-proportion="0.0">
|
||||
<state line="10" column="13" selection-start="228" selection-end="228" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="FunctionTranslator.java" pinned="false" current="false" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/FunctionTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="42" column="63" selection-start="1748" selection-end="1748" vertical-scroll-proportion="0.20903225">
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
@@ -194,20 +224,13 @@
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="constructorWithParameter.kt" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/test_files/test_cases/constructorWithParameter.kt">
|
||||
<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="6" column="14" selection-start="80" selection-end="80" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="accessToInstanceProperty.kt" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/test_files/test_cases/accessToInstanceProperty.kt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="3" column="21" selection-start="51" selection-end="51" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
<state line="12" column="19" selection-start="320" selection-end="320" vertical-scroll-proportion="0.0">
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
@@ -216,77 +239,19 @@
|
||||
</split-first>
|
||||
<split-second>
|
||||
<leaf>
|
||||
<file leaf-file-name="InitializerVisitor.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/InitializerVisitor.java">
|
||||
<file leaf-file-name="AbstractClassTest.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/AbstractClassTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="50" column="79" selection-start="2300" selection-end="2300" vertical-scroll-proportion="0.0">
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="accessToInstanceProperty.js" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/test_files/test_cases/accessToInstanceProperty.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="1" column="0" selection-start="10" selection-end="10" vertical-scroll-proportion="0.0">
|
||||
<state line="37" column="48" selection-start="1330" selection-end="1330" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="setter.kt" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/test_files/test_cases/setter.kt">
|
||||
<file leaf-file-name="BasicClassTest.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/BasicClassTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="6" column="13" selection-start="66" selection-end="66" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="ClassTest.java" pinned="false" current="true" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ClassTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="70" column="16" selection-start="2199" selection-end="2199" vertical-scroll-proportion="0.65750915">
|
||||
<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/PropertyAccessTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="19" column="19" selection-start="808" selection-end="808" vertical-scroll-proportion="0.0">
|
||||
<folding>
|
||||
<element signature="imports" 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/OperationTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="29" column="56" selection-start="1070" selection-end="1070" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="setter.js" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/test_files/test_cases/setter.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="AstUtil.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/util/AstUtil.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="18" column="0" selection-start="621" selection-end="621" vertical-scroll-proportion="0.0">
|
||||
<state line="31" column="4" selection-start="756" selection-end="756" vertical-scroll-proportion="0.0">
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
@@ -297,16 +262,70 @@
|
||||
<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="39" column="28" selection-start="1478" selection-end="1478" vertical-scroll-proportion="0.0">
|
||||
<state line="19" column="53" selection-start="487" selection-end="487" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<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">
|
||||
<file leaf-file-name="accessToInstanceProperty.kt" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/propertyAccess/cases/accessToInstanceProperty.kt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="10" column="19" selection-start="250" selection-end="250" 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="PropertyAccessorTest.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/PropertyAccessorTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="15" column="0" selection-start="299" selection-end="299" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<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="22" column="16" selection-start="485" selection-end="485" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="initializersOfBasicClassExecute.js" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/inheritance/out/initializersOfBasicClassExecute.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="methodOverride.js" pinned="false" current="true" current-in-tab="true">
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/inheritance/out/methodOverride.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="OperationTranslator.java" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/OperationTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="30" column="56" selection-start="1127" selection-end="1127" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
</file>
|
||||
<file leaf-file-name="initializersOfBasicClassExecute.kt" pinned="false" current="false" current-in-tab="false">
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/inheritance/cases/initializersOfBasicClassExecute.kt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
@@ -328,22 +347,22 @@
|
||||
<component name="IdeDocumentHistory">
|
||||
<option name="changedFiles">
|
||||
<list>
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java" />
|
||||
<option value="$PROJECT_DIR$/translator/test_files/test_cases/twoClassesProperties.kt" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ClassBodyVisitor.java" />
|
||||
<option value="$PROJECT_DIR$/js/src/com/google/dart/compiler/backend/js/ast/JsBlock.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/declarations/ExtractionVisitor.java" />
|
||||
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/FunctionTest.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/BindingUtils.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ClassTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/Namer.java" />
|
||||
<option value="$PROJECT_DIR$/translator/test_files/test_cases/setter.kt" />
|
||||
<option value="$PROJECT_DIR$/translator/test_files/test_cases/accessToInstanceProperty.kt" />
|
||||
<option value="$PROJECT_DIR$/translator/test_files/test_cases/twoClassesWithProperties.kt" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/OperationTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/translator/test_files/test_cases/constuctorWithParameter.kt" />
|
||||
<option value="$PROJECT_DIR$/translator/test_files/class/out/customSetter.js" />
|
||||
<option value="$PROJECT_DIR$/translator/test_files/class/cases/inheritance.kt" />
|
||||
<option value="$PROJECT_DIR$/translator/test_files/class/out/inheritance.js" />
|
||||
<option value="$PROJECT_DIR$/translator/test_files/kotlin_lib.js" />
|
||||
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ClassTest.java" />
|
||||
<option value="$PROJECT_DIR$/translator/test_files/test_cases/constructorWithParameter.kt" />
|
||||
<option value="$PROJECT_DIR$/translator/test_files/test_cases/twoClassesWithProperties.js" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/InitializerVisitor.java" />
|
||||
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/TranslationTest.java" />
|
||||
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/PropertyAccessorTest.java" />
|
||||
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/BasicClassTest.java" />
|
||||
<option value="$PROJECT_DIR$/translator/testFiles/inheritance/cases/methodOverride.kt" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/OperationTranslator.java" />
|
||||
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/AbstractClassTest.java" />
|
||||
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ClassInheritanceTest.java" />
|
||||
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/FunctionTranslator.java" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
@@ -414,11 +433,127 @@
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="test_files" />
|
||||
<option name="myItemId" value="testFiles" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="k2js" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="translator" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="test_cases" />
|
||||
<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>
|
||||
<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="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="inheritance" />
|
||||
<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="inheritance" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="cases" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="k2js" />
|
||||
<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="function" />
|
||||
<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="class" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
@@ -480,50 +615,6 @@
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="k2js" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="translator" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="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>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="k2js" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.ProjectViewProjectNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="translator" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="src" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="k2js" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="declarations" />
|
||||
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
|
||||
</PATH_ELEMENT>
|
||||
</PATH>
|
||||
<PATH>
|
||||
<PATH_ELEMENT>
|
||||
<option name="myItemId" value="k2js" />
|
||||
@@ -608,65 +699,21 @@
|
||||
<recent name="org.jetbrains.k2js.backend" />
|
||||
</key>
|
||||
<key name="CopyFile.RECENT_KEYS">
|
||||
<recent name="C:\Dev\Projects\jet-contrib\k2js\translator\testFiles\inheritance" />
|
||||
<recent name="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\propertyAccess" />
|
||||
<recent name="C:\Dev\Projects\jet-contrib\k2js\translator\test_files\inheritance" />
|
||||
<recent name="C:\Dev\Projects\jet-contrib\k2js\test_files\test_cases" />
|
||||
<recent name="C:\Dev\Projects\jet-contrib\k2js\test_files" />
|
||||
<recent name="C:\Dev\Projects\jet-contrib\k2js\lib" />
|
||||
<recent name="C:\Dev\Projects\jet-contrib\k2js\tests" />
|
||||
<recent name="C:\Dev\Projects\k2js\src\org\jetbrains\k2js\translate" />
|
||||
</key>
|
||||
</component>
|
||||
<component name="RunManager" selected="JUnit.All in translator">
|
||||
<configuration default="false" name="ClassTest" type="JUnit" factoryName="JUnit" temporary="true">
|
||||
<configuration default="false" name="AbstractClassTest.inheritance" type="JUnit" factoryName="JUnit" temporary="true">
|
||||
<module name="translator" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" value="" />
|
||||
<option name="PACKAGE_NAME" value="org.jetbrains.k2js.test" />
|
||||
<option name="MAIN_CLASS_NAME" value="org.jetbrains.k2js.test.ClassTest" />
|
||||
<option name="METHOD_NAME" value="" />
|
||||
<option name="TEST_OBJECT" value="class" />
|
||||
<option name="VM_PARAMETERS" value="-ea" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/translator" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<option name="TEST_SEARCH_SCOPE">
|
||||
<value defaultName="moduleWithDependencies" />
|
||||
</option>
|
||||
<envs />
|
||||
<patterns />
|
||||
<RunnerSettings RunnerId="Run" />
|
||||
<ConfigurationWrapper RunnerId="Run" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="false" name="FunctionTest" type="JUnit" factoryName="JUnit" temporary="true">
|
||||
<module name="translator" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" />
|
||||
<option name="PACKAGE_NAME" value="org.jetbrains.k2js.test" />
|
||||
<option name="MAIN_CLASS_NAME" value="org.jetbrains.k2js.test.FunctionTest" />
|
||||
<option name="METHOD_NAME" />
|
||||
<option name="TEST_OBJECT" value="class" />
|
||||
<option name="VM_PARAMETERS" />
|
||||
<option name="PARAMETERS" />
|
||||
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<option name="TEST_SEARCH_SCOPE">
|
||||
<value defaultName="moduleWithDependencies" />
|
||||
</option>
|
||||
<envs />
|
||||
<patterns />
|
||||
<RunnerSettings RunnerId="Run" />
|
||||
<ConfigurationWrapper RunnerId="Run" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="false" name="ClassTest.twoClassesWithProperties" type="JUnit" factoryName="JUnit" temporary="true">
|
||||
<module name="translator" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" value="" />
|
||||
<option name="PACKAGE_NAME" value="org.jetbrains.k2js.test" />
|
||||
<option name="MAIN_CLASS_NAME" value="org.jetbrains.k2js.test.ClassTest" />
|
||||
<option name="METHOD_NAME" value="twoClassesWithProperties" />
|
||||
<option name="MAIN_CLASS_NAME" value="org.jetbrains.k2js.test.AbstractClassTest" />
|
||||
<option name="METHOD_NAME" value="inheritance" />
|
||||
<option name="TEST_OBJECT" value="method" />
|
||||
<option name="VM_PARAMETERS" value="-ea" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
@@ -679,7 +726,7 @@
|
||||
<envs />
|
||||
<patterns />
|
||||
<RunnerSettings RunnerId="Debug">
|
||||
<option name="DEBUG_PORT" value="53339" />
|
||||
<option name="DEBUG_PORT" value="56929" />
|
||||
<option name="TRANSPORT" value="0" />
|
||||
<option name="LOCAL" value="true" />
|
||||
</RunnerSettings>
|
||||
@@ -708,13 +755,57 @@
|
||||
<ConfigurationWrapper RunnerId="Run" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="false" name="ClassTest.setter" type="JUnit" factoryName="JUnit" temporary="true">
|
||||
<configuration default="false" name="FunctionTest" type="JUnit" factoryName="JUnit" temporary="true">
|
||||
<module name="translator" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" value="" />
|
||||
<option name="PACKAGE_NAME" value="org.jetbrains.k2js.test" />
|
||||
<option name="MAIN_CLASS_NAME" value="org.jetbrains.k2js.test.ClassTest" />
|
||||
<option name="METHOD_NAME" value="setter" />
|
||||
<option name="MAIN_CLASS_NAME" value="org.jetbrains.k2js.test.FunctionTest" />
|
||||
<option name="METHOD_NAME" value="" />
|
||||
<option name="TEST_OBJECT" value="class" />
|
||||
<option name="VM_PARAMETERS" value="-ea" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/translator" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<option name="TEST_SEARCH_SCOPE">
|
||||
<value defaultName="moduleWithDependencies" />
|
||||
</option>
|
||||
<envs />
|
||||
<patterns />
|
||||
<RunnerSettings RunnerId="Run" />
|
||||
<ConfigurationWrapper RunnerId="Run" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="false" name="AbstractClassTest.kotlinJsLibRunsWithRhino" type="JUnit" factoryName="JUnit" temporary="true">
|
||||
<module name="translator" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" value="" />
|
||||
<option name="PACKAGE_NAME" value="org.jetbrains.k2js.test" />
|
||||
<option name="MAIN_CLASS_NAME" value="org.jetbrains.k2js.test.AbstractClassTest" />
|
||||
<option name="METHOD_NAME" value="kotlinJsLibRunsWithRhino" />
|
||||
<option name="TEST_OBJECT" value="method" />
|
||||
<option name="VM_PARAMETERS" value="-ea" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/translator" />
|
||||
<option name="ENV_VARIABLES" />
|
||||
<option name="PASS_PARENT_ENVS" value="true" />
|
||||
<option name="TEST_SEARCH_SCOPE">
|
||||
<value defaultName="moduleWithDependencies" />
|
||||
</option>
|
||||
<envs />
|
||||
<patterns />
|
||||
<RunnerSettings RunnerId="Run" />
|
||||
<ConfigurationWrapper RunnerId="Run" />
|
||||
<method />
|
||||
</configuration>
|
||||
<configuration default="false" name="AbstractClassTest.twoClassesWithProperties" type="JUnit" factoryName="JUnit" temporary="true">
|
||||
<module name="translator" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="false" />
|
||||
<option name="ALTERNATIVE_JRE_PATH" value="" />
|
||||
<option name="PACKAGE_NAME" value="org.jetbrains.k2js.test" />
|
||||
<option name="MAIN_CLASS_NAME" value="org.jetbrains.k2js.test.AbstractClassTest" />
|
||||
<option name="METHOD_NAME" value="twoClassesWithProperties" />
|
||||
<option name="TEST_OBJECT" value="method" />
|
||||
<option name="VM_PARAMETERS" value="-ea" />
|
||||
<option name="PARAMETERS" value="" />
|
||||
@@ -727,7 +818,7 @@
|
||||
<envs />
|
||||
<patterns />
|
||||
<RunnerSettings RunnerId="Debug">
|
||||
<option name="DEBUG_PORT" value="53959" />
|
||||
<option name="DEBUG_PORT" value="57297" />
|
||||
<option name="TRANSPORT" value="0" />
|
||||
<option name="LOCAL" value="true" />
|
||||
</RunnerSettings>
|
||||
@@ -809,11 +900,11 @@
|
||||
</method>
|
||||
</configuration>
|
||||
<list size="5">
|
||||
<item index="0" class="java.lang.String" itemvalue="JUnit.ClassTest" />
|
||||
<item index="1" class="java.lang.String" itemvalue="JUnit.FunctionTest" />
|
||||
<item index="2" class="java.lang.String" itemvalue="JUnit.ClassTest.twoClassesWithProperties" />
|
||||
<item index="3" class="java.lang.String" itemvalue="JUnit.All in translator" />
|
||||
<item index="4" class="java.lang.String" itemvalue="JUnit.ClassTest.setter" />
|
||||
<item index="0" class="java.lang.String" itemvalue="JUnit.ClassTest.inheritance" />
|
||||
<item index="1" class="java.lang.String" itemvalue="JUnit.All in translator" />
|
||||
<item index="2" class="java.lang.String" itemvalue="JUnit.FunctionTest" />
|
||||
<item index="3" class="java.lang.String" itemvalue="JUnit.ClassTest.kotlinJsLibRunsWithRhino" />
|
||||
<item index="4" class="java.lang.String" itemvalue="JUnit.ClassTest.twoClassesWithProperties" />
|
||||
</list>
|
||||
<configuration name="<template>" type="WebApp" default="true" selected="false">
|
||||
<Host>localhost</Host>
|
||||
@@ -855,7 +946,7 @@
|
||||
<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" />
|
||||
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3275862" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.24973261" sideWeight="0.7183908" order="1" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.2624521" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.28544062" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32907662" sideWeight="0.5" order="13" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32854405" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
|
||||
@@ -863,9 +954,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="4" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.3997862" sideWeight="0.6705998" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.1593583" sideWeight="0.5699234" 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.22299466" sideWeight="0.82088125" 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="11" 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.43007663" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.17911877" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
|
||||
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="10" side_tool="true" content_ui="tabs" />
|
||||
@@ -903,7 +994,7 @@
|
||||
<option name="CHECK_COMMIT_MESSAGE_SPELLING" value="true" />
|
||||
<option name="DEFAULT_PATCH_EXTENSION" value="patch" />
|
||||
<option name="FORCE_NON_EMPTY_COMMENT" value="false" />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="Added a test for extractor." />
|
||||
<option name="LAST_COMMIT_MESSAGE" value="Added default getter/setter support and initializer support." />
|
||||
<option name="MAKE_NEW_CHANGELIST_ACTIVE" value="true" />
|
||||
<option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="false" />
|
||||
<option name="CHECK_FILES_UP_TO_DATE_BEFORE_COMMIT" value="false" />
|
||||
@@ -927,6 +1018,7 @@
|
||||
<MESSAGE value="Added simple method call support." />
|
||||
<MESSAGE value="Added DeclarationExtractor logic." />
|
||||
<MESSAGE value="Added a test for extractor." />
|
||||
<MESSAGE value="Added default getter/setter support and initializer support." />
|
||||
</component>
|
||||
<component name="XDebuggerManager">
|
||||
<breakpoint-manager />
|
||||
@@ -936,16 +1028,9 @@
|
||||
<option name="FILTER_TARGETS" value="false" />
|
||||
</component>
|
||||
<component name="editorHistoryManager">
|
||||
<entry file="file://$PROJECT_DIR$/translator/test_files/test_cases/setter.js">
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/BasicClassTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="0" column="0" selection-start="0" selection-end="0" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/PropertyAccessTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="19" column="19" selection-start="808" selection-end="808" vertical-scroll-proportion="0.0">
|
||||
<state line="31" column="4" selection-start="756" selection-end="756" vertical-scroll-proportion="0.0">
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
@@ -954,108 +1039,111 @@
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/OperationTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="29" column="56" selection-start="1070" selection-end="1070" vertical-scroll-proportion="0.0">
|
||||
<state line="30" column="56" selection-start="1127" selection-end="1127" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/declarations/DeclarationExtractor.java">
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/AbstractClassTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="40" column="39" selection-start="1371" selection-end="1371" vertical-scroll-proportion="0.0">
|
||||
<state line="37" column="48" selection-start="1330" selection-end="1330" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/PropertyAccessorTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="15" column="0" selection-start="299" selection-end="299" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/inheritance/out/initializersOfBasicClassExecute.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/test/org/jetbrains/k2js/test/ClassInheritanceTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="22" column="16" selection-start="485" selection-end="485" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/FunctionTest.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="12" column="19" selection-start="320" selection-end="320" vertical-scroll-proportion="0.0">
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/declarations/ExtractionVisitor.java">
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/inheritance/cases/methodOverride.kt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="54" column="23" selection-start="2277" selection-end="2277" vertical-scroll-proportion="-12.72">
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/Namer.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="12" column="48" selection-start="297" selection-end="297" vertical-scroll-proportion="0.0">
|
||||
<state line="14" column="50" selection-start="213" selection-end="213" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/backend/js/ast/JsNew.java">
|
||||
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetFunction.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="12" column="22" selection-start="394" selection-end="394" vertical-scroll-proportion="0.0">
|
||||
<state line="16" column="22" selection-start="421" selection-end="421" vertical-scroll-proportion="8.76">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ClassBodyVisitor.java">
|
||||
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/FunctionDescriptor.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="117" column="0" selection-start="5468" selection-end="5468" vertical-scroll-proportion="0.0">
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/js/src/com/google/dart/compiler/backend/js/Cloner.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="153" column="4" selection-start="5360" selection-end="5360" vertical-scroll-proportion="0.0">
|
||||
<state line="19" column="55" selection-start="424" selection-end="424" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="172" column="40" selection-start="7413" selection-end="7413" vertical-scroll-proportion="0.0">
|
||||
<state line="132" column="24" selection-start="5718" selection-end="5718" vertical-scroll-proportion="-6.1923075">
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="jar://C:/Program Files/Java/jdk1.7.0_01/src.zip!/java/lang/Void.java">
|
||||
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetNamedFunction.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="36" column="6" selection-start="464" selection-end="464" vertical-scroll-proportion="0.0">
|
||||
<state line="10" column="13" selection-start="228" selection-end="228" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/test_files/test_cases/constructorWithParameter.kt">
|
||||
<entry file="file://$PROJECT_DIR$/../../Kotlin/jet/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetReferenceExpression.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="6" column="14" selection-start="80" selection-end="80" vertical-scroll-proportion="0.0">
|
||||
<state line="8" column="27" selection-start="169" selection-end="169" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/test_files/test_cases/twoClassesWithProperties.kt">
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/FunctionTranslator.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="11" column="39" selection-start="146" selection-end="146" vertical-scroll-proportion="0.0">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/test_files/test_cases/twoClassesWithProperties.js">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="22" column="0" selection-start="363" selection-end="363" vertical-scroll-proportion="0.82560706">
|
||||
<folding />
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/InitializerVisitor.java">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="50" column="79" selection-start="2300" selection-end="2300" vertical-scroll-proportion="0.0">
|
||||
<state line="42" column="63" selection-start="1748" selection-end="1748" vertical-scroll-proportion="0.20903225">
|
||||
<folding>
|
||||
<element signature="imports" expanded="true" />
|
||||
</folding>
|
||||
</state>
|
||||
</provider>
|
||||
</entry>
|
||||
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/ClassTest.java">
|
||||
<entry file="file://$PROJECT_DIR$/translator/testFiles/inheritance/cases/initializersOfBasicClassExecute.kt">
|
||||
<provider selected="true" editor-type-id="text-editor">
|
||||
<state line="70" column="16" selection-start="2199" selection-end="2199" vertical-scroll-proportion="0.65750915">
|
||||
<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/testFiles/inheritance/out/methodOverride.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>
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
package org.jetbrains.k2js.declarations;
|
||||
|
||||
import com.google.dart.compiler.backend.js.ast.JsName;
|
||||
import com.google.dart.compiler.backend.js.ast.JsScope;
|
||||
import com.intellij.util.xml.PropertyAccessor;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.*;
|
||||
import org.jetbrains.k2js.translate.Namer;
|
||||
|
||||
@@ -41,32 +44,25 @@ public final class ExtractionVisitor extends DeclarationDescriptorVisitor<Void,
|
||||
|
||||
@Override
|
||||
public Void visitPropertyDescriptor(@NotNull PropertyDescriptor descriptor, @NotNull JsScope enclosingScope) {
|
||||
PropertySetterDescriptor setter = descriptor.getSetter();
|
||||
if (setter != null) {
|
||||
setter.accept(this, enclosingScope);
|
||||
String propertyName = descriptor.getName();
|
||||
extractAccessor(descriptor.getGetter(), true, propertyName, enclosingScope);
|
||||
if (descriptor.isVar()) {
|
||||
extractAccessor(descriptor.getSetter(), false, propertyName, enclosingScope);
|
||||
}
|
||||
PropertyGetterDescriptor getter = descriptor.getGetter();
|
||||
if (getter != null) {
|
||||
getter.accept(this, enclosingScope);
|
||||
}
|
||||
// We do not put this name into extractor because it can't be referenced from outside
|
||||
// thus it doesn't have a descriptor.
|
||||
enclosingScope.declareName(Namer.getBackingFieldNameForProperty(descriptor.getName()));
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void visitPropertyGetterDescriptor(PropertyGetterDescriptor descriptor, JsScope enclosingScope) {
|
||||
String getterName = Namer.getNameForGetter(descriptor.getCorrespondingProperty().getName());
|
||||
extractor.putName(descriptor, enclosingScope.declareName(getterName));
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void visitPropertySetterDescriptor(PropertySetterDescriptor descriptor, JsScope enclosingScope) {
|
||||
String setterName = Namer.getNameForSetter(descriptor.getCorrespondingProperty().getName());
|
||||
extractor.putName(descriptor, enclosingScope.declareName(setterName));
|
||||
return null;
|
||||
//Not using visitors here for convenience
|
||||
public void extractAccessor(@Nullable PropertyAccessorDescriptor descriptor, boolean isGetter, String propertyName,
|
||||
@NotNull JsScope enclosingScope) {
|
||||
assert descriptor != null : "Accessor descriptor should not be null";
|
||||
String accessorName = Namer.getNameForAccessor(propertyName, isGetter);
|
||||
JsName jsName = enclosingScope.declareName(accessorName);
|
||||
JsScope accessorScope = new JsScope(enclosingScope, (isGetter ? "getter " : "setter ") + propertyName);
|
||||
extractor.putScope(descriptor, accessorScope);
|
||||
extractor.putName(descriptor, jsName);
|
||||
// Note : We do not put backing field name into extractor because it can't be referenced from outside
|
||||
accessorScope.declareName(Namer.getKotlinBackingFieldName(descriptor.getCorrespondingProperty().getName()));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -25,16 +25,16 @@ public final class CodeGenerator {
|
||||
System.out.println(output.toString());
|
||||
}
|
||||
|
||||
private void generateCode(JsProgram program) {
|
||||
JsSourceGenerationVisitor sourceGenerator =
|
||||
new JsSourceGenerationVisitor(output);
|
||||
program.traverse(sourceGenerator, null);
|
||||
}
|
||||
|
||||
public void generateToFile(JsProgram program, File file) throws IOException {
|
||||
generateCode(program);
|
||||
FileWriter writer = new FileWriter(file);
|
||||
writer.write(output.toString());
|
||||
writer.close();
|
||||
}
|
||||
|
||||
private void generateCode(JsProgram program) {
|
||||
JsSourceGenerationVisitor sourceGenerator =
|
||||
new JsSourceGenerationVisitor(output);
|
||||
program.traverse(sourceGenerator, null);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,17 +1,15 @@
|
||||
package org.jetbrains.k2js.translate;
|
||||
|
||||
import com.intellij.codeInsight.hint.ClassDeclarationRangeHandler;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||
import org.jetbrains.jet.lang.psi.JetClass;
|
||||
import org.jetbrains.jet.lang.psi.JetNamedFunction;
|
||||
import org.jetbrains.jet.lang.psi.JetNamespace;
|
||||
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.JetType;
|
||||
|
||||
import javax.xml.ws.Binding;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Talanov Pavel
|
||||
@@ -21,34 +19,90 @@ import javax.xml.ws.Binding;
|
||||
public final class BindingUtils {
|
||||
private BindingUtils() {}
|
||||
|
||||
//TODO generalise methods?
|
||||
|
||||
@NotNull
|
||||
static private <E extends PsiElement, D extends DeclarationDescriptor>
|
||||
D getDescriptorForExpression(@NotNull BindingContext context, @NotNull E expression, Class<D> descriptorClass) {
|
||||
DeclarationDescriptor descriptor = context.get(BindingContext.DECLARATION_TO_DESCRIPTOR, expression);
|
||||
assert descriptor != null;
|
||||
assert descriptorClass.isInstance(descriptor)
|
||||
: expression.toString() + " expected to have of type" + descriptorClass.toString();
|
||||
return (D)descriptor;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
static public ClassDescriptor getClassDescriptor(@NotNull BindingContext context, @NotNull JetClass declaration) {
|
||||
DeclarationDescriptor descriptor
|
||||
= context.get(BindingContext.DECLARATION_TO_DESCRIPTOR, declaration);
|
||||
assert descriptor instanceof ClassDescriptor : "Class should have a descriptor" +
|
||||
" of type ClassDescriptor";
|
||||
return (ClassDescriptor)descriptor;
|
||||
return getDescriptorForExpression(context, declaration, ClassDescriptor.class);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
static public NamespaceDescriptor getNamespaceDescriptor(@NotNull BindingContext context,
|
||||
@NotNull JetNamespace declaration) {
|
||||
DeclarationDescriptor descriptor
|
||||
= context.get(BindingContext.DECLARATION_TO_DESCRIPTOR, declaration);
|
||||
assert descriptor instanceof NamespaceDescriptor : "Namespace should have a descriptor" +
|
||||
" of type NamespaceDescriptor";
|
||||
return (NamespaceDescriptor)descriptor;
|
||||
return getDescriptorForExpression(context, declaration, NamespaceDescriptor.class);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
static public FunctionDescriptor getFunctionDescriptor(@NotNull BindingContext context,
|
||||
@NotNull JetNamedFunction declaration) {
|
||||
DeclarationDescriptor descriptor =
|
||||
context.get(BindingContext.DECLARATION_TO_DESCRIPTOR, declaration);
|
||||
assert descriptor instanceof FunctionDescriptor : "JetNamedFunction should have" +
|
||||
" descriptor of type FunctionDescriptor.";
|
||||
return (FunctionDescriptor)descriptor;
|
||||
return getDescriptorForExpression(context, declaration, FunctionDescriptor.class);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
static public PropertyAccessorDescriptor getPropertyAccessorDescriptor(@NotNull BindingContext context,
|
||||
@NotNull JetPropertyAccessor declaration) {
|
||||
return getDescriptorForExpression(context, declaration, PropertyAccessorDescriptor.class);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
static public PropertyDescriptor getPropertyDescriptor(@NotNull BindingContext context,
|
||||
@NotNull JetProperty declaration) {
|
||||
return getDescriptorForExpression(context, declaration, PropertyDescriptor.class);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
static public String getPropertyNameForPropertyAccessor(@NotNull BindingContext context,
|
||||
@NotNull JetPropertyAccessor accessor) {
|
||||
PropertyAccessorDescriptor descriptor = getPropertyAccessorDescriptor(context, accessor);
|
||||
return descriptor.getCorrespondingProperty().getName();
|
||||
}
|
||||
|
||||
@NotNull
|
||||
static public PropertySetterDescriptor getPropertySetterDescriptorForProperty(@NotNull BindingContext context,
|
||||
@NotNull JetProperty property) {
|
||||
PropertySetterDescriptor result = getPropertyDescriptor(context, property).getSetter();
|
||||
assert result != null : "Property should have a setter descriptor";
|
||||
return result;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
static public PropertyGetterDescriptor getPropertyGetterDescriptorForProperty(@NotNull BindingContext context,
|
||||
@NotNull JetProperty property) {
|
||||
PropertyGetterDescriptor result = getPropertyDescriptor(context, property).getGetter();
|
||||
assert result != null : "Property should have a getter descriptor";
|
||||
return result;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
static public List<ClassDescriptor> getSuperclassDescriptors(@NotNull BindingContext context,
|
||||
@NotNull JetClass classDeclaration) {
|
||||
ClassDescriptor classDescriptor = getClassDescriptor(context, classDeclaration);
|
||||
Collection<? extends JetType> superclassTypes = classDescriptor.getTypeConstructor().getSupertypes();
|
||||
List<ClassDescriptor> superClassDescriptors = new ArrayList<ClassDescriptor>();
|
||||
for (JetType type : superclassTypes) {
|
||||
DeclarationDescriptor superClassDescriptor =
|
||||
type.getConstructor().getDeclarationDescriptor();
|
||||
assert superClassDescriptor instanceof ClassDescriptor
|
||||
: "Superclass descriptor of a type should be of type ClassDescriptor";
|
||||
if (isNotAny(superClassDescriptor)) {
|
||||
superClassDescriptors.add((ClassDescriptor)superClassDescriptor);
|
||||
}
|
||||
}
|
||||
return superClassDescriptors;
|
||||
}
|
||||
|
||||
//TODO better implementation?
|
||||
private static boolean isNotAny(@NotNull DeclarationDescriptor superClassDescriptor) {
|
||||
return superClassDescriptor.getName() != "Any";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,8 +2,9 @@ package org.jetbrains.k2js.translate;
|
||||
|
||||
import com.google.dart.compiler.backend.js.ast.*;
|
||||
import com.google.dart.compiler.util.AstUtil;
|
||||
import com.intellij.util.Function;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.descriptors.PropertyGetterDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.PropertySetterDescriptor;
|
||||
import org.jetbrains.jet.lang.psi.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -66,37 +67,31 @@ public final class ClassBodyVisitor extends TranslatorVisitor<List<JsPropertyIni
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsPropertyInitializer generateDefaultGetter(@NotNull JetProperty expression, @NotNull TranslationContext context) {
|
||||
JsName getterName = context.classScope().declareName(Namer.getNameForGetter(expression.getName()));
|
||||
return AstUtil.newNamedMethod(getterName, generateDefaultGetterFunction(expression, context));
|
||||
private JsPropertyInitializer generateDefaultGetter
|
||||
(@NotNull JetProperty expression, @NotNull TranslationContext context) {
|
||||
PropertyGetterDescriptor getterDescriptor =
|
||||
BindingUtils.getPropertyGetterDescriptorForProperty(context.bindingContext(), expression);
|
||||
return AstUtil.newNamedMethod(context.getNameForDescriptor(getterDescriptor),
|
||||
generateDefaultGetterFunction(expression, context.newPropertyAccess(getterDescriptor)));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsFunction generateDefaultGetterFunction(@NotNull JetProperty expression,
|
||||
@NotNull TranslationContext context) {
|
||||
JsNameRef backingFieldRef = declareOrGetBackingFieldName(getPropertyName(expression), context).makeRef();
|
||||
JsNameRef backingFieldRef = getBackingFieldName(getPropertyName(expression), context).makeRef();
|
||||
backingFieldRef.setQualifier(new JsThisRef());
|
||||
JsReturn returnExpression = new JsReturn(backingFieldRef);
|
||||
return AstUtil.newFunction
|
||||
(context.enclosingScope(), null, new ArrayList<JsParameter>(), AstUtil.convertToBlock(returnExpression));
|
||||
}
|
||||
|
||||
//TODO rewrite
|
||||
@NotNull
|
||||
private JsName declareOrGetBackingFieldName(@NotNull String propertyName, @NotNull TranslationContext context) {
|
||||
String backingFieldName = Namer.getBackingFieldNameForProperty(propertyName);
|
||||
JsName jsBackingFieldName = context.classScope().findExistingName(backingFieldName);
|
||||
if (jsBackingFieldName == null) {
|
||||
jsBackingFieldName = context.classScope().declareName(backingFieldName);
|
||||
}
|
||||
return jsBackingFieldName;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsPropertyInitializer generateDefaultSetter(@NotNull JetProperty expression,
|
||||
@NotNull TranslationContext context) {
|
||||
JsName setterName = context.classScope().declareName(Namer.getNameForSetter(expression.getName()));
|
||||
return AstUtil.newNamedMethod(setterName, generateDefaultSetterFunction(expression, context));
|
||||
PropertySetterDescriptor setterDescriptor =
|
||||
BindingUtils.getPropertySetterDescriptorForProperty(context.bindingContext(), expression);
|
||||
return AstUtil.newNamedMethod(context.getNameForDescriptor(setterDescriptor),
|
||||
generateDefaultSetterFunction(expression, context.newPropertyAccess(setterDescriptor)));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -114,7 +109,7 @@ public final class ClassBodyVisitor extends TranslatorVisitor<List<JsPropertyIni
|
||||
@NotNull
|
||||
private JsBinaryOperation assignmentToBackingFieldFromDefaultParameter
|
||||
(@NotNull JetProperty expression, @NotNull TranslationContext context, @NotNull JsParameter defaultParameter) {
|
||||
JsNameRef backingFieldRef = declareOrGetBackingFieldName(getPropertyName(expression), context).makeRef();
|
||||
JsNameRef backingFieldRef = getBackingFieldName(getPropertyName(expression), context).makeRef();
|
||||
backingFieldRef.setQualifier(new JsThisRef());
|
||||
JsBinaryOperation assignExpression = new JsBinaryOperation(JsBinaryOperator.ASG);
|
||||
assignExpression.setArg1(backingFieldRef);
|
||||
@@ -122,26 +117,50 @@ public final class ClassBodyVisitor extends TranslatorVisitor<List<JsPropertyIni
|
||||
return assignExpression;
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<JsPropertyInitializer> visitPropertyAccessor(@NotNull JetPropertyAccessor expression,
|
||||
@NotNull TranslationContext context) {
|
||||
List<JsPropertyInitializer> methods = new ArrayList<JsPropertyInitializer>();
|
||||
methods.add(generateMethodForAccessor(expression, context));
|
||||
return methods;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsPropertyInitializer generateMethodForAccessor(@NotNull JetPropertyAccessor expression,
|
||||
@NotNull TranslationContext context) {
|
||||
JsFunction methodBody = translateAccessorBody(expression, context);
|
||||
// we know that custom getters and setters always have their descriptors
|
||||
return AstUtil.newNamedMethod(context.getNameForElement(expression), methodBody);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsFunction translateAccessorBody(@NotNull JetPropertyAccessor expression,
|
||||
@NotNull TranslationContext context) {
|
||||
JsFunction methodBody = JsFunction.getAnonymousFunctionWithScope(context.getScopeForElement(expression));
|
||||
ExpressionTranslator expressionTranslator =
|
||||
new ExpressionTranslator(context.newPropertyAccess(expression));
|
||||
JetExpression bodyExpression = expression.getBodyExpression();
|
||||
assert bodyExpression != null : "Custom accessor should have a body.";
|
||||
JsBlock methodBodyBlock = AstUtil.convertToBlock(expressionTranslator.translate(bodyExpression));
|
||||
methodBody.setBody(methodBodyBlock);
|
||||
return methodBody;
|
||||
}
|
||||
|
||||
// @Override
|
||||
// @NotNull
|
||||
// public List<JsPropertyInitializer> visitPropertyAccessor
|
||||
// (JetPropertyAccessor expression, TranslationContext context) {
|
||||
// List<JsPropertyInitializer> methods = new ArrayList<JsPropertyInitializer>();
|
||||
// JsPropertyInitializer namedMethod = generateMethodForAccessor(expression, context);
|
||||
// methods.add(namedMethod);
|
||||
// return methods;
|
||||
// JsName getNameForGetter(@NotNull String propertyName, @NotNull TranslationContext context) {
|
||||
// return getNameForAccessor(propertyName, true, context);
|
||||
// }
|
||||
//
|
||||
// private JsPropertyInitializer generateMethodForAccessor(JetPropertyAccessor expression, TranslationContext context) {
|
||||
// JsFunction methodBody = new JsFunction(context.enclosingScope());
|
||||
// ExpressionTranslator expressionTranslator =
|
||||
// new ExpressionTranslator(context.newFunction(methodBody));
|
||||
// JsBlock methodBodyBlock = AstUtil.convertToBlock(expressionTranslator.translate(expression.getBodyExpression()));
|
||||
// methodBody.setBody(methodBodyBlock);
|
||||
// //TODO figure out naming pattern
|
||||
// return AstUtil.newNamedMethod(Namer.getNameForAccessor("nameForAccessor", expression), methodBody);
|
||||
// @NotNull
|
||||
// JsName getNameForSetter(@NotNull String propertyName, @NotNull TranslationContext context) {
|
||||
// return getNameForAccessor(propertyName, false, context);
|
||||
// }
|
||||
//
|
||||
// @NotNull
|
||||
// JsName getNameForAccessor(@NotNull String propertyName, boolean isGetter,
|
||||
// @NotNull TranslationContext context) {
|
||||
// return context.classScope().findExistingName(Namer.getNameForAccessor(propertyName, isGetter));
|
||||
// }
|
||||
|
||||
|
||||
|
||||
@@ -2,16 +2,10 @@ package org.jetbrains.k2js.translate;
|
||||
|
||||
import com.google.dart.compiler.backend.js.ast.*;
|
||||
import com.google.dart.compiler.util.AstUtil;
|
||||
import org.apache.velocity.runtime.directive.Block;
|
||||
import org.eclipse.jdt.core.dom.Initializer;
|
||||
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.psi.JetClass;
|
||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||
import org.jetbrains.jet.lang.resolve.DescriptorUtils;
|
||||
import org.jetbrains.jet.lang.types.JetType;
|
||||
import sun.org.mozilla.javascript.internal.Function;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@@ -22,33 +16,51 @@ import java.util.List;
|
||||
//TODO ClassTranslator needs heavy improvement
|
||||
public final class ClassTranslator extends AbstractTranslator {
|
||||
|
||||
private final ClassBodyVisitor classBodyVisitor = new ClassBodyVisitor();
|
||||
@NotNull private final ClassBodyVisitor classBodyVisitor = new ClassBodyVisitor();
|
||||
|
||||
public ClassTranslator(TranslationContext context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
public JsStatement translateClass(JetClass classDeclaration) {
|
||||
@NotNull
|
||||
public JsStatement translateClass(@NotNull JetClass classDeclaration) {
|
||||
JsInvocation jsClassDeclaration = new JsInvocation();
|
||||
jsClassDeclaration.setQualifier(Namer.creationMethodReference());
|
||||
addSuperclassReferences(classDeclaration, jsClassDeclaration);
|
||||
addClassOwnDeclarations(classDeclaration, jsClassDeclaration);
|
||||
JsName jsClassName = translationContext().getNameForElement(classDeclaration);
|
||||
return AstUtil.convertToStatement(
|
||||
AstUtil.newAssignment(translationContext().getNamespaceQualifiedReference(jsClassName), jsClassDeclaration));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private void addClassOwnDeclarations(@NotNull JetClass classDeclaration,
|
||||
@NotNull JsInvocation jsClassDeclaration) {
|
||||
JsObjectLiteral jsClassDescription = translateClassDeclarations(classDeclaration);
|
||||
jsClassDeclaration.getArguments().add(jsClassDescription);
|
||||
//getSuperClassName(classDeclaration);
|
||||
String className = classDeclaration.getName();
|
||||
JsName jsClassName = translationContext().namespaceScope().declareName(className);
|
||||
return AstUtil.convertToStatement(AstUtil.newAssignment(
|
||||
translationContext().getNamespaceQualifiedReference(jsClassName), jsClassDeclaration));
|
||||
}
|
||||
|
||||
private void getSuperClassName(JetClass classDeclaration) {
|
||||
ClassDescriptor classDescriptor = bindingContext().get(BindingContext.CLASS, classDeclaration);
|
||||
JetType superType = classDescriptor.getSuperclassType();
|
||||
DeclarationDescriptor descriptor = superType.getConstructor().getDeclarationDescriptor();
|
||||
JetClass superClass = (JetClass)bindingContext().get(BindingContext.DESCRIPTOR_TO_DECLARATION, descriptor);
|
||||
String superClassName = superClass.getName();
|
||||
private void addSuperclassReferences(@NotNull JetClass classDeclaration,
|
||||
@NotNull JsInvocation jsClassDeclaration) {
|
||||
for (JsNameRef superClassReference : getSuperclassNameReferences(classDeclaration)) {
|
||||
jsClassDeclaration.getArguments().add(superClassReference);
|
||||
}
|
||||
}
|
||||
|
||||
private JsObjectLiteral translateClassDeclarations(JetClass classDeclaration) {
|
||||
@Nullable
|
||||
private List<JsNameRef> getSuperclassNameReferences(@NotNull JetClass classDeclaration) {
|
||||
List<JsNameRef> superclassReferences = new ArrayList<JsNameRef>();
|
||||
for (ClassDescriptor superClassDescriptor :
|
||||
BindingUtils.getSuperclassDescriptors(translationContext().bindingContext(), classDeclaration)) {
|
||||
//TODO should get a full class name here
|
||||
superclassReferences.add(translationContext().getNamespaceQualifiedReference
|
||||
(translationContext().getNameForDescriptor(superClassDescriptor)));
|
||||
}
|
||||
return superclassReferences;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsObjectLiteral translateClassDeclarations(@NotNull JetClass classDeclaration) {
|
||||
List<JsPropertyInitializer> propertyList = new ArrayList<JsPropertyInitializer>();
|
||||
propertyList.add(generateInitializeMethod(classDeclaration));
|
||||
propertyList.addAll(classDeclaration.accept(classBodyVisitor,
|
||||
@@ -56,25 +68,18 @@ public final class ClassTranslator extends AbstractTranslator {
|
||||
return new JsObjectLiteral(propertyList);
|
||||
}
|
||||
|
||||
private JsPropertyInitializer generateInitializeMethod(JetClass classDeclaration) {
|
||||
@NotNull
|
||||
private JsPropertyInitializer generateInitializeMethod(@NotNull JetClass classDeclaration) {
|
||||
JsPropertyInitializer initializer = new JsPropertyInitializer();
|
||||
initializer.setLabelExpr(program().getStringLiteral(Namer.INITIALIZE_METHOD_NAME));
|
||||
initializer.setValueExpr(generateInitializeMethodBody(classDeclaration));
|
||||
return initializer;
|
||||
}
|
||||
|
||||
// Note: we explicitly create JsFunction here because initialize function itself has no descriptor and
|
||||
// is never referenced explicitly.
|
||||
@NotNull
|
||||
private JsFunction generateInitializeMethodBody(@NotNull JetClass classDeclaration) {
|
||||
InitializerVisitor initializerVisitor = new InitializerVisitor();
|
||||
List<JsStatement> initializerStatements = classDeclaration.accept(initializerVisitor,
|
||||
InitializerVisitor initializerVisitor = new InitializerVisitor(classDeclaration,
|
||||
translationContext().newClass(classDeclaration));
|
||||
JsBlock block = new JsBlock();
|
||||
block.setStatements(initializerStatements);
|
||||
return AstUtil.newFunction(translationContext().enclosingScope(), null, null, block);
|
||||
return initializerVisitor.generateInitializeMethodBody();
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -5,15 +5,19 @@ import com.google.dart.compiler.backend.js.ast.JsExpression;
|
||||
import com.google.dart.compiler.backend.js.ast.*;
|
||||
import com.google.dart.compiler.backend.js.ast.JsReturn;
|
||||
import com.google.dart.compiler.util.AstUtil;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.CallableDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.ConstructorDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.PropertyDescriptor;
|
||||
import org.jetbrains.jet.lang.psi.*;
|
||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||
import org.jetbrains.jet.lang.resolve.calls.ResolvedCall;
|
||||
import org.jetbrains.jet.lang.resolve.constants.CompileTimeConstant;
|
||||
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingUtils;
|
||||
import org.jetbrains.jet.lexer.JetToken;
|
||||
import org.jetbrains.jet.lexer.JetTokens;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
@@ -126,19 +130,21 @@ public final class ExpressionVisitor extends TranslatorVisitor<JsNode> {
|
||||
return new JsBinaryOperation(OperationTranslator.getBinaryOperator(jetOperationToken), left, right);
|
||||
}
|
||||
|
||||
//TODO correct look-up logic
|
||||
//TODO clearify code
|
||||
@Override
|
||||
@NotNull
|
||||
public JsNode visitSimpleNameExpression(JetSimpleNameExpression expression, TranslationContext context) {
|
||||
String referencedName = expression.getReferencedName();
|
||||
JsName jsName = context.enclosingScope().findExistingName(referencedName);
|
||||
if (jsName == null) {
|
||||
throw new AssertionError("Unindentified name " + expression.getReferencedName());
|
||||
}
|
||||
assert jsName != null : "Undeclared name: " + referencedName;
|
||||
if (context.namespaceScope().ownsName(jsName)) {
|
||||
return context.getNamespaceQualifiedReference(jsName);
|
||||
}
|
||||
return jsName.makeRef();
|
||||
JsNameRef nameRef = jsName.makeRef();
|
||||
if (expression.getReferencedNameElementType() == JetTokens.FIELD_IDENTIFIER) {
|
||||
nameRef.setQualifier(new JsThisRef());
|
||||
}
|
||||
return nameRef;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -31,7 +31,8 @@ public final class FunctionTranslator extends AbstractTranslator {
|
||||
(translationContext().getNamespaceQualifiedReference(functionName), function));
|
||||
}
|
||||
|
||||
@NotNull JsPropertyInitializer translateAsMethod(@NotNull JetNamedFunction jetFunction) {
|
||||
@NotNull
|
||||
JsPropertyInitializer translateAsMethod(@NotNull JetNamedFunction jetFunction) {
|
||||
JsName functionName = translationContext().namespaceScope().declareFreshName(jetFunction.getName());
|
||||
JsFunction function = generateFunctionObject(jetFunction);
|
||||
return new JsPropertyInitializer(functionName.makeRef(), function);
|
||||
@@ -39,17 +40,27 @@ public final class FunctionTranslator extends AbstractTranslator {
|
||||
|
||||
@NotNull
|
||||
private JsFunction generateFunctionObject(@NotNull JetNamedFunction jetFunction) {
|
||||
JetExpression jetBodyExpression = jetFunction.getBodyExpression();
|
||||
JsFunction result = JsFunction.getAnonymousFunctionWithScope
|
||||
(translationContext().getScopeForElement(jetFunction));
|
||||
JsNode jsBody = (new ExpressionTranslator(functionContext(jetFunction)))
|
||||
.translate(jetBodyExpression);
|
||||
JsNode jsBody = translateBody(jetFunction);
|
||||
List<JsParameter> jsParameters = translateParameters(jetFunction.getValueParameters(), result.getScope());
|
||||
result.setParameters(jsParameters);
|
||||
result.setBody(AstUtil.convertToBlock(jsBody));
|
||||
return result;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsNode translateBody(@NotNull JetNamedFunction jetFunction) {
|
||||
JetExpression jetBodyExpression = jetFunction.getBodyExpression();
|
||||
//TODO support them ffs
|
||||
assert jetBodyExpression != null : "Function without body not supported at the moment";
|
||||
JsNode body = (new ExpressionTranslator(functionContext(jetFunction))).translate(jetBodyExpression);
|
||||
if (jetFunction.hasBlockBody()) {
|
||||
return AstUtil.convertToBlock(body);
|
||||
}
|
||||
return AstUtil.convertToBlock(new JsReturn(AstUtil.convertToExpression((body))));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private TranslationContext functionContext(@NotNull JetNamedFunction jetFunction) {
|
||||
FunctionDescriptor descriptor =
|
||||
|
||||
@@ -3,7 +3,6 @@ package org.jetbrains.k2js.translate;
|
||||
import com.google.dart.compiler.backend.js.ast.*;
|
||||
import com.google.dart.compiler.util.AstUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptorVisitor;
|
||||
import org.jetbrains.jet.lang.psi.*;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -13,11 +12,40 @@ import java.util.List;
|
||||
/**
|
||||
* @author Talanov Pavel
|
||||
*
|
||||
* This visitor collects all initializers from a given class in a list of statements.
|
||||
* Note: we do use this to preserve the order in which initializers are executed.
|
||||
* This visitor collects all initializers from a given class into JsFunction object.
|
||||
* Note: we do use visitor pattern to preserve the order in which initializers are executed.
|
||||
*/
|
||||
public class InitializerVisitor extends TranslatorVisitor<List<JsStatement>> {
|
||||
|
||||
@NotNull private final JsScope initializerMethodScope;
|
||||
@NotNull private final JetClass classDeclaration;
|
||||
@NotNull private final TranslationContext initializerMethodContext;
|
||||
|
||||
public InitializerVisitor(@NotNull JetClass classDeclaration, @NotNull TranslationContext context) {
|
||||
this.initializerMethodScope = new JsScope(context.getScopeForElement(classDeclaration),
|
||||
"initializer " + classDeclaration.getName());
|
||||
this.classDeclaration = classDeclaration;
|
||||
this.initializerMethodContext = context.newEnclosingScope(initializerMethodScope);
|
||||
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public JsFunction generateInitializeMethodBody() {
|
||||
JsFunction result = JsFunction.getAnonymousFunctionWithScope(initializerMethodScope);
|
||||
result.setBody(getInitializerMethodBody(classDeclaration, initializerMethodContext));
|
||||
return result;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsBlock getInitializerMethodBody(@NotNull JetClass classDeclaration,
|
||||
@NotNull TranslationContext context) {
|
||||
List<JsStatement> initializerStatements = classDeclaration.accept(this, context);
|
||||
JsBlock block = new JsBlock();
|
||||
block.setStatements(initializerStatements);
|
||||
return block;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public List<JsStatement> visitClass(@NotNull JetClass expression, @NotNull TranslationContext context) {
|
||||
@@ -35,17 +63,28 @@ public class InitializerVisitor extends TranslatorVisitor<List<JsStatement>> {
|
||||
if (initializer == null) {
|
||||
return new ArrayList<JsStatement>();
|
||||
}
|
||||
declareBackingFieldName(expression);
|
||||
return Arrays.asList(translateInitializer(expression, context, initializer));
|
||||
}
|
||||
|
||||
private void declareBackingFieldName(@NotNull JetProperty property) {
|
||||
initializerMethodScope.declareName(Namer.getKotlinBackingFieldName(property.getName()));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
private JsStatement translateInitializer(@NotNull JetProperty property, @NotNull TranslationContext context,
|
||||
@NotNull JetExpression initializer) {
|
||||
ExpressionTranslator translator = new ExpressionTranslator(context);
|
||||
JsExpression initExpression = AstUtil.convertToExpression(translator.translate(initializer));
|
||||
return Arrays.asList(assignmentToBackingField(expression, initExpression, context));
|
||||
return assignmentToBackingField(property, initExpression, context);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
JsStatement assignmentToBackingField(@NotNull JetProperty property, @NotNull JsExpression initExpression,
|
||||
@NotNull TranslationContext context) {
|
||||
JsName backingFieldName = context.classScope()
|
||||
.findExistingName(Namer.getBackingFieldNameForProperty(property.getName()));
|
||||
assert backingFieldName != null : "Class scope should contain backing field names";
|
||||
String propertyName = property.getName();
|
||||
assert propertyName != null : "Named property expected.";
|
||||
JsName backingFieldName = getBackingFieldName(propertyName, context);
|
||||
JsNameRef backingFieldRef = backingFieldName.makeRef();
|
||||
backingFieldRef.setQualifier(new JsThisRef());
|
||||
return AstUtil.convertToStatement(AstUtil.newAssignment(backingFieldRef, initExpression));
|
||||
|
||||
@@ -22,7 +22,7 @@ public final class Namer {
|
||||
//private static final String CLASS_CREATE_METHOD_NAME = "create";
|
||||
private static final String SETTER_PREFIX = "set_";
|
||||
private static final String GETTER_PREFIX = "get_";
|
||||
private static final String BACKING_FIELD_PREFIX = "_";
|
||||
private static final String BACKING_FIELD_PREFIX = "$";
|
||||
// public static final String DEFAULT_SETTER_PARAM_NAME = "val";
|
||||
|
||||
public static String getClassObjectName() {
|
||||
@@ -30,17 +30,16 @@ public final class Namer {
|
||||
return CLASS_OBJECT_NAME;
|
||||
}
|
||||
|
||||
public static String getNameForAccessor(String propertyName, JetPropertyAccessor accessor) {
|
||||
if (accessor.isGetter()) {
|
||||
public static String getNameForAccessor(String propertyName, boolean isGetter) {
|
||||
if (isGetter) {
|
||||
return getNameForGetter(propertyName);
|
||||
}
|
||||
if (accessor.isSetter()) {
|
||||
else {
|
||||
return getNameForSetter(propertyName);
|
||||
}
|
||||
throw new AssertionError("accessor should be a getter or a setter!");
|
||||
}
|
||||
|
||||
public static String getBackingFieldNameForProperty(String propertyName) {
|
||||
public static String getKotlinBackingFieldName(String propertyName) {
|
||||
return getNameWithPrefix(propertyName, BACKING_FIELD_PREFIX);
|
||||
}
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@ public final class OperationTranslator {
|
||||
map.put(JetTokens.LTEQ, JsBinaryOperator.LTE);
|
||||
map.put(JetTokens.EQEQ, JsBinaryOperator.EQ);
|
||||
map.put(JetTokens.ANDAND, JsBinaryOperator.AND);
|
||||
map.put(JetTokens.EXCLEQ, JsBinaryOperator.NEQ);
|
||||
}
|
||||
|
||||
public static JsBinaryOperator getBinaryOperator(JetToken token) {
|
||||
|
||||
@@ -25,17 +25,13 @@ public final class PropertyAccessTranslator extends AbstractTranslator {
|
||||
|
||||
@Nullable
|
||||
public JsInvocation resolveAsPropertyGet(@NotNull JetDotQualifiedExpression expression) {
|
||||
if (!(expression instanceof JetDotQualifiedExpression)) {
|
||||
return null;
|
||||
}
|
||||
JetDotQualifiedExpression dotQualifiedExpression = (JetDotQualifiedExpression)expression;
|
||||
JetExpression selectorExpression = dotQualifiedExpression.getSelectorExpression();
|
||||
JetExpression selectorExpression = expression.getSelectorExpression();
|
||||
assert selectorExpression != null : "Selector should not be null.";
|
||||
JsName getterName = getPropertyGetterName(selectorExpression);
|
||||
if (getterName == null) {
|
||||
return null;
|
||||
}
|
||||
return translateReceiverAndReturnAccessorInvocation(dotQualifiedExpression, getterName);
|
||||
return translateReceiverAndReturnAccessorInvocation(expression, getterName);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@@ -73,7 +69,7 @@ public final class PropertyAccessTranslator extends AbstractTranslator {
|
||||
if (getter == null) {
|
||||
return null;
|
||||
}
|
||||
return translationContext().declarations().getName(getter);
|
||||
return translationContext().getNameForDescriptor(getter);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -86,7 +82,7 @@ public final class PropertyAccessTranslator extends AbstractTranslator {
|
||||
if (setter == null) {
|
||||
return null;
|
||||
}
|
||||
return translationContext().declarations().getName(setter);
|
||||
return translationContext().getNameForDescriptor(setter);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
@@ -4,14 +4,8 @@ import com.google.dart.compiler.backend.js.ast.*;
|
||||
import com.google.dart.compiler.util.AstUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.lang.descriptors.ClassDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.FunctionDescriptor;
|
||||
import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor;
|
||||
import org.jetbrains.jet.lang.psi.JetClass;
|
||||
import org.jetbrains.jet.lang.psi.JetElement;
|
||||
import org.jetbrains.jet.lang.psi.JetNamedFunction;
|
||||
import org.jetbrains.jet.lang.psi.JetNamespace;
|
||||
import org.jetbrains.jet.lang.descriptors.*;
|
||||
import org.jetbrains.jet.lang.psi.*;
|
||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||
import org.jetbrains.k2js.declarations.DeclarationExtractor;
|
||||
|
||||
@@ -92,7 +86,17 @@ public final class TranslationContext {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
TranslationContext newFunction(@NotNull JetNamedFunction declaration) {
|
||||
public TranslationContext newPropertyAccess(@NotNull JetPropertyAccessor declaration) {
|
||||
return newPropertyAccess(BindingUtils.getPropertyAccessorDescriptor(bindingContext, declaration));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public TranslationContext newPropertyAccess(@NotNull PropertyAccessorDescriptor descriptor) {
|
||||
return newFunction(descriptor);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public TranslationContext newFunction(@NotNull JetNamedFunction declaration) {
|
||||
return newFunction(BindingUtils.getFunctionDescriptor(bindingContext, declaration));
|
||||
}
|
||||
|
||||
@@ -103,6 +107,15 @@ public final class TranslationContext {
|
||||
return new TranslationContext(namespaceName, program, bindingContext, newScopes, extractor);
|
||||
}
|
||||
|
||||
// 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(namespaceName, program, bindingContext, newScopes, extractor);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@NotNull
|
||||
public JsNameRef getNamespaceQualifiedReference(JsName name) {
|
||||
if (namespaceName != null) {
|
||||
@@ -148,13 +161,24 @@ public final class TranslationContext {
|
||||
|
||||
@NotNull
|
||||
public JsScope getScopeForElement(@NotNull JetElement element) {
|
||||
DeclarationDescriptor descriptor = bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, element);
|
||||
assert descriptor != null : "Element should have a descriptor";
|
||||
DeclarationDescriptor descriptor = getDescriptorForElement(element);
|
||||
return getScopeForDescriptor(descriptor);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public DeclarationExtractor declarations() {
|
||||
return extractor;
|
||||
public JsName getNameForDescriptor(@NotNull DeclarationDescriptor descriptor) {
|
||||
return extractor.getName(descriptor);
|
||||
}
|
||||
|
||||
@NotNull JsName getNameForElement(@NotNull JetElement element) {
|
||||
DeclarationDescriptor descriptor = getDescriptorForElement(element);
|
||||
return getNameForDescriptor(descriptor);
|
||||
}
|
||||
|
||||
@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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package org.jetbrains.k2js.translate;
|
||||
|
||||
import com.google.dart.compiler.backend.js.ast.JsName;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.jet.lang.psi.JetElement;
|
||||
import org.jetbrains.jet.lang.psi.JetProperty;
|
||||
@@ -26,4 +27,10 @@ public class TranslatorVisitor<T> extends JetVisitor<T, TranslationContext> {
|
||||
}
|
||||
return propertyName;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
protected JsName getBackingFieldName(@NotNull String propertyName, @NotNull TranslationContext context) {
|
||||
String backingFieldName = Namer.getKotlinBackingFieldName(propertyName);
|
||||
return context.enclosingScope().findExistingName(backingFieldName);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
package org.jetbrains.k2js.test;
|
||||
|
||||
import org.jetbrains.k2js.translate.TranslationContext;
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
import org.mozilla.javascript.Context;
|
||||
import org.mozilla.javascript.Scriptable;
|
||||
|
||||
import java.io.FileReader;
|
||||
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
/**
|
||||
* @author Talanov Pavel
|
||||
*/
|
||||
public abstract class AbstractClassTest extends TranslationTest {
|
||||
|
||||
private final String KOTLIN_JS_LIB = TEST_FILES + "kotlin_lib.js";
|
||||
|
||||
protected String kotlinLibrartyPath() {
|
||||
return KOTLIN_JS_LIB;
|
||||
}
|
||||
|
||||
protected void runFileWithRhino(String inputFile, Context context, Scriptable scope) throws Exception {
|
||||
FileReader reader = new FileReader(inputFile);
|
||||
context.evaluateReader(scope, reader, inputFile, 1, null);
|
||||
reader.close();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void runWithRhino(String inputFile, String namespaceName,
|
||||
String functionName, Object expectedResult) throws Exception {
|
||||
Context cx = Context.enter();
|
||||
Scriptable scope = cx.initStandardObjects();
|
||||
runFileWithRhino(kotlinLibrartyPath(), cx, scope);
|
||||
runFileWithRhino(inputFile, cx, scope);
|
||||
Object result = extractAndCallFunctionObject(namespaceName, functionName, cx, scope);
|
||||
assertTrue("Result is not what expected!",result.equals(expectedResult));
|
||||
String report = namespaceName + "." + functionName + "() = " + Context.toString(result);
|
||||
System.out.println(report);
|
||||
Context.exit();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
package org.jetbrains.k2js.test;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.mozilla.javascript.Context;
|
||||
import org.mozilla.javascript.Scriptable;
|
||||
|
||||
/**
|
||||
* @author Talanov Pavel
|
||||
*/
|
||||
public class BasicClassTest extends AbstractClassTest {
|
||||
|
||||
final private static String MAIN = "class/";
|
||||
|
||||
@Override
|
||||
protected String mainDirectory() {
|
||||
return MAIN;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void kotlinJsLibRunsWithRhino() throws Exception {
|
||||
Context context = Context.enter();
|
||||
Scriptable scope = context.initStandardObjects();
|
||||
runFileWithRhino(kotlinLibrartyPath(), context, scope);
|
||||
Context.exit();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void classInstantiation() throws Exception {
|
||||
testFooBoxIsTrue("classInstantiation.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void methodDeclarationAndCall() throws Exception {
|
||||
testFooBoxIsTrue("methodDeclarationAndCall.kt");
|
||||
}
|
||||
|
||||
// TODO : excluded test
|
||||
@Test
|
||||
public void constructorWithParameter() throws Exception {
|
||||
//testFooBoxIsTrue("constructorWithParameter.kt");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package org.jetbrains.k2js.test;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
* @author Talanov Pavel
|
||||
*/
|
||||
public final class ClassInheritanceTest extends AbstractClassTest {
|
||||
|
||||
final private static String MAIN = "inheritance/";
|
||||
|
||||
@Override
|
||||
protected String mainDirectory() {
|
||||
return MAIN;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void initializersOfBasicClassExecute() throws Exception {
|
||||
performTest("initializersOfBasicClassExecute.kt", "foo", "box", 3);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void methodOverride() throws Exception {
|
||||
testFooBoxIsTrue("methodOverride.kt");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,75 +0,0 @@
|
||||
package org.jetbrains.k2js.test;
|
||||
|
||||
import org.jetbrains.k2js.translate.TranslationContext;
|
||||
import org.junit.Test;
|
||||
import org.mozilla.javascript.Context;
|
||||
import org.mozilla.javascript.Scriptable;
|
||||
|
||||
import java.io.FileReader;
|
||||
|
||||
import static org.junit.Assert.assertTrue;
|
||||
|
||||
/**
|
||||
* @author Talanov Pavel
|
||||
*/
|
||||
public final class ClassTest extends TranslationTest {
|
||||
|
||||
private final String KOTLIN_JS_LIB = TEST_DIR + "kotlin_lib.js";
|
||||
|
||||
@Override
|
||||
protected void runWithRhino(String inputFile, String namespaceName,
|
||||
String functionName, Object expectedResult) throws Exception {
|
||||
Context cx = Context.enter();
|
||||
FileReader testFileReader = new FileReader(inputFile);
|
||||
FileReader libReader = new FileReader(KOTLIN_JS_LIB);
|
||||
try {
|
||||
Scriptable scope = cx.initStandardObjects();
|
||||
cx.evaluateReader(scope, libReader, "lib", 1, null);
|
||||
cx.evaluateReader(scope, testFileReader, "test case", 1, null);
|
||||
Object result = extractAndCallFunctionObject(namespaceName, functionName, cx, scope);
|
||||
assertTrue(result.equals(expectedResult));
|
||||
String report = namespaceName + "." + functionName + "() = " + Context.toString(result);
|
||||
System.out.println(report);
|
||||
|
||||
} finally {
|
||||
Context.exit();
|
||||
testFileReader.close();
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
public void kotlinJsLibRunsWithRhino() throws Exception {
|
||||
runWithRhino(TEST_DIR + "testKotlinLib.js", "foo", "box", true);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void classInstantiation() throws Exception {
|
||||
testFooBoxIsTrue("classInstantiation.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void methodDeclarationAndCall() throws Exception {
|
||||
testFooBoxIsTrue("methodDeclarationAndCall.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void accessToInstanceProperty() throws Exception {
|
||||
testFooBoxIsTrue("accessToInstanceProperty.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void twoClassesWithProperties() throws Exception {
|
||||
testFooBoxIsTrue("twoClassesWithProperties.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setter() throws Exception {
|
||||
performTest("setter.kt", "foo", "f", 99.0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void constructorWithParameter() throws Exception {
|
||||
testFooBoxIsTrue("constructorWithParameter.kt");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
package org.jetbrains.k2js.test;
|
||||
|
||||
import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
import org.kohsuke.rngom.digested.Main;
|
||||
|
||||
/**
|
||||
* @author Talanov Pavel
|
||||
@@ -10,6 +12,12 @@ import org.junit.Test;
|
||||
*/
|
||||
public final class FunctionTest extends TranslationTest {
|
||||
|
||||
private static final String MAIN = "function/";
|
||||
|
||||
protected String mainDirectory() {
|
||||
return MAIN;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void currentTest() throws Exception {
|
||||
testFooBoxIsTrue("test.kt");
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
package org.jetbrains.k2js.test;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
/**
|
||||
* @author Talanov Pavel
|
||||
*/
|
||||
public final class PropertyAccessorTest extends AbstractClassTest {
|
||||
|
||||
final private static String MAIN = "propertyAccess/";
|
||||
|
||||
@Override
|
||||
protected String mainDirectory() {
|
||||
return MAIN;
|
||||
}
|
||||
|
||||
@Test
|
||||
public void accessToInstanceProperty() throws Exception {
|
||||
testFooBoxIsTrue("accessToInstanceProperty.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void twoClassesWithProperties() throws Exception {
|
||||
testFooBoxIsTrue("twoClassesWithProperties.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void setter() throws Exception {
|
||||
performTest("setter.kt", "foo", "f", 99.0);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void customGetter() throws Exception {
|
||||
testFooBoxIsTrue("customGetter.kt");
|
||||
}
|
||||
|
||||
@Test
|
||||
public void customSetter() throws Exception {
|
||||
testFooBoxIsTrue("customSetter.kt");
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,6 +1,8 @@
|
||||
package org.jetbrains.k2js.test;
|
||||
|
||||
import org.jetbrains.k2js.K2JSTranslator;
|
||||
import org.junit.Before;
|
||||
import org.junit.BeforeClass;
|
||||
import org.mozilla.javascript.Context;
|
||||
import org.mozilla.javascript.Function;
|
||||
import org.mozilla.javascript.NativeObject;
|
||||
@@ -13,21 +15,52 @@ import static org.junit.Assert.*;
|
||||
/**
|
||||
* @author Talanov Pavel
|
||||
*/
|
||||
public class TranslationTest {
|
||||
public abstract class TranslationTest {
|
||||
|
||||
protected final static String TEST_DIR = "test_files/test_cases/";
|
||||
final protected static String TEST_FILES = "testFiles/";
|
||||
final private static String CASES = "cases/";
|
||||
final private static String OUT = "out/";
|
||||
|
||||
protected void performTest(String inputFile, String namespaceName,
|
||||
protected String testFilesDirectory;
|
||||
protected String testCasesDirectory;
|
||||
protected String outputDirectory;
|
||||
|
||||
@Before
|
||||
public void setUpClass() {
|
||||
testCasesDirectory = CASES;
|
||||
outputDirectory = OUT;
|
||||
testFilesDirectory = TEST_FILES + mainDirectory();
|
||||
}
|
||||
|
||||
protected abstract String mainDirectory();
|
||||
|
||||
private String getOutputDirectory() {
|
||||
return testFilesDirectory + outputDirectory;
|
||||
}
|
||||
|
||||
private String getInputDirectory() {
|
||||
return testFilesDirectory + testCasesDirectory;
|
||||
}
|
||||
|
||||
protected void performTest(String filename, String namespaceName,
|
||||
String functionName, Object expectedResult) throws Exception {
|
||||
K2JSTranslator.Arguments args = new K2JSTranslator.Arguments();
|
||||
args.src = TEST_DIR + inputFile;
|
||||
args.outputDir = getOutputFilename(TEST_DIR + inputFile);
|
||||
args.src = getInputFilePath(filename);
|
||||
args.outputDir = getOutputFilePath(filename);
|
||||
K2JSTranslator.translate(args);
|
||||
runWithRhino(args.outputDir, namespaceName, functionName, expectedResult);
|
||||
}
|
||||
|
||||
private String getOutputFilename(String inputFile) {
|
||||
return inputFile.substring(0, inputFile.lastIndexOf('.')) + ".js";
|
||||
private String getOutputFilePath(String filename) {
|
||||
return getOutputDirectory() + convertToDotJsFile(filename);
|
||||
}
|
||||
|
||||
private String convertToDotJsFile(String filename) {
|
||||
return filename.substring(0, filename.lastIndexOf('.')) + ".js";
|
||||
}
|
||||
|
||||
private String getInputFilePath(String filename) {
|
||||
return getInputDirectory() + filename;
|
||||
}
|
||||
|
||||
protected void runWithRhino(String inputFile, String namespaceName,
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
namespace foo
|
||||
|
||||
open class A() {
|
||||
var a = 3;
|
||||
}
|
||||
|
||||
class B() : A() {
|
||||
|
||||
}
|
||||
|
||||
fun box() : Int {
|
||||
return (B().a)
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
namespace foo
|
||||
|
||||
open class C {
|
||||
open fun f(): Any = "C f"
|
||||
}
|
||||
|
||||
class D() : C {
|
||||
override fun f(): String = "D f"
|
||||
}
|
||||
|
||||
fun box(): Boolean {
|
||||
val d : C = D()
|
||||
if(d.f() != "D f") return false
|
||||
return true
|
||||
}
|
||||
+94
-3
@@ -24,6 +24,9 @@ var Class = (function() {
|
||||
parent = properties.shift();
|
||||
|
||||
function klass() {
|
||||
if (parent != null) {
|
||||
parent.prototype.initialize.apply(this)
|
||||
}
|
||||
this.initialize.apply(this, arguments);
|
||||
}
|
||||
|
||||
@@ -84,8 +87,6 @@ var Class = (function() {
|
||||
};
|
||||
})();
|
||||
|
||||
|
||||
|
||||
(function() {
|
||||
|
||||
var _toString = Object.prototype.toString,
|
||||
@@ -285,4 +286,94 @@ var Class = (function() {
|
||||
isDate: isDate,
|
||||
isUndefined: isUndefined
|
||||
});
|
||||
})();
|
||||
})();
|
||||
|
||||
|
||||
Object.extend(Function.prototype, (function() {
|
||||
var slice = Array.prototype.slice;
|
||||
|
||||
function update(array, args) {
|
||||
var arrayLength = array.length, length = args.length;
|
||||
while (length--) array[arrayLength + length] = args[length];
|
||||
return array;
|
||||
}
|
||||
|
||||
function merge(array, args) {
|
||||
array = slice.call(array, 0);
|
||||
return update(array, args);
|
||||
}
|
||||
|
||||
function argumentNames() {
|
||||
var names = this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1]
|
||||
.replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '')
|
||||
.replace(/\s+/g, '').split(',');
|
||||
return names.length == 1 && !names[0] ? [] : names;
|
||||
}
|
||||
|
||||
function bind(context) {
|
||||
if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this;
|
||||
var __method = this, args = slice.call(arguments, 1);
|
||||
return function() {
|
||||
var a = merge(args, arguments);
|
||||
return __method.apply(context, a);
|
||||
}
|
||||
}
|
||||
|
||||
function bindAsEventListener(context) {
|
||||
var __method = this, args = slice.call(arguments, 1);
|
||||
return function(event) {
|
||||
var a = update([event || window.event], args);
|
||||
return __method.apply(context, a);
|
||||
}
|
||||
}
|
||||
|
||||
function curry() {
|
||||
if (!arguments.length) return this;
|
||||
var __method = this, args = slice.call(arguments, 0);
|
||||
return function() {
|
||||
var a = merge(args, arguments);
|
||||
return __method.apply(this, a);
|
||||
}
|
||||
}
|
||||
|
||||
function delay(timeout) {
|
||||
var __method = this, args = slice.call(arguments, 1);
|
||||
timeout = timeout * 1000;
|
||||
return window.setTimeout(function() {
|
||||
return __method.apply(__method, args);
|
||||
}, timeout);
|
||||
}
|
||||
|
||||
function defer() {
|
||||
var args = update([0.01], arguments);
|
||||
return this.delay.apply(this, args);
|
||||
}
|
||||
|
||||
function wrap(wrapper) {
|
||||
var __method = this;
|
||||
return function() {
|
||||
var a = update([__method.bind(this)], arguments);
|
||||
return wrapper.apply(this, a);
|
||||
}
|
||||
}
|
||||
|
||||
function methodize() {
|
||||
if (this._methodized) return this._methodized;
|
||||
var __method = this;
|
||||
return this._methodized = function() {
|
||||
var a = update([this], arguments);
|
||||
return __method.apply(null, a);
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
argumentNames: argumentNames,
|
||||
bind: bind,
|
||||
bindAsEventListener: bindAsEventListener,
|
||||
curry: curry,
|
||||
delay: delay,
|
||||
defer: defer,
|
||||
wrap: wrap,
|
||||
methodize: methodize
|
||||
}
|
||||
})());
|
||||
@@ -0,0 +1,13 @@
|
||||
namespace foo
|
||||
|
||||
class Test() {
|
||||
val a : Int
|
||||
get() {
|
||||
return 5;
|
||||
}
|
||||
}
|
||||
|
||||
fun box() : Boolean {
|
||||
var test = Test()
|
||||
return (test.a ==5)
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
namespace foo
|
||||
|
||||
class Test() {
|
||||
var a : Int = 5
|
||||
set(b : Int) {
|
||||
$a = 3
|
||||
}
|
||||
}
|
||||
|
||||
fun box() : Boolean {
|
||||
var test = Test()
|
||||
test.a = 5
|
||||
return (test.a == 3)
|
||||
}
|
||||
@@ -1,10 +0,0 @@
|
||||
foo = {};
|
||||
(function(foo){
|
||||
foo.f = function(){
|
||||
var x = 1;
|
||||
x = x + 1;
|
||||
return x;
|
||||
}
|
||||
;
|
||||
}
|
||||
(foo));
|
||||
@@ -1,12 +0,0 @@
|
||||
foo = {};
|
||||
(function(foo){
|
||||
foo.Test = Class.create({initialize:function(){
|
||||
}
|
||||
});
|
||||
foo.box = function(){
|
||||
var test = new foo.Test;
|
||||
return true;
|
||||
}
|
||||
;
|
||||
}
|
||||
(foo));
|
||||
@@ -1,11 +0,0 @@
|
||||
foo = {};
|
||||
(function(foo){
|
||||
foo.box = function(){
|
||||
var a = 2;
|
||||
var b = 3;
|
||||
var c = 4;
|
||||
return a < c;
|
||||
}
|
||||
;
|
||||
}
|
||||
(foo));
|
||||
@@ -1,14 +0,0 @@
|
||||
class Slot() {
|
||||
var vitality: Int = 10000
|
||||
|
||||
fun increaseVitality(delta: Int) {
|
||||
vitality += delta
|
||||
if (vitality > 65535) vitality = 65535;
|
||||
}
|
||||
}
|
||||
|
||||
fun box(): Boolean {
|
||||
val s = Slot()
|
||||
s.increaseVitality(1000)
|
||||
return (s.vitality == 11000)
|
||||
}
|
||||
@@ -1,15 +0,0 @@
|
||||
foo = {};
|
||||
(function(foo){
|
||||
foo.y = 3;
|
||||
foo.f = function(a){
|
||||
var x = 42;
|
||||
var y = 50;
|
||||
return y;
|
||||
}
|
||||
;
|
||||
foo.box = function(){
|
||||
return foo.f(foo.y);
|
||||
}
|
||||
;
|
||||
}
|
||||
(foo));
|
||||
-6008
File diff suppressed because it is too large
Load Diff
@@ -1,11 +0,0 @@
|
||||
foo = {};
|
||||
(function(foo){
|
||||
foo.box = function(){
|
||||
var a = 2;
|
||||
var b = 3;
|
||||
var c = 4;
|
||||
return a < c;
|
||||
}
|
||||
;
|
||||
}
|
||||
(foo));
|
||||
@@ -1,12 +0,0 @@
|
||||
foo = {};
|
||||
(function(foo){
|
||||
foo.Test = Class.create({initialize:function(){
|
||||
}
|
||||
});
|
||||
foo.box = function(){
|
||||
var test = new foo.Test();
|
||||
return true;
|
||||
}
|
||||
;
|
||||
}
|
||||
(foo));
|
||||
Reference in New Issue
Block a user