This is an automated email from the ASF dual-hosted git repository.

sunlan pushed a commit to branch GROOVY-9381_3
in repository https://gitbox.apache.org/repos/asf/groovy.git


The following commit(s) were added to refs/heads/GROOVY-9381_3 by this push:
     new 64c6934564 Minor tweaks
64c6934564 is described below

commit 64c69345641a736593a49c4aedc358ff74d858f9
Author: Daniel Sun <[email protected]>
AuthorDate: Fri Mar 13 23:34:55 2026 +0900

    Minor tweaks
---
 src/main/java/groovy/concurrent/AwaitableAdapterRegistry.java  | 10 +++++++++-
 src/main/java/groovy/transform/Async.java                      |  4 ++--
 src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java  |  2 +-
 .../groovy/transform/AsyncFrameworkIntegrationTest.groovy      |  2 +-
 4 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/src/main/java/groovy/concurrent/AwaitableAdapterRegistry.java 
b/src/main/java/groovy/concurrent/AwaitableAdapterRegistry.java
index 291505974a..02fe9b7325 100644
--- a/src/main/java/groovy/concurrent/AwaitableAdapterRegistry.java
+++ b/src/main/java/groovy/concurrent/AwaitableAdapterRegistry.java
@@ -28,6 +28,7 @@ import java.util.concurrent.CancellationException;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.CompletionStage;
 import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
 import java.util.concurrent.Flow;
 import java.util.concurrent.Future;
@@ -422,8 +423,15 @@ public class AwaitableAdapterRegistry {
         private static <T> void completeFrom(CompletableFuture<T> cf, 
Future<T> future) {
             try {
                 cf.complete(future.get());
-            } catch (Exception e) {
+            } catch (InterruptedException e) {
+                Thread.currentThread().interrupt();
+                CancellationException ce = new 
CancellationException("Interrupted while adapting Future");
+                ce.initCause(e);
+                cf.completeExceptionally(ce);
+            } catch (ExecutionException e) {
                 cf.completeExceptionally(e.getCause() != null ? e.getCause() : 
e);
+            } catch (Exception e) {
+                cf.completeExceptionally(e);
             }
         }
     }
diff --git a/src/main/java/groovy/transform/Async.java 
b/src/main/java/groovy/transform/Async.java
index acdb8fab86..90e9cdca4b 100644
--- a/src/main/java/groovy/transform/Async.java
+++ b/src/main/java/groovy/transform/Async.java
@@ -60,12 +60,12 @@ import java.lang.annotation.Target;
  *     }
  *
  *     {@code @}Async
- *     Awaitable&lt;Map&gt; fetchProfile(long id) {
+ *     Map fetchProfile(long id) {
  *         return [name: "User$id"]
  *     }
  *
  *     {@code @}Async
- *     Awaitable&lt;List&gt; fetchOrders(long id) {
+ *     List fetchOrders(long id) {
  *         return ["order1", "order2"]
  *     }
  * }
diff --git a/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java 
b/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
index 55fd359bb0..2ac8a673af 100644
--- a/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
+++ b/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
@@ -497,7 +497,7 @@ public class AstBuilder extends 
GroovyParserBaseVisitor<Object> {
             throw createParsingFailedException("for await requires enhanced 
for syntax: for await (item in source)", ctx);
         }
 
-        ClassNode varType = this.visitType(enhCtrl.type());
+        ClassNode varType = enhCtrl.type() != null ? 
this.visitType(enhCtrl.type()) : ClassHelper.dynamicType();
         String varName = this.visitIdentifier(enhCtrl.identifier());
         Expression source = (Expression) this.visit(enhCtrl.expression());
         Statement loopBody = this.unpackStatement((Statement) 
this.visit(ctx.statement()));
diff --git 
a/src/test/groovy/org/codehaus/groovy/transform/AsyncFrameworkIntegrationTest.groovy
 
b/src/test/groovy/org/codehaus/groovy/transform/AsyncFrameworkIntegrationTest.groovy
index b481a5c118..10b73de428 100644
--- 
a/src/test/groovy/org/codehaus/groovy/transform/AsyncFrameworkIntegrationTest.groovy
+++ 
b/src/test/groovy/org/codehaus/groovy/transform/AsyncFrameworkIntegrationTest.groovy
@@ -167,7 +167,7 @@ class SpringWebFluxStyleController {
     @Test
     void testAwaitReactorMonoDeferred() {
         assertScript REACTOR_PREAMBLE + '''
-            def mono = Mono.fromSupplier { Thread.sleep(50); "deferred" }
+            def mono = Mono.fromSupplier { "deferred" }
             def result = await(mono)
             assert result == "deferred"
         '''

Reply via email to