Added test for unary operation on int properties.

This commit is contained in:
Pavel Talanov
2011-11-24 17:25:36 +04:00
parent d23bdb492d
commit 8cae5c9963
4 changed files with 128 additions and 81 deletions
+95 -80
View File
@@ -7,14 +7,11 @@
<bookmark url="file://$PROJECT_DIR$/translator/testFiles/propertyAccess/cases/safeCallReturnsNullIfFails.kt" line="3" />
</component>
<component name="ChangeListManager">
<list default="true" id="f02ef53d-47a4-4f5e-a1aa-3df68aae9b20" name="Default" comment="Refactoring property access translation code.">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/operatorOverloadOnPropertyCallGetterAndSetterOnlyOnce.kt" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/unaryOnIntProperty.kt" />
<list default="true" id="f02ef53d-47a4-4f5e-a1aa-3df68aae9b20" name="Default" comment="">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/unaryOnIntProperty2.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/util/AstUtil.java" afterPath="$PROJECT_DIR$/js/src/com/google/dart/compiler/util/AstUtil.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/InitializerGenerator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/InitializerGenerator.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/OperatorTable.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/OperatorTable.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/UnaryOperationTranslator.java" afterPath="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/UnaryOperationTranslator.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/OperatorOverloadingTest.java" afterPath="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/OperatorOverloadingTest.java" />
</list>
<ignored path="k2js.iws" />
@@ -100,7 +97,7 @@
<file leaf-file-name="unaryOnIntProperty.kt" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/unaryOnIntProperty.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="13" column="18" selection-start="183" selection-end="183" vertical-scroll-proportion="0.0">
<state line="13" column="18" selection-start="0" selection-end="186" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -109,16 +106,43 @@
<file leaf-file-name="unaryOnIntProperty.js" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/out/unaryOnIntProperty.js">
<provider selected="true" editor-type-id="text-editor">
<state line="12" column="72" selection-start="309" selection-end="309" vertical-scroll-proportion="0.0">
<state line="12" column="72" selection-start="0" selection-end="589" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="OperatorOverloadingTest.java" pinned="false" current="true" current-in-tab="true">
<file leaf-file-name="OperatorOverloadingTest.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/OperatorOverloadingTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="43" column="19" selection-start="1006" selection-end="1006" vertical-scroll-proportion="0.5284672">
<state line="57" column="16" selection-start="1388" selection-end="1388" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="unaryOnIntProperty2.js" pinned="false" current="true" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/out/unaryOnIntProperty2.js">
<provider selected="true" editor-type-id="text-editor">
<state line="25" column="10" selection-start="493" selection-end="493" vertical-scroll-proportion="0.620438">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="OperatorTable.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/OperatorTable.java">
<provider selected="true" editor-type-id="text-editor">
<state line="48" column="5" selection-start="2480" selection-end="2480" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="unaryOnIntProperty2.kt" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/unaryOnIntProperty2.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="13" column="18" selection-start="179" selection-end="179" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -127,7 +151,7 @@
<file leaf-file-name="operatorOverloadOnPropertyCallGetterAndSetterOnlyOnce.js" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/out/operatorOverloadOnPropertyCallGetterAndSetterOnlyOnce.js">
<provider selected="true" editor-type-id="text-editor">
<state line="19" column="95" selection-start="424" selection-end="424" vertical-scroll-proportion="0.0">
<state line="5" column="95" selection-start="144" selection-end="144" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -136,7 +160,7 @@
<file leaf-file-name="UnaryOperationTranslator.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/UnaryOperationTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="147" column="98" selection-start="6048" selection-end="6048" vertical-scroll-proportion="0.0">
<state line="138" column="19" selection-start="5621" selection-end="5621" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
@@ -153,33 +177,6 @@
</provider>
</entry>
</file>
<file leaf-file-name="NamespaceTranslator.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/NamespaceTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="29" column="21" selection-start="955" selection-end="955" vertical-scroll-proportion="-0.65384614">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="ClassDeclarationTranslator.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ClassDeclarationTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="104" column="75" selection-start="4003" selection-end="4224" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="InitializerGenerator.java" pinned="false" current="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/InitializerGenerator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="38" column="57" selection-start="1636" selection-end="1636" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
</file>
</leaf>
</split-first>
<split-second>
@@ -241,7 +238,7 @@
<file leaf-file-name="FunctionTest.java" pinned="false" current="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/FunctionTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="30" column="0" selection-start="694" selection-end="694" vertical-scroll-proportion="0.14160584">
<state line="30" column="0" selection-start="694" selection-end="694" vertical-scroll-proportion="0.15620437">
<folding />
</state>
</provider>
@@ -295,8 +292,6 @@
<component name="IdeDocumentHistory">
<option name="changedFiles">
<list>
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/prefixIncReturnsCorrectValue.kt" />
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/overloadedCallOnProperty.kt" />
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/postfixOnProperty.kt" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ReferenceTranslator.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/ExpressionVisitor.java" />
@@ -308,9 +303,11 @@
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/InitializerGenerator.java" />
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/operatorOverloadOnPropertyCallGetterAndSetterOnlyOnce.kt" />
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/FunctionTest.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/UnaryOperationTranslator.java" />
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/unaryOnIntProperty.kt" />
<option value="$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/OperatorOverloadingTest.java" />
<option value="$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/unaryOnIntProperty2.kt" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/OperatorTable.java" />
<option value="$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/UnaryOperationTranslator.java" />
</list>
</option>
</component>
@@ -425,6 +422,24 @@
<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="patternMatching" />
<option name="myItemType" value="com.intellij.ide.projectView.impl.nodes.PsiDirectoryNode" />
</PATH_ELEMENT>
</PATH>
<PATH>
<PATH_ELEMENT>
<option name="myItemId" value="k2js" />
@@ -1040,7 +1055,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="Refactoring property access translation code." />
<option name="LAST_COMMIT_MESSAGE" value="Added test for unary operation on int properties." />
<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" />
@@ -1053,7 +1068,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 support for simple case of when expression." />
<MESSAGE value="Supported another case of when expression." />
<MESSAGE value="Fixed a bug where multiple when entries could execute in one statement." />
<MESSAGE value="Supported variable is value pattern matching." />
@@ -1078,6 +1092,7 @@
<MESSAGE value="Operator overloading: simple cases with ++ and --." />
<MESSAGE value="Refactoring operation translator code." />
<MESSAGE value="Refactoring property access translation code." />
<MESSAGE value="Added test for unary operation on int properties." />
</component>
<component name="XDebuggerManager">
<breakpoint-manager />
@@ -1087,27 +1102,6 @@
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/postfixOnProperty.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="17" column="16" selection-start="208" selection-end="208" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/DeclarationBodyVisitor.java">
<provider selected="true" editor-type-id="text-editor">
<state line="17" column="19" selection-start="510" selection-end="510" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/TranslationContext.java">
<provider selected="true" editor-type-id="text-editor">
<state line="66" column="34" selection-start="2321" selection-end="2321" 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="490" selection-end="490" vertical-scroll-proportion="0.0">
@@ -1145,14 +1139,14 @@
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/FunctionTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="30" column="0" selection-start="694" selection-end="694" vertical-scroll-proportion="0.14160584">
<state line="30" column="0" selection-start="694" selection-end="694" vertical-scroll-proportion="0.15620437">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/out/operatorOverloadOnPropertyCallGetterAndSetterOnlyOnce.js">
<provider selected="true" editor-type-id="text-editor">
<state line="19" column="95" selection-start="424" selection-end="424" vertical-scroll-proportion="0.0">
<state line="5" column="95" selection-start="144" selection-end="144" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
@@ -1173,30 +1167,51 @@
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/out/unaryOnIntProperty.js">
<provider selected="true" editor-type-id="text-editor">
<state line="12" column="72" selection-start="309" selection-end="309" vertical-scroll-proportion="0.0">
<state line="12" column="72" selection-start="0" selection-end="589" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/UnaryOperationTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="147" column="98" selection-start="6048" selection-end="6048" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/unaryOnIntProperty.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="13" column="18" selection-start="183" selection-end="183" vertical-scroll-proportion="0.0">
<state line="13" column="18" selection-start="0" selection-end="186" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/cases/unaryOnIntProperty2.kt">
<provider selected="true" editor-type-id="text-editor">
<state line="13" column="18" selection-start="179" selection-end="179" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/OperatorTable.java">
<provider selected="true" editor-type-id="text-editor">
<state line="48" column="5" selection-start="2480" selection-end="2480" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/test/org/jetbrains/k2js/test/OperatorOverloadingTest.java">
<provider selected="true" editor-type-id="text-editor">
<state line="43" column="19" selection-start="1006" selection-end="1006" vertical-scroll-proportion="0.5284672">
<state line="57" column="16" selection-start="1388" selection-end="1388" vertical-scroll-proportion="0.0">
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/src/org/jetbrains/k2js/translate/UnaryOperationTranslator.java">
<provider selected="true" editor-type-id="text-editor">
<state line="138" column="19" selection-start="5621" selection-end="5621" vertical-scroll-proportion="0.0">
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/translator/testFiles/operatorOverloading/out/unaryOnIntProperty2.js">
<provider selected="true" editor-type-id="text-editor">
<state line="25" column="10" selection-start="493" selection-end="493" vertical-scroll-proportion="0.620438">
<folding />
</state>
</provider>
@@ -7,6 +7,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lexer.JetToken;
import org.jetbrains.jet.lexer.JetTokens;
import java.util.Arrays;
@@ -145,7 +146,7 @@ public final class UnaryOperationTranslator extends OperationTranslator {
AstUtil.setQualifier(operationReference, receiver);
return AstUtil.newInvocation(operationReference);
}
return new JsPrefixOperation(OperatorTable.getUnaryOperator(getOperationToken()), receiver);
return unaryAsBinary(getOperationToken(), receiver);
}
@NotNull
@@ -177,4 +178,15 @@ public final class UnaryOperationTranslator extends OperationTranslator {
assert elementType instanceof JetToken : "Unary expression should have IElementType of type JetToken";
return (JetToken) elementType;
}
public JsBinaryOperation unaryAsBinary(@NotNull JetToken token, @NotNull JsExpression expression) {
JsNumberLiteral oneLiteral = translationContext().program().getNumberLiteral(1);
if (token.equals(JetTokens.PLUSPLUS)) {
return new JsBinaryOperation(JsBinaryOperator.ADD, expression, oneLiteral);
}
if (token.equals(JetTokens.MINUSMINUS)) {
return new JsBinaryOperation(JsBinaryOperator.SUB, expression, oneLiteral);
}
throw new AssertionError("This method should be called only for increment and decrement operators");
}
}
@@ -53,4 +53,9 @@ public class OperatorOverloadingTest extends TranslationTest {
public void unaryOnIntProperty() throws Exception {
testFooBoxIsTrue("unaryOnIntProperty.kt");
}
@Test
public void unaryOnIntPropertyAsStatement() throws Exception {
testFooBoxIsTrue("unaryOnIntProperty2.kt");
}
}
@@ -0,0 +1,15 @@
namespace foo
class MyInt(i : Int) {
var b = i
fun inc() : MyInt {
b++;
return this;
}
}
fun box() : Boolean {
var t = MyInt(0)
t++;
return (t.b == 1)
}