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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -438,7 +496,7 @@
-
+
@@ -463,54 +521,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -693,7 +703,7 @@
-
+
@@ -1007,7 +1017,7 @@
-
+
@@ -1017,7 +1027,7 @@
-
+
@@ -1061,7 +1071,7 @@
-
+
@@ -1074,7 +1084,6 @@
-
@@ -1099,6 +1108,7 @@
+
@@ -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