JavaParser Source Viewer

Home|JavaParser/com/github/javaparser/ast/stmt/ReturnStmt.java
1/*
2 * Copyright (C) 2007-2010 JĂșlio Vilmar Gesser.
3 * Copyright (C) 2011, 2013-2020 The JavaParser Team.
4 *
5 * This file is part of JavaParser.
6 *
7 * JavaParser can be used either under the terms of
8 * a) the GNU Lesser General Public License as published by
9 *     the Free Software Foundation, either version 3 of the License, or
10 *     (at your option) any later version.
11 * b) the terms of the Apache License
12 *
13 * You should have received a copy of both licenses in LICENCE.LGPL and
14 * LICENCE.APACHE. Please refer to those files for details.
15 *
16 * JavaParser is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 * GNU Lesser General Public License for more details.
20 */
21package com.github.javaparser.ast.stmt;
22
23import com.github.javaparser.ast.AllFieldsConstructor;
24import com.github.javaparser.ast.expr.Expression;
25import com.github.javaparser.ast.expr.NameExpr;
26import com.github.javaparser.ast.observer.ObservableProperty;
27import com.github.javaparser.ast.visitor.GenericVisitor;
28import com.github.javaparser.ast.visitor.VoidVisitor;
29import java.util.Optional;
30import com.github.javaparser.ast.Node;
31import com.github.javaparser.ast.visitor.CloneVisitor;
32import com.github.javaparser.metamodel.OptionalProperty;
33import com.github.javaparser.metamodel.ReturnStmtMetaModel;
34import com.github.javaparser.metamodel.JavaParserMetaModel;
35import com.github.javaparser.TokenRange;
36import java.util.function.Consumer;
37import com.github.javaparser.ast.Generated;
38
39/**
40 * The return statement, with an optional expression to return.
41 * <br>{@code return 5 * 5;}
42 * @author Julio Vilmar Gesser
43 */
44public class ReturnStmt extends Statement {
45
46    @OptionalProperty
47    private Expression expression;
48
49    public ReturnStmt() {
50        this(nullnull);
51    }
52
53    @AllFieldsConstructor
54    public ReturnStmt(final Expression expression) {
55        this(nullexpression);
56    }
57
58    /**
59     * This constructor is used by the parser and is considered private.
60     */
61    @Generated("com.github.javaparser.generator.core.node.MainConstructorGenerator")
62    public ReturnStmt(TokenRange tokenRangeExpression expression) {
63        super(tokenRange);
64        setExpression(expression);
65        customInitialization();
66    }
67
68    /**
69     * Will create a NameExpr with the string param
70     */
71    public ReturnStmt(String expression) {
72        this(null, new NameExpr(expression));
73    }
74
75    @Override
76    @Generated("com.github.javaparser.generator.core.node.AcceptGenerator")
77    public <RAR accept(final GenericVisitor<RAvfinal A arg) {
78        return v.visit(this, arg);
79    }
80
81    @Override
82    @Generated("com.github.javaparser.generator.core.node.AcceptGenerator")
83    public <Avoid accept(final VoidVisitor<Avfinal A arg) {
84        v.visit(this, arg);
85    }
86
87    @Generated("com.github.javaparser.generator.core.node.PropertyGenerator")
88    public Optional<ExpressiongetExpression() {
89        return Optional.ofNullable(expression);
90    }
91
92    /**
93     * Sets the expression
94     *
95     * @param expression the expression, can be null
96     * @return this, the ReturnStmt
97     */
98    @Generated("com.github.javaparser.generator.core.node.PropertyGenerator")
99    public ReturnStmt setExpression(final Expression expression) {
100        if (expression == this.expression) {
101            return (ReturnStmt) this;
102        }
103        notifyPropertyChange(ObservableProperty.EXPRESSION, this.expressionexpression);
104        if (this.expression != null)
105            this.expression.setParentNode(null);
106        this.expression = expression;
107        setAsParentNodeOf(expression);
108        return this;
109    }
110
111    @Override
112    @Generated("com.github.javaparser.generator.core.node.RemoveMethodGenerator")
113    public boolean remove(Node node) {
114        if (node == null)
115            return false;
116        if (expression != null) {
117            if (node == expression) {
118                removeExpression();
119                return true;
120            }
121        }
122        return super.remove(node);
123    }
124
125    @Generated("com.github.javaparser.generator.core.node.RemoveMethodGenerator")
126    public ReturnStmt removeExpression() {
127        return setExpression((Expressionnull);
128    }
129
130    @Override
131    @Generated("com.github.javaparser.generator.core.node.CloneGenerator")
132    public ReturnStmt clone() {
133        return (ReturnStmtaccept(new CloneVisitor(), null);
134    }
135
136    @Override
137    @Generated("com.github.javaparser.generator.core.node.GetMetaModelGenerator")
138    public ReturnStmtMetaModel getMetaModel() {
139        return JavaParserMetaModel.returnStmtMetaModel;
140    }
141
142    @Override
143    @Generated("com.github.javaparser.generator.core.node.ReplaceMethodGenerator")
144    public boolean replace(Node nodeNode replacementNode) {
145        if (node == null)
146            return false;
147        if (expression != null) {
148            if (node == expression) {
149                setExpression((ExpressionreplacementNode);
150                return true;
151            }
152        }
153        return super.replace(nodereplacementNode);
154    }
155
156    @Override
157    @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator")
158    public boolean isReturnStmt() {
159        return true;
160    }
161
162    @Override
163    @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator")
164    public ReturnStmt asReturnStmt() {
165        return this;
166    }
167
168    @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator")
169    public void ifReturnStmt(Consumer<ReturnStmtaction) {
170        action.accept(this);
171    }
172
173    @Override
174    @Generated("com.github.javaparser.generator.core.node.TypeCastingGenerator")
175    public Optional<ReturnStmttoReturnStmt() {
176        return Optional.of(this);
177    }
178}
179
MembersX
ReturnStmt:replace
ReturnStmt:ReturnStmt
ReturnStmt:accept
ReturnStmt:toReturnStmt
ReturnStmt:remove
ReturnStmt:setExpression
ReturnStmt:removeExpression
ReturnStmt:isReturnStmt
ReturnStmt:getMetaModel
ReturnStmt:expression
ReturnStmt:getExpression
ReturnStmt:clone
ReturnStmt:asReturnStmt
ReturnStmt:ifReturnStmt
Members
X