       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 import java.util.List;
      29
      30 /**
      31  * Represents the abstract syntax tree for compilation units (source
      32  * files)
      33  *
      34  * @since 9
      35  */
      36 public interface CompilationUnitTree extends Tree {
      37     /**
      38      * Return the list of source elements in this compilation unit.
      39      *
      40      * @return the list of source elements in this compilation unit
      41      */
      42     List<? extends Tree> getSourceElements();
      43
      44     /**
      45      * Return the source name of this script compilation unit.
      46      *
      47      * @return the source name of this script compilation unit
      48      */
      49     String getSourceName();
      50
      51     /**
      52      * Returns if this is a ECMAScript "strict" compilation unit or not.
      53      *
      54      * @return true if this compilation unit is declared "strict"
      55      */
      56     boolean isStrict();
      57
      58     /**
      59      * Returns the line map for this compilation unit, if available.
      60      * Returns null if the line map is not available.
      61      *
      62      * @return the line map for this compilation unit
      63      */
      64     LineMap getLineMap();
      65
      66     /**
      67      * Return the {@link ModuleTree} associated with this compilation unit. This is null,
      68      * if there is no module information from this compilation unit.
      69      *
      70      * @return the Module info or null
      71      */
      72     ModuleTree getModule();
      73 }