Skip to content

qulice up to 0.25.1#1867

Merged
yegor256 merged 15 commits intomasterfrom
1866
Mar 25, 2026
Merged

qulice up to 0.25.1#1867
yegor256 merged 15 commits intomasterfrom
1866

Conversation

@yegor256
Copy link
Copy Markdown
Owner

@yegor256 yegor256 commented Mar 25, 2026

Closes #1866

Upgraded qulice-maven-plugin to 0.25.1 and fixed all new violations:

  • Refactored HexOf (both text and bytes) to avoid AssignmentInOperand in loops
  • Fixed PreserveStackTrace in bytes/HexOf when rethrowing IOException
  • Inlined single-use local variables flagged by UnnecessaryLocalBeforeReturn
  • Changed HashSet parameters to Set interface (LooseCoupling) in Diff, Intersection, Union, MapDiff
  • Added try-with-resources in Zip and various tests

Added @SuppressWarnings where violations are intentional by design:

  • AvoidSynchronizedStatement for Synced/Solid classes
  • AvoidCatchingGenericException for IoCheckedBytes/ScalarWithFallback
  • ExcessivePublicCount for TeeInput (many constructors)
  • OverrideBothEqualsAndHashCodeOnComparable for ComparableNumber/ComparableText

78 files changed, 1755 tests pass.

Copilot AI review requested due to automatic review settings March 25, 2026 04:56
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR primarily updates the Qulice Maven plugin to 0.25.1 (closing #1866) and adjusts the codebase to satisfy the updated static-analysis rules by refactoring tests and a handful of production classes.

Changes:

  • Bump qulice-maven-plugin from 0.25.0 to 0.25.1.
  • Replace org.llorllale.cactoos.matchers.Assertion usage across tests with org.hamcrest.MatcherAssert.assertThat.
  • Apply small refactors in main code (generics, suppressions, minor rewrites) to align with Qulice/PMD expectations.

Reviewed changes

Copilot reviewed 261 out of 351 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
src/test/java/org/cactoos/scalar/CallableOfTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/scalar/BoolOfTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/scalar/BinaryTest.java Switch assertions + inline constants in assertions
src/test/java/org/cactoos/scalar/AndWithIndexTest.java Switch assertions; remove PMD suppression
src/test/java/org/cactoos/proc/UncheckedProcTest.java Switch assertions; remove PMD suppression
src/test/java/org/cactoos/proc/RunnableOfTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/proc/RepeatedProcTest.java Switch assertions; inline intermediate variables
src/test/java/org/cactoos/proc/ProcOfTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/proc/ProcNoNullsTest.java Switch assertions; remove PMD suppression
src/test/java/org/cactoos/proc/IoCheckedProcTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/proc/IoCheckedBiProcTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/proc/ForEachWithIndexTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/proc/ForEachTest.java Switch assertions; adjust generic proc construction
src/test/java/org/cactoos/proc/ForEachInThreadsTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/proc/CheckedProcTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/proc/CheckedBiProcTest.java Switch assertions; remove PMD suppression
src/test/java/org/cactoos/proc/BiProcNoNullsTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/number/DivisionOfTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/map/SyncedTest.java Remove PMD suppression
src/test/java/org/cactoos/map/StickyTest.java Switch assertions; reduce suppression list
src/test/java/org/cactoos/map/RemoveDeletesValues.java Switch internal matcher assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/map/MapEntryTest.java Switch assertions; remove PMD suppression
src/test/java/org/cactoos/map/BehavesAsMap.java Switch internal matcher assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/list/SyncedTest.java Switch assertions; restructure thread test asserts
src/test/java/org/cactoos/list/ListOfTest.java Switch assertions; reduce suppression list
src/test/java/org/cactoos/list/ListIteratorEnvelopeTest.java Switch assertions; remove PMD suppression
src/test/java/org/cactoos/list/BehavesAsList.java Switch internal matcher assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/iterator/TailOfTest.java Switch assertions; remove PMD suppression
src/test/java/org/cactoos/iterator/SortedTest.java Switch assertions; remove PMD suppression
src/test/java/org/cactoos/iterator/SkippedTest.java Switch assertions; remove PMD suppression
src/test/java/org/cactoos/iterator/ShuffledTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/iterator/ReversedTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/iterator/RepeatedTest.java Switch assertions; inline constant
src/test/java/org/cactoos/iterator/PagedTest.java Switch assertions; simplify constructed objects
src/test/java/org/cactoos/iterator/NoNullsTest.java Switch assertions; adjust null iterator input creation
src/test/java/org/cactoos/iterator/MatchedTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/iterator/MappedWithIndexTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/iterator/MappedTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/iterator/IteratorOfTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/iterator/IteratorOfStackTraceTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/iterator/IteratorOfShortsTest.java Switch assertions; remove PMD suppression
src/test/java/org/cactoos/iterator/IteratorOfLongsTest.java Switch assertions; remove PMD suppression
src/test/java/org/cactoos/iterator/IteratorOfIntsTest.java Switch assertions; remove PMD suppression
src/test/java/org/cactoos/iterator/IteratorOfFloatsTest.java Switch assertions; remove PMD suppression
src/test/java/org/cactoos/iterator/IteratorOfDoublesTest.java Switch assertions; remove PMD suppression
src/test/java/org/cactoos/iterator/IteratorOfCharsTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/iterator/IteratorOfBooleansTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/iterator/CycledTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/iterable/TailOfTest.java Remove PMD suppression
src/test/java/org/cactoos/iterable/StickyTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/iterable/SolidTest.java Add explicit loop-count assertion
src/test/java/org/cactoos/iterable/SlicedTest.java Switch assertions; remove PMD suppression
src/test/java/org/cactoos/iterable/ShuffledTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/iterable/PartitionedTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/iterable/PagedTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/iterable/MappedWithIndexTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/iterable/MappedTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/iterable/JoinedTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/iterable/IterableOfStackTraceTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/iterable/IterableOfShortsTest.java Switch assertions; remove PMD suppression
src/test/java/org/cactoos/iterable/IterableOfLongsTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/iterable/IterableOfIntsTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/iterable/IterableOfFloatsTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/iterable/IterableOfDoublesTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/iterable/IterableOfCharsTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/iterable/IterableOfBytesTest.java Fix charset usage; switch assertions
src/test/java/org/cactoos/iterable/IterableOfBooleansTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/iterable/HeadOfTest.java Remove PMD suppression
src/test/java/org/cactoos/iterable/EndlessTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/iterable/CycledTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/io/ZipTest.java Fix charset usage; adjust target collection typing; switch assertions
src/test/java/org/cactoos/io/WriterToTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/io/WriterAsOutputTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/io/UncheckedOutputTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/io/TempFolderTest.java Switch assertions to MatcherAssert.assertThat; remove suppressions
src/test/java/org/cactoos/io/TeeReaderTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/io/TeeOutputStreamTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/io/TeeInputStreamTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/io/TeeInputFromUrlTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/io/TeeInputFromUriTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/io/TeeInputFromPathTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/io/TeeInputFromFileTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/io/TeeInputFromBytesTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/io/StickyTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/io/SlowInputTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/io/SlowInputStreamTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/io/OutputStreamToTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/io/OutputNoNullsTest.java Add explicit non-null stream assertion
src/test/java/org/cactoos/io/LoggingInputStreamTest.java Fix charset usage; switch assertions; simplify construction
src/test/java/org/cactoos/io/LSInputOfTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/io/JoinedTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/io/InputWithRetryTest.java Inline assertions; switch to MatcherAssert.assertThat
src/test/java/org/cactoos/io/InputWithFallbackTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/io/InputNoNullsTest.java Add explicit non-null stream assertion
src/test/java/org/cactoos/io/HeadOfTest.java Switch assertions; inline constant string
src/test/java/org/cactoos/io/GzipOutputTest.java Fix charset usage; switch assertions
src/test/java/org/cactoos/io/GzipInputTest.java Fix charset usage; switch assertions
src/test/java/org/cactoos/io/FakeOutputStream.java Replace suppression with explanatory comment
src/test/java/org/cactoos/io/FakeLogger.java Remove PMD suppression
src/test/java/org/cactoos/io/DirectoryTest.java Fix charset usage; switch assertions; simplify File usage
src/test/java/org/cactoos/io/DeadOutputTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/io/DeadInputTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/io/CloseShieldOutputTest.java Switch assertions; remove suppression
src/test/java/org/cactoos/io/CloseShieldOutputStreamTest.java Switch assertions; remove suppression
src/test/java/org/cactoos/io/CloseShieldInputTest.java Switch assertions; inline constant string
src/test/java/org/cactoos/io/CloseShieldInputStreamTest.java Switch assertions; inline constants
src/test/java/org/cactoos/io/CheckedOutputTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/io/CheckedInputTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/io/AppendToTest.java Fix charset usage; switch assertions
src/test/java/org/cactoos/func/UncheckedFuncTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/func/UncheckedBiFuncTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/func/TimedFuncTest.java Switch assertions; inline constants; remove suppressions
src/test/java/org/cactoos/func/SyncFuncTest.java Switch assertions; inline constant thread count
src/test/java/org/cactoos/func/StickyFuncTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/func/StickyBiFuncTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/func/SolidFuncTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/func/SolidBiFuncTest.java Switch assertions; inline constant thread count
src/test/java/org/cactoos/func/RetryTest.java Switch assertions; remove suppressions
src/test/java/org/cactoos/func/RepeatedTest.java Switch assertions; inline constructed Repeated
src/test/java/org/cactoos/func/IoCheckedFuncTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/func/IoCheckedBiFuncTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/func/FuncOfTest.java Switch assertions; simplify lambdas
src/test/java/org/cactoos/func/FuncNoNullsTest.java Add explicit non-null assertion for success path
src/test/java/org/cactoos/func/FuncEnvelopeTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/func/FlattenedTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/func/FallbackFromTest.java Switch assertions; reduce suppression list
src/test/java/org/cactoos/func/CheckedFuncTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/func/CheckedBiFuncTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/func/ChainedTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/exception/RootCauseTest.java Switch assertions; simplify construction
src/test/java/org/cactoos/collection/BehavesAsCollection.java Switch internal matcher assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/bytes/UncheckedBytesTest.java Switch assertions; inline fallback array
src/test/java/org/cactoos/bytes/Sha256DigestOfTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/bytes/Sha1DigestOfTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/bytes/ReaderAsBytesTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/bytes/Md5DigestOfTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/bytes/IoCheckedBytesTest.java Switch assertions; inline fallback array
src/test/java/org/cactoos/bytes/InputAsBytesTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/bytes/HexOfTest.java Switch assertions; simplify cast
src/test/java/org/cactoos/bytes/CheckedBytesTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/bytes/BytesBase64Test.java Switch assertions; remove suppression
src/test/java/org/cactoos/bytes/Base64BytesTest.java Switch assertions; remove suppression
src/test/java/org/cactoos/TextTest.java Switch assertions to MatcherAssert.assertThat
src/test/java/org/cactoos/ScalarTest.java Add explicit success-path assertion
src/test/java/org/cactoos/BytesTest.java Add explicit success-path assertion
src/main/java/org/cactoos/text/TextOfDateTime.java Add PMD suppression for java.util.Date use
src/main/java/org/cactoos/text/Rotated.java Reduce local variable; inline builder creation
src/main/java/org/cactoos/text/Randomized.java Simplify bound usage in random selection
src/main/java/org/cactoos/text/IoCheckedText.java Update suppression list
src/main/java/org/cactoos/text/HexOf.java Simplify byte-to-int conversion
src/main/java/org/cactoos/text/FormattedText.java Remove PMD suppression
src/main/java/org/cactoos/text/AbbreviatedRight.java Simplify numeric comparisons / casts
src/main/java/org/cactoos/text/AbbreviatedLeft.java Simplify numeric comparisons / casts
src/main/java/org/cactoos/set/Union.java Change constructor to accept Set<T>; compute using HashSet
src/main/java/org/cactoos/set/SortedSetEnvelope.java Remove PMD suppressions
src/main/java/org/cactoos/set/SetEnvelope.java Remove PMD suppressions
src/main/java/org/cactoos/set/Intersection.java Change constructor to accept Set<T>; compute using HashSet
src/main/java/org/cactoos/set/Diff.java Change constructor to accept Set<T>; compute using HashSet
src/main/java/org/cactoos/scalar/ScalarWithFallback.java Remove PMD suppression annotation
src/main/java/org/cactoos/scalar/PropertiesOf.java Remove PMD suppressions
src/main/java/org/cactoos/scalar/LengthOf.java Simplify long arithmetic
src/main/java/org/cactoos/scalar/Equality.java Simplify arithmetic casts
src/main/java/org/cactoos/scalar/Checked.java Refine suppression + inline inheritance level computation
src/main/java/org/cactoos/map/Sticky.java Remove unchecked cast in ctor
src/main/java/org/cactoos/map/MapEnvelope.java Narrow PMD suppression
src/main/java/org/cactoos/map/MapDiff.java Switch internal maps to HashMap
src/main/java/org/cactoos/list/NoNulls.java Remove suppression
src/main/java/org/cactoos/list/ListEnvelope.java Remove PMD suppressions
src/main/java/org/cactoos/list/Immutable.java Narrow/remove suppressions
src/main/java/org/cactoos/iterator/TailOf.java Simplify suppression and casting
src/main/java/org/cactoos/iterator/Paged.java Inline iterator assignment
src/main/java/org/cactoos/iterator/IteratorOfShorts.java Remove suppression
src/main/java/org/cactoos/iterator/Filtered.java Inline function wrapping inside loop
src/main/java/org/cactoos/iterable/IterableOfShorts.java Remove suppression
src/main/java/org/cactoos/iterable/IterableOf.java Inline cast in equals logic
src/main/java/org/cactoos/io/Zip.java Remove suppressions; inline ZipEntry creation
src/main/java/org/cactoos/io/ResourceOf.java Remove suppression
src/main/java/org/cactoos/io/LoggingOutputStream.java Remove suppressions; simplify write/time tracking
src/main/java/org/cactoos/io/LoggingOutput.java Remove suppression
src/main/java/org/cactoos/io/LoggingInputStream.java Remove suppressions; simplify time tracking
src/main/java/org/cactoos/io/LoggingInput.java Remove suppression
src/main/java/org/cactoos/io/LSInputOf.java Remove suppression
src/main/java/org/cactoos/io/HeadInputStream.java Simplify numeric casts
src/main/java/org/cactoos/func/TriFuncSplitPreserve.java Replace ListOf with ArrayList
src/main/java/org/cactoos/collection/NoNulls.java Fix toArray(T[]) to use returned array instance
src/main/java/org/cactoos/collection/Immutable.java Narrow/remove suppressions
src/main/java/org/cactoos/bytes/Sha256DigestOf.java Remove suppression
src/main/java/org/cactoos/bytes/Sha1DigestOf.java Remove suppression
src/main/java/org/cactoos/bytes/Md5DigestOf.java Remove suppression
src/main/java/org/cactoos/bytes/IoCheckedBytes.java Update suppression list
src/main/java/org/cactoos/bytes/InputAsBytes.java Change read loop implementation
src/main/java/org/cactoos/bytes/HexOf.java Inline intermediate variables
src/main/java/org/cactoos/bytes/DigestEnvelope.java Remove suppression
src/main/java/org/cactoos/bytes/BytesOf.java Remove PMD suppressions
pom.xml Bump qulice plugin to 0.25.1
.rultor.yml Set release.pre: false

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +70 to 72
public Union(final Set<T> first, final Set<T> second) {
super(computeUnion(first, second));
}
Copy link

Copilot AI Mar 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The public constructor signature changed from Union(SetOf<T>, SetOf<T>) to Union(Set<T>, Set<T>), which is a source/binary breaking API change for downstream users. Consider keeping the old SetOf-accepting constructor as an overload (optionally deprecated) and delegating to the new Set-based implementation, or widening generics (e.g., Set<? extends T>) while preserving existing overloads. (The same concern applies to Intersection and Diff.)

Copilot uses AI. Check for mistakes.
Comment on lines +81 to 88
private static <E> Set<E> computeUnion(
final Set<E> first,
final Set<E> second
) {
final SetOf<E> result = new SetOf<>(first);
final Set<E> result = new HashSet<>(first);
result.addAll(second);
return result;
}
Copy link

Copilot AI Mar 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The public constructor signature changed from Union(SetOf<T>, SetOf<T>) to Union(Set<T>, Set<T>), which is a source/binary breaking API change for downstream users. Consider keeping the old SetOf-accepting constructor as an overload (optionally deprecated) and delegating to the new Set-based implementation, or widening generics (e.g., Set<? extends T>) while preserving existing overloads. (The same concern applies to Intersection and Diff.)

Copilot uses AI. Check for mistakes.
Comment on lines 61 to 65
while (true) {
if (stream.read(buf) < 0) {
if (stream.read(new byte[this.size]) < 0) {
break;
}
}
Copy link

Copilot AI Mar 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This change allocates a new byte array on every read iteration, which can significantly increase GC pressure for large inputs. Reuse a single buffer allocated once before the loop (as in the prior implementation) and read into it repeatedly.

Copilot uses AI. Check for mistakes.
Comment on lines 120 to 123
final StringBuilder builder = new StringBuilder(length);
final int bound = chrs.size();
for (int index = 0; index < length; index += 1) {
builder.append(chrs.get(rnd.nextInt(bound)));
builder.append(chrs.get(rnd.nextInt(chrs.size())));
}
Copy link

Copilot AI Mar 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

chrs.size() is invariant within the loop but is recomputed every iteration. Store it in a final int bound = chrs.size(); before the loop and use rnd.nextInt(bound) for a small but easy win (and to match the previous behavior).

Copilot uses AI. Check for mistakes.
Comment on lines 82 to 90
if (this.buffer.isEmpty()) {
while (this.iterator.hasNext()) {
final X object = this.iterator.next();
if (new Unchecked<>(fnc.apply(object)).value()) {
if (new Unchecked<>(
new UncheckedFunc<>(this.func).apply(object)
).value()) {
this.buffer.add(object);
break;
}
Copy link

Copilot AI Mar 25, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A new UncheckedFunc wrapper is instantiated for every candidate element. Create the UncheckedFunc once outside the loop (as the previous code did) and reuse it inside the loop to avoid repeated allocations in hasNext().

Copilot uses AI. Check for mistakes.
@yegor256 yegor256 merged commit c6f5826 into master Mar 25, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

upgrade to qulice 0.25.1

2 participants