refactor PropertyAccessTranslato

This commit is contained in:
Pavel Talanov
2011-12-15 21:30:00 +04:00
parent 593a634f84
commit 4400ff34b2
2 changed files with 81 additions and 102 deletions
+40 -58
View File
@@ -14,23 +14,7 @@
<component name="ChangeListManager">
<list default="true" id="f02ef53d-47a4-4f5e-a1aa-3df68aae9b20" name="Default" comment="">
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/Aliaser.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/Aliaser.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/StaticContext.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/StaticContext.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/general/Translation.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/general/Translation.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/initializer/AbstractInitializerTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/initializer/AbstractInitializerTranslator.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/intrinsic/CompareToIntrinsic.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/intrinsic/CompareToIntrinsic.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/intrinsic/EqualsIntrinsic.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/intrinsic/EqualsIntrinsic.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/intrinsic/array/IntrinsicArrayUtils.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/intrinsic/array/IntrinsicArrayUtils.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/IncrementTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/IncrementTranslator.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/IntrinsicIncrementTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/IntrinsicIncrementTranslator.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/OperatorTable.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/OperatorTable.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/OverloadedIncrementTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/OverloadedIncrementTranslator.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/RhinoFunctionResultChecker.java" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/RhinoFunctionResultChecker.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" />
@@ -233,24 +217,6 @@
<splitter split-orientation="horizontal" split-proportion="0.73333335">
<split-first>
<leaf>
<file leaf-file-name="CodeGenerator.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/generate/CodeGenerator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="24" column="16" selection-start="595" selection-end="595" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="IncrementTranslator.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/IncrementTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="50" column="0" selection-start="2296" selection-end="2296" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="Intrinsics.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/intrinsic/Intrinsics.java">
<provider selected="true" editor-type-id="text-editor">
@@ -314,10 +280,28 @@
</provider>
</entry>
</file>
<file leaf-file-name="OverloadedIncrementTranslator.java" pinned="false" current="true" current-in-tab="true">
<file leaf-file-name="OverloadedIncrementTranslator.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/OverloadedIncrementTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="32" column="0" selection-start="1295" selection-end="1295" vertical-scroll-proportion="0.73275864">
<state line="32" column="0" selection-start="1295" selection-end="1295" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="PropertyTranslator.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/declaration/PropertyTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="25" column="19" selection-start="973" selection-end="973" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="PropertyAccessTranslator.java" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="232" column="8" selection-start="10244" selection-end="10244" vertical-scroll-proportion="1.4103448">
<folding />
</state>
</provider>
@@ -408,10 +392,10 @@
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/utils/TranslationUtils.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/Aliaser.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/OperatorTable.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/IncrementTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/IntrinsicIncrementTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/OverloadedIncrementTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java" />
</list>
</option>
</component>
@@ -1202,7 +1186,7 @@
</component>
<component name="ToolWindowManager">
<frame x="-8" y="-8" width="1936" height="1176" extended-state="6" />
<editor active="false" />
<editor active="true" />
<layout>
<window_info id="Data Sources" 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="Changes" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32853025" sideWeight="0.49812934" order="7" side_tool="false" content_ui="tabs" />
@@ -1223,7 +1207,7 @@
<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.28647783" sideWeight="0.6042267" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.39865515" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="true" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.3957733" sideWeight="0.8530198" 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.3957733" sideWeight="0.8530198" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.0908605" sideWeight="0.7146974" order="2" side_tool="false" content_ui="combo" />
<window_info id="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" />
@@ -1265,7 +1249,7 @@
<option name="INCLUDE_TEXT_INTO_SHELF" value="false" />
<option name="CREATE_PATCH_EXPAND_DETAILS_DEFAULT" value="true" />
<option name="FORCE_NON_EMPTY_COMMENT" value="false" />
<option name="LAST_COMMIT_MESSAGE" value="minor refactoring" />
<option name="LAST_COMMIT_MESSAGE" value="lost of refactoring" />
<option name="MAKE_NEW_CHANGELIST_ACTIVE" value="true" />
<option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="true" />
<option name="CHECK_FILES_UP_TO_DATE_BEFORE_COMMIT" value="false" />
@@ -1278,7 +1262,6 @@
<option name="UPDATE_GROUP_BY_CHANGELIST" value="false" />
<option name="SHOW_FILE_HISTORY_AS_TREE" value="false" />
<option name="FILE_HISTORY_SPLITTER_PROPORTION" value="0.6" />
<MESSAGE value="Added a bunch of tests which were omitted because of using ArrayList." />
<MESSAGE value="Refactor." />
<MESSAGE value="refactor." />
<MESSAGE value="refactor" />
@@ -1303,6 +1286,7 @@
<MESSAGE value="refactoring intrinsics" />
<MESSAGE value="changed @author tag" />
<MESSAGE value="minor refactoring" />
<MESSAGE value="lost of refactoring" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager />
@@ -1312,15 +1296,6 @@
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/Aliaser.java">
<provider selected="true" editor-type-id="text-editor">
<state line="20" column="32" selection-start="625" selection-end="625" vertical-scroll-proportion="0.0">
<folding>
<element signature="e#648#656#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/OperatorTable.java">
<provider selected="true" editor-type-id="text-editor">
<state line="18" column="57" selection-start="516" selection-end="516" vertical-scroll-proportion="0.0">
@@ -1330,13 +1305,6 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="31" column="32" selection-start="1600" selection-end="1600" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/context/Namer.java">
<provider selected="true" editor-type-id="text-editor">
<state line="34" column="4" selection-start="1180" selection-end="1180" vertical-scroll-proportion="0.0">
@@ -1423,7 +1391,21 @@
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/operation/OverloadedIncrementTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="32" column="0" selection-start="1295" selection-end="1295" vertical-scroll-proportion="0.73275864">
<state line="32" column="0" selection-start="1295" selection-end="1295" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/declaration/PropertyTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="25" column="19" selection-start="973" selection-end="973" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/reference/PropertyAccessTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="232" column="8" selection-start="10244" selection-end="10244" vertical-scroll-proportion="1.4103448">
<folding />
</state>
</provider>
@@ -33,40 +33,60 @@ public final class PropertyAccessTranslator extends AccessTranslator {
"can be called safely.";
@NotNull
private static PropertyDescriptor getPropertyDescriptor(@NotNull JetSimpleNameExpression expression,
@NotNull TranslationContext context) {
DeclarationDescriptor descriptor =
getDescriptorForReferenceExpression(context.bindingContext(), expression);
assert descriptor instanceof PropertyDescriptor : "Must be a property descriptor.";
return (PropertyDescriptor) descriptor;
}
@NotNull
public static JsExpression translateAsPropertyGetterCall(@NotNull JetQualifiedExpression expression,
@NotNull TranslationContext context) {
return (new PropertyAccessTranslator(expression, context))
return (newInstance(expression, context))
.translateAsGet();
}
@NotNull
public static JsExpression translateAsPropertyGetterCall(@NotNull PropertyDescriptor descriptor,
@NotNull TranslationContext context) {
return (new PropertyAccessTranslator(descriptor, context))
return (newInstance(descriptor, context))
.translateAsGet();
}
@NotNull
public static PropertyAccessTranslator newInstance(@NotNull JetQualifiedExpression expression,
@NotNull TranslationContext context) {
return (new PropertyAccessTranslator(expression, context));
}
@NotNull
public static PropertyAccessTranslator newInstance(@NotNull JetSimpleNameExpression expression,
@NotNull TranslationContext context) {
return (new PropertyAccessTranslator(expression, context));
}
@NotNull
public static JsExpression translateAsPropertyGetterCall(@NotNull JetSimpleNameExpression expression,
@NotNull TranslationContext context) {
return (new PropertyAccessTranslator(expression, context))
return (newInstance(expression, context))
.translateAsGet();
}
@NotNull
private static PropertyAccessTranslator newInstance(@NotNull PropertyDescriptor descriptor,
@NotNull TranslationContext context) {
return new PropertyAccessTranslator(descriptor, null, false, context);
}
@NotNull
public static PropertyAccessTranslator newInstance(@NotNull JetQualifiedExpression expression,
@NotNull TranslationContext context) {
JetExpression qualifier = expression.getReceiverExpression();
JetSimpleNameExpression selector = getNotNullSelector(expression);
PropertyDescriptor propertyDescriptor = getPropertyDescriptor(selector, context);
boolean isBackingFieldAccess = isBackingFieldReference(selector);
return new PropertyAccessTranslator(propertyDescriptor, qualifier, isBackingFieldAccess, context);
}
@NotNull
public static PropertyAccessTranslator newInstance(@NotNull JetSimpleNameExpression expression,
@NotNull TranslationContext context) {
PropertyDescriptor propertyDescriptor = getPropertyDescriptor(expression, context);
return new PropertyAccessTranslator(propertyDescriptor, null, isBackingFieldReference(expression), context);
}
@NotNull
public static PropertyAccessTranslator newInstance(@NotNull JetExpression expression,
@NotNull TranslationContext context) {
@@ -116,30 +136,14 @@ public final class PropertyAccessTranslator extends AccessTranslator {
private final PropertyDescriptor propertyDescriptor;
private final boolean isBackingFieldAccess;
//TODO: make one constructor
private PropertyAccessTranslator(@NotNull JetSimpleNameExpression simpleName,
@NotNull TranslationContext context) {
super(context);
this.qualifier = null;
this.propertyDescriptor = getPropertyDescriptor(simpleName).getOriginal();
this.isBackingFieldAccess = isBackingFieldReference(simpleName);
}
private PropertyAccessTranslator(@NotNull JetQualifiedExpression qualifiedExpression,
@NotNull TranslationContext context) {
super(context);
this.qualifier = qualifiedExpression.getReceiverExpression();
JetSimpleNameExpression selector = getNotNullSelector(qualifiedExpression);
this.propertyDescriptor = getPropertyDescriptor(selector).getOriginal();
this.isBackingFieldAccess = isBackingFieldReference(selector);
}
private PropertyAccessTranslator(@NotNull PropertyDescriptor descriptor,
@Nullable JetExpression qualifier,
boolean isBackingFieldAccess,
@NotNull TranslationContext context) {
super(context);
this.qualifier = null;
this.qualifier = qualifier;
this.propertyDescriptor = descriptor.getOriginal();
this.isBackingFieldAccess = false;
this.isBackingFieldAccess = isBackingFieldAccess;
}
@Override
@@ -226,6 +230,7 @@ public final class PropertyAccessTranslator extends AccessTranslator {
if (context().isStandardObject(propertyDescriptor)) {
return context().getNameForStandardObject(propertyDescriptor);
}
PropertyGetterDescriptor getter = getGetterDescriptor();
return context().getNameForDescriptor(getter);
}
@@ -250,12 +255,4 @@ public final class PropertyAccessTranslator extends AccessTranslator {
return setter;
}
@NotNull
private PropertyDescriptor getPropertyDescriptor(@NotNull JetSimpleNameExpression expression) {
DeclarationDescriptor descriptor =
getDescriptorForReferenceExpression(context().bindingContext(), expression);
//TODO
assert descriptor instanceof PropertyDescriptor;
return (PropertyDescriptor) descriptor;
}
}