diff --git a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/value/DfaExpressionFactory.java b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/value/DfaExpressionFactory.java index 9b32f8a4c000..bbc5de57df94 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/value/DfaExpressionFactory.java +++ b/java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/value/DfaExpressionFactory.java @@ -116,7 +116,7 @@ public class DfaExpressionFactory { return null; } - if (!var.hasModifierProperty(PsiModifier.VOLATILE) && !var.hasModifierProperty(PsiModifier.TRANSIENT)) { + if (!var.hasModifierProperty(PsiModifier.VOLATILE)) { if (var instanceof PsiVariable && var.hasModifierProperty(PsiModifier.FINAL)) { DfaValue constValue = myFactory.getConstFactory().create((PsiVariable)var); if (constValue != null) return constValue; diff --git a/java/java-tests/testData/inspection/dataFlow/fixture/RememberLocalTransientFieldState.java b/java/java-tests/testData/inspection/dataFlow/fixture/RememberLocalTransientFieldState.java new file mode 100644 index 000000000000..9a08ed20803f --- /dev/null +++ b/java/java-tests/testData/inspection/dataFlow/fixture/RememberLocalTransientFieldState.java @@ -0,0 +1,14 @@ +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +final class Alive { + @Nullable private transient Object elvis; + @NotNull + public Object smth() { + if (elvis != null) { + return elvis; + } else { + return null; + } + } +} \ No newline at end of file diff --git a/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java b/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java index cc86a456004f..971004403a20 100644 --- a/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java +++ b/java/java-tests/testSrc/com/intellij/codeInspection/DataFlowInspectionTest.java @@ -186,6 +186,7 @@ public class DataFlowInspectionTest extends LightCodeInsightFixtureTestCase { public void testLastConstantConditionInAnd() { doTest(); } public void testTransientFinalField() { doTest(); } + public void testRememberLocalTransientFieldState() { doTest(); } public void testFinalFieldDuringInitialization() { doTest(); } public void testFinalFieldDuringSuperInitialization() { doTest(); } public void _testSymmetricUncheckedCast() { doTest(); } // http://youtrack.jetbrains.com/issue/IDEABKL-6871