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<Map> fetchProfile(long id) {
+ * Map fetchProfile(long id) {
* return [name: "User$id"]
* }
*
* {@code @}Async
- * Awaitable<List> 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"
'''