From a3d30409d3d2c3b12ce3d8ecab2b6c843f3bd695 Mon Sep 17 00:00:00 2001 From: James Strachan Date: Mon, 16 Jul 2012 13:47:44 +0100 Subject: [PATCH] added more descriptive assertion failure --- .../intrinsic/CallStandardMethodIntrinsic.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/CallStandardMethodIntrinsic.java b/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/CallStandardMethodIntrinsic.java index d5bc018a9da..2ec496ef415 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/CallStandardMethodIntrinsic.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/intrinsic/CallStandardMethodIntrinsic.java @@ -17,11 +17,13 @@ package org.jetbrains.k2js.translate.intrinsic; import com.google.common.collect.Lists; +import com.google.dart.compiler.Source; import com.google.dart.compiler.backend.js.ast.JsExpression; import com.google.dart.compiler.backend.js.ast.JsNameRef; import com.google.dart.compiler.util.AstUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jet.lang.diagnostics.DiagnosticUtils; import org.jetbrains.k2js.translate.context.TranslationContext; import java.util.List; @@ -51,11 +53,24 @@ public final class CallStandardMethodIntrinsic implements Intrinsic { @NotNull List arguments, @NotNull TranslationContext context) { assert (receiver != null == receiverShouldBeNotNull); - assert arguments.size() == expectedParamsNumber; + assert arguments.size() == expectedParamsNumber : "Incorrect number of arguments " + arguments.size() + " when expected " + expectedParamsNumber + " on method " + methodName + " " + atLocation(receiver, arguments); JsNameRef iteratorFunName = AstUtil.newQualifiedNameRef(methodName); return newInvocation(iteratorFunName, composeArguments(receiver, arguments)); } + // TODO move to better helper class + public static String atLocation(JsExpression expression, List arguments) { + List list = Lists.newArrayList(expression); + list.addAll(arguments); + for (JsExpression value : arguments) { + Source source = value.getSource(); + if (source != null) { + return "at " + source + " " + expression.getSourceLine() + ":" + expression.getSourceLine(); + } + } + return "at unknown location"; + } + @NotNull private static List composeArguments(@Nullable JsExpression receiver, @NotNull List arguments) { if (receiver != null) {