diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.java b/js/js.translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.java index bf4e7d43830..c399cbaf53d 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/reference/ReferenceTranslator.java @@ -16,6 +16,7 @@ package org.jetbrains.k2js.translate.reference; +import com.google.common.base.Preconditions; import com.google.dart.compiler.backend.js.ast.JsExpression; import com.google.dart.compiler.backend.js.ast.JsName; import org.jetbrains.annotations.NotNull; @@ -57,6 +58,7 @@ public final class ReferenceTranslator { public static JsExpression translateAsLocalNameReference(@NotNull DeclarationDescriptor referencedDescriptor, @NotNull TranslationContext context) { DeclarationDescriptor effectiveDescriptor = getReferencedDescriptor(referencedDescriptor, context); + Preconditions.checkNotNull(effectiveDescriptor, "Could not find DeclarationDescriptor for %s", referencedDescriptor); return context.getNameForDescriptor(effectiveDescriptor).makeRef(); } @@ -68,9 +70,11 @@ public final class ReferenceTranslator { DeclarationDescriptor effectiveDescriptor; if (context.isEcma5() && referencedDescriptor instanceof PropertyAccessorDescriptor) { effectiveDescriptor = ((PropertyAccessorDescriptor) referencedDescriptor).getCorrespondingProperty(); + Preconditions.checkNotNull(effectiveDescriptor, "No correspondingProperty available for descriptor %s", referencedDescriptor); } else { effectiveDescriptor = referencedDescriptor; + Preconditions.checkNotNull(effectiveDescriptor, "No referencedDescriptor available"); } return effectiveDescriptor; } diff --git a/js/js.translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java b/js/js.translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java index 11090c851b7..a8e8536aca1 100644 --- a/js/js.translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java +++ b/js/js.translator/src/org/jetbrains/k2js/translate/utils/BindingUtils.java @@ -16,11 +16,13 @@ package org.jetbrains.k2js.translate.utils; +import com.google.common.base.Preconditions; import com.google.common.collect.Sets; import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.*; +import org.jetbrains.jet.lang.diagnostics.DiagnosticUtils; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingContextUtils; @@ -188,6 +190,8 @@ public final class BindingUtils { @NotNull JetReferenceExpression reference) { DeclarationDescriptor referencedDescriptor = getNullableDescriptorForReferenceExpression(context, reference); assert referencedDescriptor != null : "Reference expression must reference a descriptor."; + Preconditions.checkNotNull(referencedDescriptor, "Reference expression must reference a descriptor for reference %s at %s", reference.getText(), + DiagnosticUtils.atLocation(reference)); return referencedDescriptor; }