From c698416974f37cc7ec619b088f6e0b3bfdc6fcf4 Mon Sep 17 00:00:00 2001 From: Anna Kozlova Date: Fri, 25 May 2012 18:55:49 +0400 Subject: [PATCH] EA-36296 - IAE: TypeConversionUtil.isAssignable --- .../typeMigration/TypeMigrationStatementProcessor.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/java/java-impl/src/com/intellij/refactoring/typeMigration/TypeMigrationStatementProcessor.java b/java/java-impl/src/com/intellij/refactoring/typeMigration/TypeMigrationStatementProcessor.java index b4700ee9a8d2..4b440d6a26dc 100644 --- a/java/java-impl/src/com/intellij/refactoring/typeMigration/TypeMigrationStatementProcessor.java +++ b/java/java-impl/src/com/intellij/refactoring/typeMigration/TypeMigrationStatementProcessor.java @@ -59,9 +59,13 @@ class TypeMigrationStatementProcessor extends JavaRecursiveElementVisitor { final TypeView right = new TypeView(rExpression); final IElementType sign = expression.getOperationTokenType(); + final PsiType ltype = left.getType(); + final PsiType rtype = right.getType(); + if (ltype == null || rtype == null) return; + if (sign != JavaTokenType.EQ) { final IElementType binaryOperator = TypeConversionUtil.convertEQtoOperation(sign); - if (!TypeConversionUtil.isBinaryOperatorApplicable(binaryOperator, left.getType(), right.getType(), false)) { + if (!TypeConversionUtil.isBinaryOperatorApplicable(binaryOperator, ltype, rtype, false)) { if (left.isChanged()) { findConversionOrFail(expression, lExpression, left.getTypePair()); } @@ -77,11 +81,11 @@ class TypeMigrationStatementProcessor extends JavaRecursiveElementVisitor { break; case TypeInfection.LEFT_INFECTED: - myLabeler.migrateExpressionType(rExpression, left.getType(), myStatement, TypeConversionUtil.isAssignable(left.getType(), right.getType()), true); + myLabeler.migrateExpressionType(rExpression, ltype, myStatement, TypeConversionUtil.isAssignable(ltype, rtype), true); break; case TypeInfection.RIGHT_INFECTED: - myLabeler.migrateExpressionType(lExpression, right.getType(), myStatement, TypeConversionUtil.isAssignable(left.getType(), right.getType()), false); + myLabeler.migrateExpressionType(lExpression, rtype, myStatement, TypeConversionUtil.isAssignable(ltype, rtype), false); break; case TypeInfection.BOTH_INFECTED: