From 349d58606e16a1ff7ddd8527030f4d3d617e0076 Mon Sep 17 00:00:00 2001 From: Artemiy Sartakov Date: Thu, 30 Apr 2020 17:24:48 +0700 Subject: [PATCH] OptionalToIfInspection: propagate rename to nested flatMap GitOrigin-RevId: ae65a4a91dbefc73bd160a2b92a36e296fed3c3e --- .../codeInspection/optionalToIf/IntermediateOperation.java | 4 ++-- .../quickFix/optionalToIf/afterFlatMap.java | 6 ++++++ .../quickFix/optionalToIf/beforeFlatMap.java | 4 ++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/java/java-impl/src/com/intellij/codeInspection/optionalToIf/IntermediateOperation.java b/java/java-impl/src/com/intellij/codeInspection/optionalToIf/IntermediateOperation.java index dd8b06ce9987..33b1be0b4bdb 100644 --- a/java/java-impl/src/com/intellij/codeInspection/optionalToIf/IntermediateOperation.java +++ b/java/java-impl/src/com/intellij/codeInspection/optionalToIf/IntermediateOperation.java @@ -191,7 +191,7 @@ abstract class IntermediateOperation implements Operation { static class FlatMap extends IntermediateOperation { - private final List myRecords; + private List myRecords; private final String myVarName; private final FunctionHelper myFn; @@ -230,7 +230,7 @@ abstract class IntermediateOperation implements Operation { @Override public void rename(@NotNull String oldName, @NotNull ChainVariable newVar, @NotNull OptionalToIfContext context) { - myRecords.forEach(r -> r.myOperation.rename(oldName, newVar, context)); + myRecords = ContainerUtil.map(myRecords, r -> replaceFnVariable(oldName, r, newVar, context)); } @Override diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/optionalToIf/afterFlatMap.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/optionalToIf/afterFlatMap.java index a765cd18cc92..83e98789c838 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/optionalToIf/afterFlatMap.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/optionalToIf/afterFlatMap.java @@ -58,6 +58,12 @@ class Test { } } + void nestedFlatMapWithOuterFlatMapParam(String param0) { + if (param0 == null) throw new NullPointerException(); + String var1 = "foo"; + String result = param0; + } + void nestedOr(String param0) { boolean result; result = true; diff --git a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/optionalToIf/beforeFlatMap.java b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/optionalToIf/beforeFlatMap.java index 893606ccd6ae..382a7b966d88 100644 --- a/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/optionalToIf/beforeFlatMap.java +++ b/java/java-tests/testData/codeInsight/daemonCodeAnalyzer/quickFix/optionalToIf/beforeFlatMap.java @@ -40,6 +40,10 @@ class Test { .isPresent(); } + void nestedFlatMapWithOuterFlatMapParam(String param0) { + String result = Optional.of(param0).flatMap(var0 -> Optional.of("foo").flatMap(var1 -> Optional.of(var0))).get(); + } + void nestedOr(String param0) { boolean result; result = Optional.of(param0)