From 5cd808158d98cfcee9d29f68bc201d7097511bff Mon Sep 17 00:00:00 2001 From: Tagir Valeev Date: Tue, 17 Dec 2019 12:11:23 +0700 Subject: [PATCH] DfaUtil#computeValue: fixed for parenthesized expressions GitOrigin-RevId: bebef77858634361021675458cf533f4f76eeb49 --- .../src/com/intellij/codeInspection/dataFlow/DfaUtil.java | 6 +++--- .../java/propertyBased/JavaCodeInsightSanityTest.java | 2 +- .../ConditionCoveredByFurtherCondition.java | 5 +++++ 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaUtil.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaUtil.java index eb088d667275..1275ce43b18c 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaUtil.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/DfaUtil.java @@ -332,11 +332,11 @@ public class DfaUtil { public static Object computeValue(PsiExpression expression) { PsiExpression expressionToAnalyze = PsiUtil.skipParenthesizedExprDown(expression); if (expressionToAnalyze == null) return null; - Object computed = ExpressionUtils.computeConstantExpression(expression); + Object computed = ExpressionUtils.computeConstantExpression(expressionToAnalyze); if (computed != null) return computed; - CommonDataflow.DataflowResult dataflowResult = CommonDataflow.getDataflowResult(expression); + CommonDataflow.DataflowResult dataflowResult = CommonDataflow.getDataflowResult(expressionToAnalyze); if (dataflowResult != null) { - return ContainerUtil.getOnlyItem(dataflowResult.getExpressionValues(expression)); + return ContainerUtil.getOnlyItem(dataflowResult.getExpressionValues(expressionToAnalyze)); } return null; } diff --git a/java/java-tests/testSrc/com/intellij/java/propertyBased/JavaCodeInsightSanityTest.java b/java/java-tests/testSrc/com/intellij/java/propertyBased/JavaCodeInsightSanityTest.java index 542960612f87..f2083167a4f1 100644 --- a/java/java-tests/testSrc/com/intellij/java/propertyBased/JavaCodeInsightSanityTest.java +++ b/java/java-tests/testSrc/com/intellij/java/propertyBased/JavaCodeInsightSanityTest.java @@ -93,7 +93,7 @@ public class JavaCodeInsightSanityTest extends LightJavaCodeInsightFixtureTestCa enableInspections(); Function> fileActions = file -> Generator.sampledFrom(new InvokeIntention(file, new JavaParenthesesPolicy()), new StripTestDataMarkup(file)); - PropertyChecker + PropertyChecker.customized().rechecking("5qDXmg/9q6a4EFrGDYcIAgXGA9YE1g3EBn4SEQQFFwMFAQkACQrQA+MECALLBQUDbAwEABEJAToHBUYFAmcHA2QFBwU7CQE3BgEpCQAjAwMpBgEaCQUUChEBARAGAAABBQMABgI/AgLbAwMAFQgEYQkCPAUBcwkAYQIAAZUEAUMEAnNeAgMSBwVoAwNzIRgKCAEIChAEBQAAAi8JBRMCAR4BAS8DACEJBBkCCQMHAwUSDgMIBOEIIApnAQEuAAU5BgE2AwQBLwQFCQACCwkCBgYDBQgDFwcFBggFCuYIBScdDi0mFQAIAA8EBAYDBeYDGAYNAAXeBEUKDCBLCQkWCAcAIQgaAgcQAAgF+QMNGhQAAgkAZQBP1QUVDwAAAQRdRwYFHgYDNgIFCAIBHgcDHQcFEwgDAgABxgQhBwEAAgILBQAGBAAJBwAEjAgA9QPXA+sEKOUDBJbMBBQUjHcCLV9gD4cFSjkbXSMHCgAvBg8WAQMD0hQGAwUAGQsABfIG0AQDANoFi0gGAQA0BwQAHA0CgQYFIgMHBAMBAAQCCQUABQMCBD0BNA4LCQUJBQIVNgECBRUFAAAFDwUBABUCBA0GCQG3CQMolQADskTaA4wTCgQDe+IDxgMNjwUGBJEGA1sAADcFLAtYaEUCIlgEBAExTgUgJgE6CwQDKgAIIwoFDgwEAs0GrEYbASBYf25lCDZoCEAOBgEiLgMpAAQdHQYTBQwGBOMELQJ2AkkzCwYYEAsEDO4I5QYzHAAD+AUnAQBePlICNQsFBBQCD9wE2gYOCoMLB1oTDAQ3DAkEBjQIMwYbDgkEAwM6BTVZIQYFASA2Bg8dCAIEA8IFBgHQAz1TBwIBBQsDAQABAAIOAgMABAQpDgMrCQIFIQYBAQUGChcIAQMMBQQCEgIABQECDAACAwMECAcBAwURBQKkLQ4MAAMEwgQ2EwcEBwkDYA0KEQkAABsRAgYFFPMDCQXEAwIHBgMFAQQEBgUCAgYBGAgABQcBCQcABxEFAAoCAwQEAegDQQMtCB0DuV0CDQMgqQJJFwFvDnMOYgwFBVEIAggQAAMsBQMRBAENDgMDBAQUBREABwUEAwEIAQkAAAQn+gQbABEJdSspAR0KDQh4Gg4JUi4uBQMQAz4rBBAACGg1AhMXFwgbGg8EAHsfGkcuHBEjHQcPAAFCJgsJCCEJEwgC6gP7A8ADBATeBEMCCB+vHA4BBecDJlAWAQMFmUtCEAIXJQsEBCkNAQgABAADBgIAOQYOIgADAQIZ4gN+BQsDBQtFCQcFtiIDDgoVCQeIMDUUBXUFQgkcSSwACwUcAAIDJQkIBC8GCAAWAwEIDwQBBAsKARUDBAgRAwIFCQoBBQMDDgUBAwEnHwsIDwEFASAKLAUCAgUaFBkLGAMFCwEDDAcAAwUQIQEADgAFAAgRAQIBBAAEADEmBOkHFgkDAgsSAxsJBQQsAQEEB27XCxcCAQDsCAA=") .checkScenarios(actionsOnJavaFiles(fileActions)); } diff --git a/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/condition_covered_by_further_condition/ConditionCoveredByFurtherCondition.java b/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/condition_covered_by_further_condition/ConditionCoveredByFurtherCondition.java index 2dadc7bdfd97..fc3db0e6ed07 100644 --- a/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/condition_covered_by_further_condition/ConditionCoveredByFurtherCondition.java +++ b/plugins/InspectionGadgets/test/com/siyeh/igtest/controlflow/condition_covered_by_further_condition/ConditionCoveredByFurtherCondition.java @@ -178,5 +178,10 @@ public class ConditionCoveredByFurtherCondition { static class Holder { static final Object x = new Object(); } + + void testChainInstanceof(String arg) { + if ((arg instanceof Integer) || arg instanceof Long) {} + if (arg instanceof Integer || arg instanceof Long) {} + } } enum X {A, B, C} \ No newline at end of file