📄 env.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 + -