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 com.github.javaparser.ast.type.UnknownType;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;


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


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


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


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


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


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


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


import com.github.javaparser.TokenRange;
import com.github.javaparser.ast.AllFieldsConstructor; 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.NodeList;
import com.github.javaparser.ast.body.Parameter; import com.github.javaparser.ast.body.Parameter;
import com.github.javaparser.ast.nodeTypes.NodeWithParameters; import com.github.javaparser.ast.nodeTypes.NodeWithParameters;
import com.github.javaparser.ast.observer.ObservableProperty; 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.ExpressionStmt;
import com.github.javaparser.ast.stmt.ReturnStmt; import com.github.javaparser.ast.stmt.ReturnStmt;
import com.github.javaparser.ast.stmt.Statement; 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.GenericVisitor;
import com.github.javaparser.ast.visitor.VoidVisitor; 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.DerivedProperty;
import com.github.javaparser.metamodel.LambdaExprMetaModel;
import com.github.javaparser.metamodel.JavaParserMetaModel; 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 java.util.function.Consumer;


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


/** /**
* <h1>A lambda expression</h1> * <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 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. * If they are in ( ), "isEnclosingParameters" is true.
* <br/>The body is to the right of the ->. * <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 * @author Raquel Pau
*/ */
Expand All @@ -77,30 +75,30 @@ public LambdaExpr() {
/** /**
* Creates a single parameter lambda expression. * Creates a single parameter lambda expression.
*/ */
public LambdaExpr(Parameter parameter, Statement body) { public LambdaExpr(Parameter parameter, BlockStmt body) {
this(new NodeList<>(parameter), body, false); this(null, new NodeList<>(parameter), body, false);
} }


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




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


@AllFieldsConstructor @AllFieldsConstructor
Expand Down

0 comments on commit 18ead1a

Please sign in to comment.