       1 /*
       2  * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
       3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       4  *
       5  * This code is free software; you can redistribute it and/or modify it
       6  * under the terms of the GNU General Public License version 2 only, as
       7  * published by the Free Software Foundation.  Oracle designates this
       8  * particular file as subject to the "Classpath" exception as provided
       9  * by Oracle in the LICENSE file that accompanied this code.
      10  *
      11  * This code is distributed in the hope that it will be useful, but WITHOUT
      12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
      13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
      14  * version 2 for more details (a copy is included in the LICENSE file that
      15  * accompanied this code).
      16  *
      17  * You should have received a copy of the GNU General Public License version
      18  * 2 along with this work; if not, write to the Free Software Foundation,
      19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
      20  *
      21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
      22  * or visit www.oracle.com if you need additional information or have any
      23  * questions.
      24  */
      25
      26 package jdk.nashorn.api.tree;
      27
      28 import java.util.List;
      29
      30 /**
      31  * A tree node for a <a href="http://www.ecma-international.org/ecma-262/6.0/#sec-function-definitions">function declaration</a>.
      32  *
      33  * For example:
      34  * <pre>
      35  *   <em>function</em> <em>name</em>
      36  *      ( <em>parameters</em> )
      37  *      <em>body</em>
      38  * </pre>
      39  *
      40  * <pre>
      41  *   <em>function*</em> <em>name</em>
      42  *      ( <em>parameters</em> )
      43  *      <em>body</em>
      44  * </pre>
      45  *
      46  * @deprecated Nashorn JavaScript script engine and APIs, and the jjs tool
      47  * are deprecated with the intent to remove them in a future release.
      48  *
      49  * @since 9
      50  */
      51 @Deprecated(since="11", forRemoval=true)
      52 public interface FunctionDeclarationTree extends StatementTree {
      53     /**
      54      * Returns the name of the function being declared.
      55      *
      56      * @return name the function declared
      57      */
      58     IdentifierTree getName();
      59
      60     /**
      61      * Returns the parameters of this function.
      62      *
      63      * @return the list of parameters
      64      */
      65     List<? extends ExpressionTree> getParameters();
      66
      67     /**
      68      * Returns the body of code of this function.
      69      *
      70      * @return the body of code
      71      */
      72     BlockTree getBody();
      73
      74     /**
      75      * Is this a strict function?
      76      *
      77      * @return true if this function is strict
      78      */
      79     boolean isStrict();
      80
      81     /**
      82      * Is this a generator function?
      83      *
      84      * @return true if this is a generator function
      85      */
      86     boolean isGenerator();
      87 }