[ 
https://issues.apache.org/jira/browse/GROOVY-12215?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18100383#comment-18100383
 ] 

ASF GitHub Bot commented on GROOVY-12215:
-----------------------------------------

testlens-app[bot] commented on PR #2750:
URL: https://github.com/apache/groovy/pull/2750#issuecomment-5129835975

   ## 🚨 TestLens detected 1 failed test 🚨
   
   Here is what you can do:
   
   1) Inspect the test failures carefully.
   2) If you are convinced that some of the tests are flaky, you can mute them 
below.
   3) Finally, trigger a rerun by checking the rerun checkbox.
   
   ### Test Summary
   
   #### [Build and test / lts \(17, 
macos-latest\)](https://github.com/apache/groovy/actions/runs/30534707761/job/90845101111?pr=2750)
 > :test
   
   | Test | Runs | Flakiness |
   |---|---|--:|
   | ClosureDelegationTest > testDelegateMethodVsClosureExtension\(\) | ❌ | 
0% 🟢 |
   
   🏷️ Commit: ac6f4ebc26b295787494269e07af645c2014725c
   ▶️ Tests:  23699 executed
   🟡 Checks: 2/29 completed
   
   ### Test Failures
   
   <details>
   
   <summary><strong>ClosureDelegationTest > 
testDelegateMethodVsClosureExtension()</strong> (:test in <a 
href="https://github.com/apache/groovy/actions/runs/30534707761/job/90845101111?pr=2750";>Build
 and test / lts (17, macos-latest)</a>)</summary>
   
   ```
   org.codehaus.groovy.runtime.metaclass.MethodSelectionException: Could not 
find which method split() to invoke from this list:
     public java.util.Collection java.lang.Object#split(groovy.lang.Closure)
     public java.util.Collection 
java.lang.Object#split(java.util.function.Predicate)
        at 
groovy.lang.MetaClassImpl.chooseMethodInternal(MetaClassImpl.java:3560)
        at groovy.lang.MetaClassImpl.chooseMethod(MetaClassImpl.java:3529)
        at 
groovy.lang.MetaClassImpl.getMethodWithoutCaching(MetaClassImpl.java:1651)
        at groovy.lang.MetaClassImpl.pickMethod(MetaClassImpl.java:4145)
        at 
org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:277)
        at TestScript202$_run_closure1.doCall(TestScript202.groovy:2)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
        at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:569)
        at groovy.lang.Closure.call(Closure.java:565)
        at groovy.lang.Closure.call(Closure.java:531)
        at 
org.codehaus.groovy.runtime.DefaultGroovyMethods.callWithDelegateAndParameter(DefaultGroovyMethods.java:284)
        at 
org.codehaus.groovy.runtime.DefaultGroovyMethods.with(DefaultGroovyMethods.java:19553)
        at TestScript202.run(TestScript202.groovy:2)
        at groovy.lang.GroovyShell.evaluate(GroovyShell.java:553)
        at groovy.lang.GroovyShell.evaluate(GroovyShell.java:588)
        at groovy.lang.GroovyShell.evaluate(GroovyShell.java:572)
        at groovy.test.GroovyAssert.assertScript(GroovyAssert.java:106)
        at groovy.test.GroovyAssert.assertScript(GroovyAssert.java:96)
        at 
gls.invocation.ClosureDelegationTest.testDelegateMethodVsClosureExtension(ClosureDelegationTest.groovy:151)
   ```
   
   </details>
   
   ### Muted Tests
   > [!NOTE]
   > Checks are currently running using the configuration below.
   
   Select tests to mute in this pull request:
   
   🔲 ClosureDelegationTest > testDelegateMethodVsClosureExtension\(\) <!

> Fat-free variants for collectMany, countBy, split, take/dropWhile, groupBy
> --------------------------------------------------------------------------
>
>                 Key: GROOVY-12215
>                 URL: https://issues.apache.org/jira/browse/GROOVY-12215
>             Project: Groovy
>          Issue Type: Sub-task
>            Reporter: Paul King
>            Assignee: Paul King
>            Priority: Major
>
> h3. Summary
> Sub-task of GROOVY-12205. Adds the straightforward "fat-free" 
> functional-interface twins — a single {{java.util.function}} overload beside 
> each existing {{Closure}} overload — for the mapping/filtering DGM methods 
> that currently have none. These are mechanical, following the conventions 
> established in GROOVY-12054; no design decisions are involved.
> h3. Methods
> ||Method||Closure overloads without a twin||Functional type||Receivers||
> |{{collectMany}}|8|{{Function<? super E, ? extends Collection<? extends 
> T>>}}|Iterable (x2), Map (x2), Iterator (x2), {{E[]}} (x2)|
> |{{collectingMany}}|1|{{Function}} (lazy)|Iterator|
> |{{countBy}}|4|{{Function<? super E, ? extends K>}}|Iterable, Iterator, Map, 
> {{E[]}}|
> |{{split}}|5|{{Predicate<? super T>}}|Object, Collection, List, Set, {{T[]}}|
> |{{groupBy}} (single-key)|2|{{Function<? super T, ? extends K>}}|Map, 
> {{Object[]}} (the Iterable twin already exists)|
> |{{takeWhile}}|6|{{Predicate<? super T>}}|List, Iterable, SortedSet, Map, 
> Iterator, {{T[]}}|
> |{{dropWhile}}|6|{{Predicate<? super T>}}|SortedSet, List, Iterable, Map, 
> Iterator, {{T[]}}|
> Total: 32 new overloads.
> h3. Conventions (per GROOVY-12054)
> * PECS wildcards on the functional parameter; {{@since 6.0.0}}.
> * Inline javadoc example using {{<pre class="language-groovy 
> groovyTestCase">}}, cross-linking the {{Closure}} counterpart via {{@link}}.
> * Plain single-SAM overloads only — *not* {{@Incubating}}; that annotation is 
> reserved for the curried {{(BiXxx, param)}} forms, which are a separate item.
> h3. Exclusions
> * {{groupBy}} multi-key forms ({{Object...}} / {{List<Closure>}}) — no clean 
> functional analogue.
> * {{takeWhile}}/{{dropWhile}} on {{CharSequence}}/{{GString}} (the SGM 
> char-by-char forms) — a String-domain 
> {{Predicate<Character>}}/{{IntPredicate}} decision, out of scope for this 
> collection-focused sub-task (keeps the count at 6 each).
> h3. Compatibility
> Existing closure/lambda call sites are unaffected: a {{Closure}} literal 
> binds to the {{Closure}} overload, while method references and typed 
> functional values select the twin under {{@CompileStatic}} (per 
> GROOVY-12214). Only check: an existing {{@CompileStatic}} call passing a 
> literal {{null}} to one of these currently-single-overload methods would 
> become ambiguous — a rare, grep-checkable case, resolved with a cast if found.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to