From 81ffd04fe4fb88267d8f9c99f99f98668d42508b Mon Sep 17 00:00:00 2001 From: Phil Werli Date: Thu, 19 Jan 2023 13:49:57 +0100 Subject: [PATCH] Extend `MonoIdentity` Refaster rule (#470) By flagging expressions of the form `mono.flux().singleOrEmpty()`. --- .../tech/picnic/errorprone/refasterrules/ReactorRules.java | 3 ++- .../picnic/errorprone/refasterrules/ReactorRulesTestInput.java | 1 + .../errorprone/refasterrules/ReactorRulesTestOutput.java | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/ReactorRules.java b/error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/ReactorRules.java index b4cd081f1b..6c49792fb8 100644 --- a/error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/ReactorRules.java +++ b/error-prone-contrib/src/main/java/tech/picnic/errorprone/refasterrules/ReactorRules.java @@ -369,7 +369,8 @@ Flux after(Flux flux, T object) { static final class MonoIdentity { @BeforeTemplate Mono before(Mono mono) { - return Refaster.anyOf(mono.switchIfEmpty(Mono.empty()), mono.flux().next()); + return Refaster.anyOf( + mono.switchIfEmpty(Mono.empty()), mono.flux().next(), mono.flux().singleOrEmpty()); } @BeforeTemplate diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestInput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestInput.java index 3377b40e25..25596c5cc3 100644 --- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestInput.java +++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestInput.java @@ -119,6 +119,7 @@ ImmutableSet> testMonoIdentity() { return ImmutableSet.of( Mono.just(1).switchIfEmpty(Mono.empty()), Mono.just(2).flux().next(), + Mono.just(3).flux().singleOrEmpty(), Mono.empty().then()); } diff --git a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestOutput.java b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestOutput.java index e5bee9e4e5..7c471e5314 100644 --- a/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestOutput.java +++ b/error-prone-contrib/src/test/resources/tech/picnic/errorprone/refasterrules/ReactorRulesTestOutput.java @@ -121,7 +121,7 @@ ImmutableSet> testFluxDefaultIfEmpty() { } ImmutableSet> testMonoIdentity() { - return ImmutableSet.of(Mono.just(1), Mono.just(2), Mono.empty()); + return ImmutableSet.of(Mono.just(1), Mono.just(2), Mono.just(3), Mono.empty()); } ImmutableSet> testFluxSwitchIfEmptyOfEmptyPublisher() {