diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 12832349811..6ab1399ba54 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -16,6 +16,8 @@
+
+
@@ -189,25 +191,13 @@
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -258,10 +248,10 @@
-
+
-
+
@@ -270,7 +260,16 @@
-
+
+
+
+
+
+
+
+
+
+
@@ -289,10 +288,10 @@
-
+
-
+
@@ -316,19 +315,28 @@
-
+
-
+
-
-
+
+
+
+
+
+
+
+
+
+
+
@@ -347,15 +355,6 @@
-
-
-
-
-
-
-
-
-
@@ -407,7 +406,6 @@
@@ -690,6 +689,58 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -808,6 +859,7 @@
+
@@ -835,35 +887,7 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
@@ -986,6 +1010,29 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1142,11 +1189,11 @@
-
-
-
-
-
+
+
+
+
+
localhost
@@ -1218,10 +1265,10 @@
-
+
-
+
@@ -1266,7 +1313,7 @@
-
+
@@ -1279,7 +1326,6 @@
-
@@ -1304,6 +1350,7 @@
+
@@ -1313,55 +1360,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
@@ -1404,27 +1402,79 @@
-
+
-
-
-
-
-
-
+
+
-
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java b/translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java
index a17a8d7c041..77df685d7a9 100644
--- a/translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java
+++ b/translator/src/org/jetbrains/k2js/translate/reference/CallTranslator.java
@@ -24,8 +24,7 @@ import static com.google.dart.compiler.util.AstUtil.not;
import static org.jetbrains.k2js.translate.utils.BindingUtils.*;
import static org.jetbrains.k2js.translate.utils.DescriptorUtils.getVariableDescriptorForVariableAsFunction;
import static org.jetbrains.k2js.translate.utils.DescriptorUtils.isConstructorDescriptor;
-import static org.jetbrains.k2js.translate.utils.PsiUtils.isInOrNotInOperation;
-import static org.jetbrains.k2js.translate.utils.PsiUtils.isNotInOperation;
+import static org.jetbrains.k2js.translate.utils.PsiUtils.*;
import static org.jetbrains.k2js.translate.utils.TranslationUtils.*;
/**
@@ -54,6 +53,7 @@ public final class CallTranslator extends AbstractTranslator {
return new CallTranslator(receiver, arguments, (FunctionDescriptor) descriptor, context);
}
+ //TODO: method too long
@NotNull
private CallTranslator buildFromBinary(@NotNull JetBinaryExpression binaryExpression,
boolean swapReceiverAndArgument) {
@@ -119,16 +119,10 @@ public final class CallTranslator extends AbstractTranslator {
@NotNull ValueParameterDescriptor parameterDescriptor, @NotNull TranslationContext context) {
ResolvedValueArgument actualArgument = formalToActualArguments.get(parameterDescriptor);
if (actualArgument instanceof DefaultValueArgument) {
- assert parameterDescriptor.hasDefaultValue() : "Unsupplied parameter must have default value.";
- JetParameter psiParameter = getParameterForDescriptor(context.bindingContext(), parameterDescriptor);
- JetExpression defaultValue = psiParameter.getDefaultValue();
- assert defaultValue != null : "No default value found in PSI.";
- return defaultValue;
+ return getDefaultArgument(context.bindingContext(), parameterDescriptor);
+ } else {
+ return getExpressionArgument(actualArgument);
}
- List argumentExpressions = actualArgument.getArgumentExpressions();
- assert !argumentExpressions.isEmpty() : "Actual arguments must be supplied.";
- assert argumentExpressions.size() == 1 : "Varargs not supported.";
- return argumentExpressions.get(0);
}
}
diff --git a/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java b/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java
index 9b5513a31d6..e03ca37cbbc 100644
--- a/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java
+++ b/translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java
@@ -288,4 +288,14 @@ public final class BindingUtils {
return null;
}
+ @NotNull
+ public static JetExpression getDefaultArgument(@NotNull BindingContext context,
+ @NotNull ValueParameterDescriptor parameterDescriptor) {
+ assert parameterDescriptor.hasDefaultValue() : "Unsupplied parameter must have default value.";
+ JetParameter psiParameter = getParameterForDescriptor(context, parameterDescriptor);
+ JetExpression defaultValue = psiParameter.getDefaultValue();
+ assert defaultValue != null : "No default value found in PSI.";
+ return defaultValue;
+ }
+
}
diff --git a/translator/src/org/jetbrains/k2js/translate/utils/PsiUtils.java b/translator/src/org/jetbrains/k2js/translate/utils/PsiUtils.java
index 2da16e22b91..433fd6b4137 100644
--- a/translator/src/org/jetbrains/k2js/translate/utils/PsiUtils.java
+++ b/translator/src/org/jetbrains/k2js/translate/utils/PsiUtils.java
@@ -4,9 +4,12 @@ import com.intellij.psi.tree.IElementType;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.lang.psi.*;
+import org.jetbrains.jet.lang.resolve.calls.ResolvedValueArgument;
import org.jetbrains.jet.lexer.JetToken;
import org.jetbrains.jet.lexer.JetTokens;
+import java.util.List;
+
/**
* @author Pavel Talanov
*/
@@ -84,4 +87,12 @@ public final class PsiUtils {
assert loopParameter != null;
return loopParameter;
}
+
+ @NotNull
+ public static JetExpression getExpressionArgument(@NotNull ResolvedValueArgument actualArgument) {
+ List argumentExpressions = actualArgument.getArgumentExpressions();
+ assert !argumentExpressions.isEmpty() : "Actual arguments must be supplied.";
+ assert argumentExpressions.size() == 1 : "Varargs not supported.";
+ return argumentExpressions.get(0);
+ }
}