From 317eff6cc3f5dc46896465d47a0d5135ed8dd0d2 Mon Sep 17 00:00:00 2001 From: Diego Alonso Marquez Palacios Date: Tue, 2 Aug 2022 18:42:39 -0400 Subject: [PATCH] fix(ast): removed lambda void return type check (#1019) Fix for Issue #843. This pull request modifies allows the creation of lambda expressions that have void as return type. The main change was made in engine/ast/LambdaExpr.java --- .../api/generator/engine/ast/LambdaExpr.java | 3 --- .../generator/engine/ast/LambdaExprTest.java | 21 +++++++++---------- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/google/api/generator/engine/ast/LambdaExpr.java b/src/main/java/com/google/api/generator/engine/ast/LambdaExpr.java index dde9989825..2b8c1b6f44 100644 --- a/src/main/java/com/google/api/generator/engine/ast/LambdaExpr.java +++ b/src/main/java/com/google/api/generator/engine/ast/LambdaExpr.java @@ -67,9 +67,6 @@ public Builder setReturnExpr(Expr expr) { public LambdaExpr build() { LambdaExpr lambdaExpr = autoBuild(); - Preconditions.checkState( - !lambdaExpr.returnExpr().expr().type().equals(TypeNode.VOID), - "Lambdas cannot return void-typed expressions."); // Must be a declaration. lambdaExpr.arguments().stream() .forEach( diff --git a/src/test/java/com/google/api/generator/engine/ast/LambdaExprTest.java b/src/test/java/com/google/api/generator/engine/ast/LambdaExprTest.java index 8011d1a89e..46bca0357f 100644 --- a/src/test/java/com/google/api/generator/engine/ast/LambdaExprTest.java +++ b/src/test/java/com/google/api/generator/engine/ast/LambdaExprTest.java @@ -85,17 +85,16 @@ public void validLambdaExpr_withBody() { } @Test - public void invalidLambdaExpr_returnsVoid() { - assertThrows( - IllegalStateException.class, - () -> - LambdaExpr.builder() - .setReturnExpr( - MethodInvocationExpr.builder() - .setMethodName("foo") - .setReturnType(TypeNode.VOID) - .build()) - .build()); + public void validLambdaExpr_returnsVoid() { + LambdaExpr voidLambda = + LambdaExpr.builder() + .setReturnExpr( + MethodInvocationExpr.builder() + .setMethodName("foo") + .setReturnType(TypeNode.VOID) + .build()) + .build(); + assertEquals(TypeNode.VOID, voidLambda.returnExpr().type()); } @Test