Skip to content

Commit

Permalink
Give LambdaExpr some useful constructors.
Browse files Browse the repository at this point in the history
  • Loading branch information
matozoid committed Jan 4, 2019
1 parent 10398e9 commit 18ead1a
Show file tree
Hide file tree
Showing 2 changed files with 23 additions and 25 deletions.
Expand Up @@ -7,8 +7,8 @@
import com.github.javaparser.ast.type.UnknownType;
import org.junit.jupiter.api.Test;

import static com.github.javaparser.JavaParser.parseExpression;
import static com.github.javaparser.JavaParser.parseStatement;
import static com.github.javaparser.JavaParser.*;
import static com.github.javaparser.utils.TestUtils.assertEqualsNoEol;
import static org.junit.jupiter.api.Assertions.assertEquals;

class LambdaExprTest {
Expand Down Expand Up @@ -50,8 +50,8 @@ void oneParameterAndExpressionUtilityConstructor() {

@Test
void oneParameterAndStatementUtilityConstructor() {
LambdaExpr expr = new LambdaExpr(new Parameter(new UnknownType(), "a"), parseStatement("return 5;"));
assertEquals("a -> return 5;", expr.toString());
LambdaExpr expr = new LambdaExpr(new Parameter(new UnknownType(), "a"), parseBlock("{return 5;}"));
assertEqualsNoEol("a -> {\n return 5;\n}", expr.toString());
}

@Test
Expand All @@ -62,14 +62,14 @@ void multipleParametersAndExpressionUtilityConstructor() {

@Test
void multipleParametersAndStatementUtilityConstructor() {
LambdaExpr expr = new LambdaExpr(new NodeList<>(new Parameter(new UnknownType(), "a"), new Parameter(new UnknownType(), "b")), parseStatement("return 5;"));
assertEquals("(a, b) -> return 5;", expr.toString());
LambdaExpr expr = new LambdaExpr(new NodeList<>(new Parameter(new UnknownType(), "a"), new Parameter(new UnknownType(), "b")), parseBlock("{return 5;}"));
assertEqualsNoEol("(a, b) -> {\n return 5;\n}", expr.toString());
}

@Test
void zeroParametersAndStatementUtilityConstructor() {
LambdaExpr expr = new LambdaExpr(new NodeList<>(), parseStatement("return 5;"));
assertEquals("() -> return 5;", expr.toString());
LambdaExpr expr = new LambdaExpr(new NodeList<>(), parseBlock("{return 5;}"));
assertEqualsNoEol("() -> {\n return 5;\n}", expr.toString());
}

}
Expand Up @@ -20,31 +20,29 @@
*/
package com.github.javaparser.ast.expr;

import com.github.javaparser.TokenRange;
import com.github.javaparser.ast.AllFieldsConstructor;
import com.github.javaparser.ast.Generated;
import com.github.javaparser.ast.Node;
import com.github.javaparser.ast.NodeList;
import com.github.javaparser.ast.body.Parameter;
import com.github.javaparser.ast.nodeTypes.NodeWithParameters;
import com.github.javaparser.ast.observer.ObservableProperty;
import com.github.javaparser.ast.stmt.BlockStmt;
import com.github.javaparser.ast.stmt.ExpressionStmt;
import com.github.javaparser.ast.stmt.ReturnStmt;
import com.github.javaparser.ast.stmt.Statement;
import com.github.javaparser.ast.visitor.CloneVisitor;
import com.github.javaparser.ast.visitor.GenericVisitor;
import com.github.javaparser.ast.visitor.VoidVisitor;

import java.util.Optional;

import static com.github.javaparser.utils.Utils.assertNotNull;

import com.github.javaparser.ast.Node;
import com.github.javaparser.ast.visitor.CloneVisitor;
import com.github.javaparser.metamodel.DerivedProperty;
import com.github.javaparser.metamodel.LambdaExprMetaModel;
import com.github.javaparser.metamodel.JavaParserMetaModel;
import com.github.javaparser.TokenRange;
import com.github.javaparser.metamodel.LambdaExprMetaModel;

import java.util.Optional;
import java.util.function.Consumer;

import com.github.javaparser.ast.Generated;
import static com.github.javaparser.utils.Utils.assertNotNull;

/**
* <h1>A lambda expression</h1>
Expand All @@ -58,7 +56,7 @@
* If a parameter uses type inference (it has no type specified) then its type is set to <code>UnknownType</code>.
* If they are in ( ), "isEnclosingParameters" is true.
* <br/>The body is to the right of the ->.
* The body is either a BlockStatement when it is in { } braces, or an ExpressionStatement when it is not in braces.
* The body is either a BlockStmt when it is in { } braces, or an ExpressionStmt when it is not in braces.
*
* @author Raquel Pau
*/
Expand All @@ -77,30 +75,30 @@ public LambdaExpr() {
/**
* Creates a single parameter lambda expression.
*/
public LambdaExpr(Parameter parameter, Statement body) {
this(new NodeList<>(parameter), body, false);
public LambdaExpr(Parameter parameter, BlockStmt body) {
this(null, new NodeList<>(parameter), body, false);
}

/**
* Creates a zero or multi-parameter lambda expression with its parameters wrapped in ( ).
*/
public LambdaExpr(NodeList<Parameter> parameters, Statement body) {
this(parameters, body, true);
public LambdaExpr(NodeList<Parameter> parameters, BlockStmt body) {
this(null, parameters, body, true);
}


/**
* Creates a single parameter lambda expression.
*/
public LambdaExpr(Parameter parameter, Expression body) {
this(new NodeList<>(parameter), new ExpressionStmt(body), false);
this(null, new NodeList<>(parameter), new ExpressionStmt(body), false);
}

/**
* Creates a zero or multi-parameter lambda expression with its parameters wrapped in ( ).
*/
public LambdaExpr(NodeList<Parameter> parameters, Expression body) {
this(parameters, new ExpressionStmt(body), true);
this(null, parameters, new ExpressionStmt(body), true);
}

@AllFieldsConstructor
Expand Down

0 comments on commit 18ead1a

Please sign in to comment.