From 24c9d802c22e4e1d0a0ac459fa406967f985ff22 Mon Sep 17 00:00:00 2001 From: Zalim Bashorov Date: Fri, 29 Nov 2013 13:45:26 +0400 Subject: [PATCH] JS backend: made some asserts in AliasingContext and InnerDeclarationTranslator more informative. --- .../translate/context/AliasingContext.java | 5 ++++- .../expression/InnerDeclarationTranslator.java | 18 ++++++++++++------ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/context/AliasingContext.java b/js/js.translator/src/org/jetbrains/k2js/translate/context/AliasingContext.java index 6b149f716f3..82d6ef2d75b 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/context/AliasingContext.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/context/AliasingContext.java @@ -138,7 +138,10 @@ public class AliasingContext { aliasesForDescriptors.put(singletonMap.keySet().iterator().next(), singletonMap.values().iterator().next()); } JsExpression prev = aliasesForDescriptors.put(descriptor, alias); - assert prev == null; + assert prev == null : "Alias for descriptor already registered." + + " Descriptor: " + descriptor + + " prev alias: " + prev + + " new alias: " + alias; } } } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/expression/InnerDeclarationTranslator.java b/js/js.translator/src/org/jetbrains/k2js/translate/expression/InnerDeclarationTranslator.java index ec70e00d437..518caa74661 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/expression/InnerDeclarationTranslator.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/expression/InnerDeclarationTranslator.java @@ -23,6 +23,7 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.CallableDescriptor; import org.jetbrains.jet.lang.descriptors.VariableDescriptor; import org.jetbrains.k2js.translate.context.TranslationContext; +import org.jetbrains.k2js.translate.context.UsageTracker; import java.util.List; @@ -39,15 +40,18 @@ abstract class InnerDeclarationTranslator { } public JsExpression translate(@NotNull JsNameRef nameRef, @Nullable JsExpression self) { - boolean hasCaptured = context.usageTracker().hasCaptured(); + UsageTracker usageTracker = context.usageTracker(); + assert usageTracker != null : "Usage tracker should not be null for InnerDeclarationTranslator"; + + boolean hasCaptured = usageTracker.hasCaptured(); if (!hasCaptured && self == JsLiteral.NULL) { return createExpression(nameRef, self); } JsInvocation invocation = createInvocation(nameRef, self); if (hasCaptured) { - final List expressions = invocation.getArguments(); - context.usageTracker().forEachCaptured(new Consumer() { + final List invocationArguments = invocation.getArguments(); + usageTracker.forEachCaptured(new Consumer() { @Override public void consume(CallableDescriptor descriptor) { JsName name; @@ -55,11 +59,13 @@ abstract class InnerDeclarationTranslator { name = context.getNameForDescriptor(descriptor); } else { - name = ((JsNameRef) context.getAliasForDescriptor(descriptor)).getName(); - assert name != null; + JsExpression alias = context.getAliasForDescriptor(descriptor); + assert alias != null : "Alias not found for captured descriptor: " + descriptor; + name = ((JsNameRef) alias).getName(); + assert name != null : "Descriptor's alias don't have name: " + descriptor; } fun.getParameters().add(new JsParameter(name)); - expressions.add(name.makeRef()); + invocationArguments.add(name.makeRef()); } }); }