From bf84878a73ee48a5930e0f7a5d8847f51269b485 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Wed, 15 Jun 2011 19:45:08 +0400 Subject: [PATCH] Assertion failure fixed --- .../org/jetbrains/jet/lang/psi/JetUnaryExpression.java | 1 + .../src/org/jetbrains/jet/lang/types/JetTypeInferrer.java | 8 ++++++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/idea/src/org/jetbrains/jet/lang/psi/JetUnaryExpression.java b/idea/src/org/jetbrains/jet/lang/psi/JetUnaryExpression.java index 6e66ee62660..ca81e0d0735 100644 --- a/idea/src/org/jetbrains/jet/lang/psi/JetUnaryExpression.java +++ b/idea/src/org/jetbrains/jet/lang/psi/JetUnaryExpression.java @@ -13,6 +13,7 @@ public abstract class JetUnaryExpression extends JetExpression { super(node); } + @Nullable @IfNotParsed public abstract JetExpression getBaseExpression(); @NotNull diff --git a/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java b/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java index 8b7dc70e6c2..a7993719c22 100644 --- a/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java +++ b/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java @@ -1878,10 +1878,14 @@ public class JetTypeInferrer { @Override public void visitUnaryExpression(JetUnaryExpression expression) { + JetExpression baseExpression = expression.getBaseExpression(); + if (baseExpression == null) { + return; + } JetSimpleNameExpression operationSign = expression.getOperationSign(); if (JetTokens.LABELS.contains(operationSign.getReferencedNameElementType())) { // TODO : Some processing for the label? - result = getType(expression.getBaseExpression()); + result = getType(baseExpression); return; } IElementType operationType = operationSign.getReferencedNameElementType(); @@ -1890,7 +1894,7 @@ public class JetTypeInferrer { trace.getErrorHandler().genericError(operationSign.getNode(), "Unknown unary operation"); } else { - JetType receiverType = getType(scope, expression.getBaseExpression(), false); + JetType receiverType = getType(scope, baseExpression, false); if (receiverType != null) { FunctionDescriptor functionDescriptor = lookupFunction(scope, expression.getOperationSign(), name, receiverType, Collections.emptyList(), true); if (functionDescriptor != null) {