diff --git a/experiments.im b/experiments.im index 421a0b6..75e17dc 100644 --- a/experiments.im +++ b/experiments.im @@ -554,7 +554,7 @@ fn futionale(robbie Name, williams Lastname) Name { winners = a ?? "oscilli" - [a * z for a <- b, z <- c] + [for a <- b, z <- c {a * z}] a*.{ e -> e.empty } diff --git a/src/io/immutables/collect/Vect.java b/src/io/immutables/collect/Vect.java index d6f65cd..034ad6c 100644 --- a/src/io/immutables/collect/Vect.java +++ b/src/io/immutables/collect/Vect.java @@ -447,18 +447,19 @@ public When head(BiFunction, R> onHead) { } @CheckReturnValue - public When otherwise(Function, R> onElse) { + public R otherwise(Function, R> onElse) { if (result == null) { result = requireNonNull(onElse.apply(Vect.this)); } - return this; + return result; } - public When otherwise(R r) { + @CheckReturnValue + public R otherwise(R r) { if (result == null) { result = requireNonNull(r); } - return this; + return result; } @Override diff --git a/src/io/immutables/grammar/processor/Production.java b/src/io/immutables/grammar/processor/Production.java index 1651e9b..76c8a09 100644 --- a/src/io/immutables/grammar/processor/Production.java +++ b/src/io/immutables/grammar/processor/Production.java @@ -337,8 +337,7 @@ Vect asIfChoiceReferences(Vect alternatives) { a -> a.parts() .when() .single(this::subtypingReference) - .otherwise(false) - .get(); + .otherwise(false); if (alternatives.all(hasSingleReference)) { return alternatives.map(