亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? enter.java

?? javac是sun公司開發(fā)人員使用java語言編寫的優(yōu)秀的工業(yè)級java編譯器
?? JAVA
?? 第 1 頁 / 共 3 頁
字號:
/** * @(#)Enter.java	1.83 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 java.io.File;import com.sun.tools.javac.v8.util.*;import com.sun.tools.javac.v8.code.*;import com.sun.tools.javac.v8.tree.*;import com.sun.tools.javac.v8.code.Type.*;import com.sun.tools.javac.v8.code.Symbol.*;import com.sun.tools.javac.v8.tree.Tree.*;/** * This class enters symbols for all encountered definitions into *  the symbol table. The pass consists of two phases, organized as *  follows: * *  In the first phase, all class symbols are intered into their enclosing scope, *  descending recursively down the tree for classes which are members of other *  classes. The class symbols are given a CompleteEnter object as completer. * *  In the second phase classes are completed using CompleteEnter.complete(). *  Completion might occur on demand, but any classes that are not completed that *  way will be eventually completed by processing the `uncompleted' queue. *  Completion entails (1) determination of a classe's parameters, supertype and *  interfaces, as well as (2) entering all symbols defined in the class into its *  scope,  with the exception of class symbols which have been entered in phase 1. *  (2) depends on (1) having been completed for a class and all its superclasses *  and enclosing classes. That's why, after doing (1), we put classes in a *  `halfcompleted' queue. Only when we have performed (1) for a class and all it's *  superclasses and enclosing classes, we proceed to (2). * *  Whereas the first phase is organized as a sweep through all compiled *  syntax trees,  the second phase is demand. Members of a class are entered *  when the contents of a class are first accessed. This is accomplished *  by installing completer objects in class symbols for compiled classes *  which invoke the member-enter phase for the corresponding class tree. * *  Classes migrate from one phase to the next via queues: * *  class enter -> (uncompleted)   --> member enter (1) *		-> (halfcompleted) --> member enter (2) *		-> (todo)	   --> attribute // only for toplevel classes */public class Enter extends Tree.Visitor implements Flags, Kinds, TypeTags {    private static final Context.Key enterKey = new Context.Key();    private Log log;    private Symtab syms;    private Resolve rs;    private Check chk;    private TreeMaker make;    private Attr attr;    private ClassReader reader;    private Name.Table names;    protected MemberEnter phase2;    /**     * A queue of all as yet unattributed toplevel classes     */    Todo todo;    public static Enter instance(Context context) {        Enter instance = (Enter) context.get(enterKey);        if (instance == null)            instance = new Enter(context);        return instance;    }    protected Enter(Context context) {        super();        context.put(enterKey, this);        names = Name.Table.instance(context);        log = Log.instance(context);        reader = ClassReader.instance(context);        make = TreeMaker.instance(context);        todo = Todo.instance(context);        syms = Symtab.instance(context);        rs = Resolve.instance(context);        chk = Check.instance(context);        attr = Attr.instance(context);        phase2 = new MemberEnter();        predefClassDef = new ClassDef(PUBLIC, syms.predefClass.name, null, null, null,                null, syms.predefClass);    }    /**      * A switch to determine whether we check for package/class conflicts      */    static final boolean checkClash = true;    /**     * A hashtable mapping classes to the environments current at the point     *	of the class declaration's local definitions.     */    Hashtable classEnvs = Hashtable.make();    /**     * Accessor for classEnvs     */    public Env getEnv(ClassSymbol c) {        return (Env) classEnvs.get(c);    }    /**      * The queue of all classes that might still need to be completed;      *	saved and initialized by main().      */    ListBuffer uncompleted;    /**     * A queue for classes whose members still need to be entered into the     *	symbol table.     */    ListBuffer halfcompleted = new ListBuffer();    /**     * A dummy class to serve as enclClass for toplevel environments.     */    private ClassDef predefClassDef;    /**     * A flag to enable/disable class completion. This is     *	necessary to prevent false cyclic dependencies involving imports.     *	Example (due to Todd Turnbridge): Consider the following three files:     *     *	A.java: public class A extends B {}     *	B.java: public class B extends C {}     *	C.java: import A; public class C {}     *     *	Now compile B.java. The (import A;) is not allowed to go beyond enter     *	phase, or a false cycle will occur.     */    private boolean completionEnabled = true;    /**     * Generate call to superclass constructor. This is:     *     *	  super(id_0, ..., id_n)     *     * or, if based == true     *     *	  id_0.super(id_1,...,id_n)     *     *	where id_0, ..., id_n are the names of the given parameters.     *     *	@param make    The tree factory     *	@param params  The parameters that need to be passed to super     *	@param based   Is first parameter a this$n?     */    Tree SuperCall(TreeMaker make, List params, boolean based) {        Tree meth;        if (based) {            meth = make.Select(make.Ident((Tree.VarDef) params.head), names._super);            params = params.tail;        } else {            meth = make.Ident(names._super);        }        return make.Exec(make.Apply(meth, make.Idents(params)));    }    /**      * Generate default constructor for given class. For classes different      *	from java.lang.Object, this is:      *      *	  c(argtype_0 x_0, ..., argtype_n x_n) throws thrown {      *	    super(x_0, ..., x_n)      *	  }      *      *	or, if based == true:      *      *	  c(argtype_0 x_0, ..., argtype_n x_n) throws thrown {      *	    x_0.super(x_1, ..., x_n)      *	  }      *      *	@param make	The tree factory.      *	@param c	The class owning the default constructor.      *	@param argtypes The parameter types of the constructor.      *	@param thrown	The thrown exceptions of the constructor.      *	@param based	Is first parameter a this$n?      */    Tree DefaultConstructor(TreeMaker make, ClassSymbol c, List argtypes,            List thrown, boolean based) {        List params = make.Params(argtypes, syms.noSymbol);        List stats = Tree.emptyList;        if (c.type != syms.objectType)            stats = stats.prepend(SuperCall(make, params, based));        long flags = c.flags() & Check.AccessFlags;        if (c.name.len == 0)            flags |= ANONCONSTR;        Tree result = make.MethodDef(flags, names.init, null, TypeParameter.emptyList,                params, make.Types(thrown), make.Block(0, stats));        return result;    }    /**      * Report duplicate declaration error.      */    private void duplicateError(int pos, Symbol sym) {        if (!sym.type.isErroneous()) {            log.error(pos, "already.defined", sym.toJava(), sym.javaLocation());        }    }    /**      * Check that symbol is unique in given scope.      *	@param pos	     Position for error reporting.      *	@param sym	     The symbol.      *	@param s	     The scope.      */    private boolean checkUnique(int pos, Symbol sym, Scope s) {        if (sym.owner.name == names.any)            return false;        for (Scope.Entry e = s.lookup(sym.name); e.scope == s; e = e.next()) {            if (sym != e.sym && sym.kind == e.sym.kind && sym.name != names.error &&                    (sym.kind != MTH || sym.type.hasSameArgs(e.sym.type))) {                duplicateError(pos, e.sym);                return false;            }        }        return true;    }    /**      * Check that single-type import is not already imported or top-level defined,      *	but make an exception for two single-type imports which denote the same type.      *	@param pos	     Position for error reporting.      *	@param sym	     The symbol.      *	@param env	     The current environment.      */    private boolean checkUniqueImport(int pos, Symbol sym, Env env) {        Scope s = env.toplevel.namedImportScope;        for (Scope.Entry e = s.lookup(sym.name); e.scope != null; e = e.next()) {            boolean isClassDecl = e.scope == s;            if ((isClassDecl || sym != e.sym) && sym.kind == e.sym.kind &&                    sym.name != names.error) {                if (!e.sym.type.isErroneous()) {                    String what = e.sym.toJava();                    if (!isClassDecl)                        log.error(pos, "already.defined.single.import", what);                    else if (sym != e.sym)                        log.error(pos, "already.defined.this.unit", what);                }                return false;            }        }        return true;    }    /**      * Check that variable does not hide variable with same name in      *	immediately enclosing local scope.      *	@param pos	     Position for error reporting.      *	@param sym	     The symbol.      *	@param s	     The scope.      */    private void checkTransparentVar(int pos, VarSymbol v, Scope s) {        if (s.next != null) {            for (Scope.Entry e = s.next.lookup(v.name);                    e.scope != null && e.sym.owner == v.owner; e = e.next()) {                if (e.sym.kind == VAR && (e.sym.owner.kind & (VAR | MTH)) != 0 &&                        v.name != names.error) {                    duplicateError(pos, e.sym);                    return;                }            }        }    }    /**      * Check that a class or interface does not hide a class or      *	interface with same name in immediately enclosing local scope.      *	@param pos	     Position for error reporting.      *	@param sym	     The symbol.      *	@param s	     The scope.      */    private void checkTransparentClass(int pos, ClassSymbol c, Scope s) {        if (s.next != null) {            for (Scope.Entry e = s.next.lookup(c.name);                    e.scope != null && e.sym.owner == c.owner; e = e.next()) {                if (e.sym.kind == TYP && (e.sym.owner.kind & (VAR | MTH)) != 0 &&                        c.name != names.error) {                    duplicateError(pos, e.sym);                    return;                }            }        }    }    /**      * Check that class does not have the same name as one of      *	its enclosing classes, or as a class defined in its enclosing scope.      *	return true if class is unique in its enclosing scope.      *	@param pos	     Position for error reporting.      *	@param name	     The class name.      *	@param s	     The enclosing scope.      */    private boolean checkUniqueClassName(int pos, Name name, Scope s) {        for (Scope.Entry e = s.lookup(name); e.scope == s; e = e.next()) {            if (e.sym.kind == TYP && e.sym.name != names.error) {                duplicateError(pos, e.sym);                return false;            }        }        for (Symbol sym = s.owner; sym != null; sym = sym.owner) {            if (sym.kind == TYP && sym.name == name && sym.name != names.error) {                duplicateError(pos, sym);                return true;            }        }        return true;    }

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
92精品国产成人观看免费| 免费成人结看片| 97久久精品人人做人人爽| 国产丝袜在线精品| av不卡一区二区三区| 亚洲视频 欧洲视频| 91高清视频免费看| 五月婷婷久久丁香| 久久综合丝袜日本网| 成人午夜视频在线| 一区二区三区在线免费播放| 欧美日韩电影在线播放| 视频一区视频二区在线观看| 久久一日本道色综合| va亚洲va日韩不卡在线观看| 亚洲一二三专区| 久久众筹精品私拍模特| 成人丝袜视频网| 亚洲v中文字幕| 精品国产伦一区二区三区观看方式 | 激情久久五月天| 欧美国产精品一区二区三区| 色综合久久久久网| 天天av天天翘天天综合网 | 国产在线精品一区二区夜色| 中文字幕中文字幕在线一区| 欧美日韩黄视频| 国产精品一区免费视频| 亚洲黄色小视频| 精品国精品国产| 在线中文字幕一区二区| 精品亚洲免费视频| 一区二区三区欧美亚洲| 久久综合色一综合色88| 在线观看一区二区视频| 精品一区二区三区久久久| 亚洲精品国产无天堂网2021| 久久女同性恋中文字幕| 精品视频免费看| av一区二区三区在线| 免费欧美日韩国产三级电影| 亚洲免费观看高清完整版在线| 精品免费国产一区二区三区四区| 日本精品视频一区二区| 国产精品一区二区免费不卡| 亚洲国产一区二区在线播放| 国产精品免费aⅴ片在线观看| 日韩一区二区高清| 欧美午夜电影一区| 99麻豆久久久国产精品免费优播| 免费xxxx性欧美18vr| 亚洲午夜av在线| 1区2区3区精品视频| 久久精品亚洲精品国产欧美kt∨| 4438成人网| 在线观看国产精品网站| 97久久超碰国产精品电影| 韩国成人福利片在线播放| 午夜亚洲福利老司机| 亚洲色图欧美激情| 国产精品私人自拍| 久久久久久9999| 久久综合久久综合久久| 日韩精品一区二区三区在线| 欧美丰满美乳xxx高潮www| 欧美亚一区二区| 欧洲一区在线观看| 色先锋aa成人| 一本一道久久a久久精品 | 国产xxx精品视频大全| 美国三级日本三级久久99| 日韩中文字幕一区二区三区| 亚洲一区在线免费观看| 亚洲精品成a人| 亚洲综合图片区| 亚洲电影你懂得| 亚洲大片精品永久免费| 一区二区三区蜜桃网| 亚洲一区二区三区爽爽爽爽爽| 亚洲摸摸操操av| 一区二区三区在线视频播放| 亚洲精品视频在线观看网站| 亚洲欧美日韩中文播放| 综合中文字幕亚洲| 一区二区三区中文免费| 亚洲h动漫在线| 丝袜国产日韩另类美女| 青青草国产成人av片免费| 精品综合免费视频观看| 国产一区二区女| 91精品欧美久久久久久动漫| 91精品国产综合久久久久久| 欧美一卡2卡三卡4卡5免费| 欧美一区二区免费观在线| 日韩精品一区二区三区蜜臀| 国产丝袜美腿一区二区三区| 中文字幕在线免费不卡| 亚洲另类一区二区| 日本在线不卡视频一二三区| 精品一区二区三区在线视频| 高清国产一区二区三区| 99久久精品国产麻豆演员表| 欧美三级午夜理伦三级中视频| 欧美一区二区二区| 国产视频一区不卡| 亚洲少妇最新在线视频| 视频一区二区三区在线| 国产乱码精品一区二区三区忘忧草| 成人国产精品免费网站| 欧美日韩国产影片| 久久一夜天堂av一区二区三区| 最近日韩中文字幕| 免费在线观看一区二区三区| 国产成人av资源| 欧美私人免费视频| 国产日产欧产精品推荐色 | 国产91清纯白嫩初高中在线观看| 欧美在线影院一区二区| 精品国产免费一区二区三区四区| 中文av一区二区| 日本va欧美va瓶| gogogo免费视频观看亚洲一| 久久99国产精品久久99 | 日韩成人一区二区| 国产99一区视频免费| 欧美日韩国产在线观看| 国产人久久人人人人爽| 亚洲成av人影院| 成人福利在线看| 日韩欧美在线123| 一区二区三区国产| 成人免费看片app下载| 91精品免费在线观看| 亚洲免费观看高清完整版在线| 黄网站免费久久| 欧美丰满高潮xxxx喷水动漫| 亚洲品质自拍视频| 国产suv精品一区二区6| 欧美成人猛片aaaaaaa| 亚洲午夜精品17c| www.成人在线| 久久亚洲私人国产精品va媚药| 午夜欧美在线一二页| 一本大道久久a久久综合| 国产欧美视频一区二区三区| 奇米777欧美一区二区| 欧美亚洲国产bt| 亚洲欧美偷拍另类a∨色屁股| 国产精品18久久久久久久久久久久 | 欧美一区永久视频免费观看| 亚洲精品中文字幕乱码三区| 成人免费av资源| 久久精品亚洲麻豆av一区二区| 久久精品理论片| 欧美一区午夜视频在线观看| 一个色综合网站| 色婷婷久久综合| 亚洲丝袜另类动漫二区| proumb性欧美在线观看| 中文字幕高清不卡| 成人性生交大片免费看在线播放| 久久伊人中文字幕| 国产在线精品国自产拍免费| 欧美不卡123| 久久99久国产精品黄毛片色诱| 欧美一级在线视频| 奇米综合一区二区三区精品视频| 欧美日韩精品二区第二页| 夜夜亚洲天天久久| 欧美日韩色综合| 午夜成人在线视频| 91精品国产色综合久久ai换脸| 日韩精品一二三四| 制服丝袜激情欧洲亚洲| 日韩成人免费看| 日韩欧美激情四射| 狠狠色狠狠色综合系列| 国产色一区二区| 色综合色综合色综合| 亚洲一区二三区| 欧美日韩二区三区| 老司机一区二区| 日韩欧美中文字幕制服| 亚洲精品写真福利| 在线观看视频一区二区欧美日韩| 亚洲va国产天堂va久久en| 91精品欧美综合在线观看最新| 精品综合免费视频观看| 国产亚洲一区二区三区在线观看 | 国产成人精品一区二| 国产精品久久久久久久久动漫| 日本精品一区二区三区高清 | 亚洲视频资源在线| 欧美吞精做爰啪啪高潮| 蜜臀av性久久久久蜜臀av麻豆| 国产欧美日韩亚州综合| 91黄色激情网站| 精品一区二区三区香蕉蜜桃| 中文字幕免费观看一区| 欧洲视频一区二区|