From 4f42cfc0adb11287c4dbe995c2e60d1775949d28 Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Tue, 6 Dec 2016 17:58:51 +0700 Subject: [PATCH] ExpressionUtils#isSimpleExpression: return true for compile-time constants --- .../src/com/siyeh/ig/psiutils/ExpressionUtils.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 e02b0c5d42e1..456e2bfa1f87 100644 --- a/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java +++ b/plugins/InspectionGadgets/InspectionGadgetsAnalysis/src/com/siyeh/ig/psiutils/ExpressionUtils.java @@ -111,6 +111,7 @@ public class ExpressionUtils { field.hasModifierProperty(PsiModifier.FINAL); } + @Contract("null -> false") public static boolean isEvaluatedAtCompileTime(@Nullable PsiExpression expression) { if (expression instanceof PsiLiteralExpression) { return true; @@ -689,6 +690,7 @@ public class ExpressionUtils { * Returns true if the expression can be moved to earlier point in program order without possible semantic change or * notable performance handicap. Examples of simple expressions are: * - literal (number, char, string, class literal, true, false, null) + * - compile-time constant * - this * - variable/parameter read * - static field read @@ -700,7 +702,7 @@ public class ExpressionUtils { @Contract("null -> false") public static boolean isSimpleExpression(@Nullable PsiExpression expression) { expression = PsiUtil.skipParenthesizedExprDown(expression); - if (expression instanceof PsiLiteralExpression || + if (isEvaluatedAtCompileTime(expression) || expression instanceof PsiThisExpression || expression instanceof PsiClassObjectAccessExpression) { return true;