⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 env.java

📁 java编译器gjc源码 java编译环境
💻 JAVA
字号:
/**
 * @(#)Env.java	1.12 03/01/23
 *
 * Copyright 2003 Sun Microsystems, Inc. All rights reserved.
 * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms.
 */
package com.sun.tools.javac.v8.comp;
import com.sun.tools.javac.v8.util.*;

import com.sun.tools.javac.v8.tree.*;


/**
 * A class for environments, instances of which are passed as
 *  arguments to tree visitors.  Environments refer to important ancestors
 *  of the subtree that's currently visited, such as the enclosing method,
 *  the enclosing class, or the enclosing toplevel node. They also contain
 *  a generic component, represented as a type parameter, to carry further
 *  information specific to individual passes.
 */
public class Env {

    /**
     * The next enclosing environment.
     */
    public Env next;

    /**
     * The environment enclosing the current class.
     */
    public Env outer;

    /**
     * The tree with which this environment is associated.
     */
    public Tree tree;

    /**
     * The enclosing toplevel tree.
     */
    public Tree.TopLevel toplevel;

    /**
     * The next enclosing class definition.
     */
    public Tree.ClassDef enclClass;

    /**
     * The next enclosing method definition.
     */
    public Tree.MethodDef enclMethod;

    /**
     * A generic field for further information.
     */
    public Object info;

    /**
     * Create an outermost environment for a given (toplevel)tree,
     *  with a given info field.
     */
    public Env(Tree tree, Object info) {
        super();
        this.next = null;
        this.outer = null;
        this.tree = tree;
        this.toplevel = null;
        this.enclClass = null;
        this.enclMethod = null;
        this.info = info;
    }

    /**
      * Duplicate this environment, updating with given tree and info,
      *  and copying all other fields.
      */
    public Env dup(Tree tree, Object info) {
        return dupto(new Env(tree, info));
    }

    /**
      * Duplicate this environment into a given Environment,
      *  using its tree and info, and copying all other fields.
      */
    public Env dupto(Env that) {
        that.next = this;
        that.outer = this.outer;
        that.toplevel = this.toplevel;
        that.enclClass = this.enclClass;
        that.enclMethod = this.enclMethod;
        return that;
    }

    /**
      * Duplicate this environment, updating with given tree,
      *  and copying all other fields.
      */
    public Env dup(Tree tree) {
        return dup(tree, this.info);
    }

    /**
      * Return closest enclosing environment which points to a tree with given tag.
      */
    public Env enclosing(int tag) {
        Env env1 = this;
        while (env1 != null && env1.tree.tag != tag)
            env1 = env1.next;
        return env1;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -