From 2792dd8fd9ec46ef4e444a3d22217d535e47ec47 Mon Sep 17 00:00:00 2001 From: Bas Leijdekkers Date: Wed, 25 Mar 2015 14:22:40 +0100 Subject: [PATCH] IG: Fix compilation --- .../siyeh/ig/psiutils/ExpressionUtils.java | 44 +++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java index 11080eb30fc5..9b3f8132f878 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java @@ -593,4 +593,48 @@ public class ExpressionUtils { final IElementType tokenType = prefixExpression.getOperationTokenType(); return JavaTokenType.MINUS.equals(tokenType); } + + @Nullable + public static PsiVariable getVariableFromNullComparison(PsiExpression expression, boolean equals) { + expression = ParenthesesUtils.stripParentheses(expression); + if (!(expression instanceof PsiPolyadicExpression)) { + return null; + } + final PsiPolyadicExpression polyadicExpression = (PsiPolyadicExpression)expression; + final IElementType tokenType = polyadicExpression.getOperationTokenType(); + if (equals) { + if (!JavaTokenType.EQEQ.equals(tokenType)) { + return null; + } + } + else { + if (!JavaTokenType.NE.equals(tokenType)) { + return null; + } + } + final PsiExpression[] operands = polyadicExpression.getOperands(); + if (operands.length != 2) { + return null; + } + if (PsiType.NULL.equals(operands[0].getType())) { + return getVariable(operands[1]); + } + else if (PsiType.NULL.equals(operands[1].getType())) { + return getVariable(operands[0]); + } + return null; + } + + public static PsiVariable getVariable(PsiExpression expression) { + expression = ParenthesesUtils.stripParentheses(expression); + if (!(expression instanceof PsiReferenceExpression)) { + return null; + } + final PsiReferenceExpression referenceExpression = (PsiReferenceExpression)expression; + final PsiElement target = referenceExpression.resolve(); + if (!(target instanceof PsiVariable)) { + return null; + } + return (PsiVariable)target; + } } \ No newline at end of file