Fix EA-67177: exception when analysing unfinished assignment expression without RHS.

This commit is contained in:
Ilya Ryzhenkov
2015-04-02 18:55:34 +03:00
parent cb7617b3ca
commit 1fc1c025e9
@@ -943,7 +943,7 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
@NotNull BindingTrace trace, @NotNull BindingTrace trace,
@NotNull ExpressionTypingContext context, @NotNull ExpressionTypingContext context,
@NotNull JetExpression expression, @NotNull JetExpression expression,
@NotNull JetExpression rightHandSide @Nullable JetExpression rightHandSide
) { ) {
return checkLValue(trace, context, expression, rightHandSide, false); return checkLValue(trace, context, expression, rightHandSide, false);
} }
@@ -952,14 +952,14 @@ public class BasicExpressionTypingVisitor extends ExpressionTypingVisitor {
@NotNull BindingTrace trace, @NotNull BindingTrace trace,
@NotNull ExpressionTypingContext context, @NotNull ExpressionTypingContext context,
@NotNull JetExpression expressionWithParenthesis, @NotNull JetExpression expressionWithParenthesis,
@NotNull JetExpression rightHandSide, @Nullable JetExpression rightHandSide,
boolean canBeThis boolean canBeThis
) { ) {
JetExpression expression = JetPsiUtil.deparenthesize(expressionWithParenthesis); JetExpression expression = JetPsiUtil.deparenthesize(expressionWithParenthesis);
if (expression instanceof JetArrayAccessExpression) { if (expression instanceof JetArrayAccessExpression) {
JetArrayAccessExpression arrayAccessExpression = (JetArrayAccessExpression) expression; JetArrayAccessExpression arrayAccessExpression = (JetArrayAccessExpression) expression;
JetExpression arrayExpression = arrayAccessExpression.getArrayExpression(); JetExpression arrayExpression = arrayAccessExpression.getArrayExpression();
if (arrayExpression == null) return false; if (arrayExpression == null || rightHandSide == null) return false;
TemporaryBindingTrace ignoreReportsTrace = TemporaryBindingTrace.create(trace, "Trace for checking set function"); TemporaryBindingTrace ignoreReportsTrace = TemporaryBindingTrace.create(trace, "Trace for checking set function");
ExpressionTypingContext findSetterContext = context.replaceBindingTrace(ignoreReportsTrace); ExpressionTypingContext findSetterContext = context.replaceBindingTrace(ignoreReportsTrace);