From 0b0afcedabef31cb778931052c5dc8827cedae85 Mon Sep 17 00:00:00 2001 From: Pavel Talanov Date: Fri, 25 Nov 2011 18:44:11 +0400 Subject: [PATCH] Added test. --- .idea/workspace.xml | 282 +++++++++--------- .../translate/AbstractInitializerVisitor.java | 74 ----- .../NamespaceInitializerVisitor.java | 46 --- .../k2js/test/OperatorOverloadingTest.java | 4 + .../usingModInCaseModAssignNotAvailable.kt | 15 + 5 files changed, 166 insertions(+), 255 deletions(-) delete mode 100644 translator/src/org/jetbrains/k2js/translate/AbstractInitializerVisitor.java delete mode 100644 translator/src/org/jetbrains/k2js/translate/NamespaceInitializerVisitor.java create mode 100644 translator/testFiles/operatorOverloading/cases/usingModInCaseModAssignNotAvailable.kt diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 480cb9b447c..5e69403a038 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -8,13 +8,11 @@ + + + - - - - - - + @@ -164,10 +162,10 @@ - + - + @@ -177,15 +175,6 @@ - - - - - - - - - @@ -195,33 +184,13 @@ - - - - - - - - - - - - - - - - - - - - - - - - + + + + @@ -229,19 +198,46 @@ - + - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -295,9 +291,6 @@ @@ -330,6 +326,50 @@ + + + + + + + + + Android + + + Class structure + + + Dependency issues + + + General + + + Internationalization issues + + + Java language level migration aids + + + Logging issues + + + Numeric issues + + + OSGi + + + Plugin DevKit + + + Portability issues + + + + + @@ -419,6 +459,24 @@ @@ -1108,34 +1118,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1177,8 +1159,10 @@ - - + + + + @@ -1212,17 +1196,45 @@ - + - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/translator/src/org/jetbrains/k2js/translate/AbstractInitializerVisitor.java b/translator/src/org/jetbrains/k2js/translate/AbstractInitializerVisitor.java deleted file mode 100644 index e2a4044a211..00000000000 --- a/translator/src/org/jetbrains/k2js/translate/AbstractInitializerVisitor.java +++ /dev/null @@ -1,74 +0,0 @@ -package org.jetbrains.k2js.translate; - -import com.google.dart.compiler.backend.js.ast.JsExpression; -import com.google.dart.compiler.backend.js.ast.JsFunction; -import com.google.dart.compiler.backend.js.ast.JsScope; -import com.google.dart.compiler.backend.js.ast.JsStatement; -import com.google.dart.compiler.util.AstUtil; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.jet.lang.psi.JetClassInitializer; -import org.jetbrains.jet.lang.psi.JetDeclaration; -import org.jetbrains.jet.lang.psi.JetExpression; -import org.jetbrains.jet.lang.psi.JetProperty; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -/** - * @author Talanov Pavel - */ -public abstract class AbstractInitializerVisitor extends TranslatorVisitor> { - - @NotNull - protected final JsScope initializerMethodScope; - - @NotNull - protected final TranslationContext initializerMethodContext; - - protected AbstractInitializerVisitor(@NotNull TranslationContext enclosingContext, @NotNull JsScope newScope) { - this.initializerMethodContext = enclosingContext.newEnclosingScope(newScope); - this.initializerMethodScope = newScope; - } - - @NotNull - abstract protected JsFunction generate(); - - @Override - @NotNull - public List visitProperty(@NotNull JetProperty expression, @NotNull TranslationContext context) { - JetExpression initializer = expression.getInitializer(); - if (initializer == null) { - return new ArrayList(); - } - return Arrays.asList(translateInitializer(expression, context, initializer)); - } - - @NotNull - private JsStatement translateInitializer(@NotNull JetProperty property, @NotNull TranslationContext context, - @NotNull JetExpression initializer) { - JsExpression initExpression = Translation.translateAsExpression(initializer, context); - return assignmentToBackingField(property, initExpression, context); - } - - @NotNull - JsStatement assignmentToBackingField(@NotNull JetProperty property, @NotNull JsExpression initExpression, - @NotNull TranslationContext context) { - - return AstUtil.newAssignmentStatement(backingFieldReference(property, context), initExpression); - } - - @Override - @NotNull - public List visitAnonymousInitializer(@NotNull JetClassInitializer initializer, - @NotNull TranslationContext context) { - return Arrays.asList(Translation.translateAsStatement(initializer.getBody(), context)); - } - - @Override - @NotNull - // Not interested in other types of declarations, they do not contain initializers. - public List visitDeclaration(@NotNull JetDeclaration expression, @NotNull TranslationContext context) { - return new ArrayList(); - } -} diff --git a/translator/src/org/jetbrains/k2js/translate/NamespaceInitializerVisitor.java b/translator/src/org/jetbrains/k2js/translate/NamespaceInitializerVisitor.java deleted file mode 100644 index 4915eb42e78..00000000000 --- a/translator/src/org/jetbrains/k2js/translate/NamespaceInitializerVisitor.java +++ /dev/null @@ -1,46 +0,0 @@ -package org.jetbrains.k2js.translate; - -import com.google.dart.compiler.backend.js.ast.JsFunction; -import com.google.dart.compiler.backend.js.ast.JsScope; -import com.google.dart.compiler.backend.js.ast.JsStatement; -import com.google.dart.compiler.util.AstUtil; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.jet.lang.psi.JetDeclaration; -import org.jetbrains.jet.lang.psi.JetNamespace; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author Talanov Pavel - */ -public final class NamespaceInitializerVisitor extends AbstractInitializerVisitor { - - @NotNull - private final JetNamespace namespace; - - public NamespaceInitializerVisitor(@NotNull JetNamespace namespace, @NotNull TranslationContext context) { - super(context, new JsScope(context.getScopeForElement(namespace), - "initializer " + namespace.getName())); - this.namespace = namespace; - } - - @Override - @NotNull - public JsFunction generate() { - JsFunction result = JsFunction.getAnonymousFunctionWithScope(initializerMethodScope); - result.setBody(AstUtil.newBlock(namespace.accept(this, initializerMethodContext))); - return result; - } - - @Override - @NotNull - public List visitNamespace(@NotNull JetNamespace expression, @NotNull TranslationContext context) { - List initializerStatements = new ArrayList(); - for (JetDeclaration declaration : expression.getDeclarations()) { - initializerStatements.addAll(declaration.accept(this, context)); - } - return initializerStatements; - } - -} diff --git a/translator/test/org/jetbrains/k2js/test/OperatorOverloadingTest.java b/translator/test/org/jetbrains/k2js/test/OperatorOverloadingTest.java index 57d7a98b646..42efb229d9c 100644 --- a/translator/test/org/jetbrains/k2js/test/OperatorOverloadingTest.java +++ b/translator/test/org/jetbrains/k2js/test/OperatorOverloadingTest.java @@ -90,5 +90,9 @@ public class OperatorOverloadingTest extends TranslationTest { testFooBoxIsTrue("plusAndMinusAsAnExpression.kt"); } + @Test + public void usingModInCaseModAssignNotAvailable() throws Exception { + testFooBoxIsTrue("usingModInCaseModAssignNotAvailable.kt"); + } } diff --git a/translator/testFiles/operatorOverloading/cases/usingModInCaseModAssignNotAvailable.kt b/translator/testFiles/operatorOverloading/cases/usingModInCaseModAssignNotAvailable.kt new file mode 100644 index 00000000000..9c7ac1c608d --- /dev/null +++ b/translator/testFiles/operatorOverloading/cases/usingModInCaseModAssignNotAvailable.kt @@ -0,0 +1,15 @@ +namespace foo + +class A() { + var p = "yeah" + fun mod(other : A) : A { + return A(); + } +} + +fun box() : Boolean { + var c = A() + val d = c; + c %= A(); + return (c != d) && (c.p == "yeah") +} \ No newline at end of file