       1 /*
       2  * Copyright (c) 2015, 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 /**
      29  * A tree node for an identifier expression.
      30  *
      31  * For example:
      32  * <pre>
      33  *   <em>name</em>
      34  * </pre>
      35  *
      36  * @since 9
      37  */
      38 public interface IdentifierTree extends ExpressionTree {
      39     /**
      40      * Returns the name of this identifier.
      41      *
      42      * @return the name of this identifier
      43      */
      44     String getName();
      45
      46     /**
      47      * Is this a rest parameter for a function or rest elements of an array?
      48      *
      49      * @return true if this is a rest parameter
      50      */
      51     boolean isRestParameter();
      52
      53     /**
      54      * Is this super identifier?
      55      *
      56      * @return true if this is super identifier
      57      */
      58     boolean isSuper();
      59
      60     /**
      61      * Is this 'this' identifier?
      62      *
      63      * @return true if this is 'this' identifier
      64      */
      65     boolean isThis();
      66
      67     /**
      68      * Is this "*" used in module export entry?
      69      *
      70      * @return true if this "*" used in module export entry?
      71      */
      72     boolean isStar();
      73
      74     /**
      75      * Is this "default" used in module export entry?
      76      *
      77      * @return true if this 'default' used in module export entry?
      78      */
      79     boolean isDefault();
      80
      81     /**
      82      * Is this "*default*" used in module export entry?
      83      *
      84      * @return true if this '*default*' used in module export entry?
      85      */
      86     boolean isStarDefaultStar();
      87 }