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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? transtypes.java

?? javac是sun公司開發人員使用java語言編寫的優秀的工業級java編譯器
?? JAVA
字號:
/** * @(#)TransTypes.java	1.39 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.code.*;import com.sun.tools.javac.v8.tree.*;import com.sun.tools.javac.v8.code.Symbol.*;import com.sun.tools.javac.v8.tree.Tree.*;import com.sun.tools.javac.v8.code.Type.*;/** * This pass translates Generic Java to conventional Java. */public class TransTypes extends TreeTranslator implements Flags, Kinds, TypeTags {    /**     * The context key for the TransTypes phase.     */    private static final Context.Key transTypesKey = new Context.Key();    /**     * Get the instance for this context.     */    public static TransTypes instance(Context context) {        TransTypes instance = (TransTypes) context.get(transTypesKey);        if (instance == null)            instance = new TransTypes(context);        return instance;    }    private Name.Table names;    private Log log;    private Symtab syms;    private TreeMaker make;    private TransTypes(Context context) {        super();        context.put(transTypesKey, this);        names = Name.Table.instance(context);        log = Log.instance(context);        syms = Symtab.instance(context);    }    /**      * A hashtable mapping bridge methods to the methods they override after      *  type erasure.      */    Hashtable overridden;    /**     * Construct an attributed tree for a cast of expression to target type,     *  unless it already has precisely that type.     *  @param tree    The expression tree.     *  @param target  The target type.     */    Tree cast(Tree tree, Type target) {        int oldpos = make.pos;        make.at(tree.pos);        if (!tree.type.isSameType(target)) {            tree = make.TypeCast(make.Type(target), tree).setType(target);        }        make.pos = oldpos;        return tree;    }    /**      * Construct an attributed tree to coerce an expression to some erased      *  target type, unless the expression is already assignable to that type.      *  If target type is a constant type, use its base type instead.      *  @param tree    The expression tree.      *  @param target  The target type.      */    Tree coerce(Tree tree, Type target) {        Type btarget = target.baseType();        return tree.type.isAssignable(btarget) ? tree : cast(tree, btarget);    }    /**      * Given an erased reference type, assume this type as the tree's type.      *  Then, coerce to some given target type unless target type is null.      *  This operation is used in situations like the following:      *      *  class Cell<A> { A value; }      *  ...      *  Cell<Integer> cell;      *  Integer x = cell.value;      *      *  Since the erasure of Cell.value is Object, but the type      *  of cell.value in the assignment is Integer, we need to      *  adjust the original type of cell.value to Object, and insert      *  a cast to Integer. That is, the last assignment becomes:      *      *  Integer x = (Integer)cell.value;      *      *  @param tree       The expression tree whose type might need adjustment.      *  @param erasedType The expression's type after erasure.      *  @param target     The target type, which is usually the erasure of the      *                    expression's original type.      */    Tree retype(Tree tree, Type erasedType, Type target) {        if (erasedType.tag > lastBaseTag) {            tree.type = erasedType;            if (target != null)                return coerce(tree, target);        }        return tree;    }    /**      * Translate method argument list, casting each argument      *  to its corresponding type in a list of target types.      *  @param trees     The method argument list.      *  @param targets   The list of target types.      */    List translateArgs(List trees, List targets) {        for (List l = trees; l.nonEmpty(); l = l.tail) {            l.head = translate((Tree) l.head, (Type) targets.head);            targets = targets.tail;        }        return trees;    }    /**      * Visitor argument: proto-type.      */    private Type pt;    /**     * Visitor method: perform a type translation on tree.     */    public Tree translate(Tree tree, Type pt) {        Type prevPt = this.pt;        try {            this.pt = pt;            if (tree == null)                result = null;            else                tree.accept(this);        }        finally { this.pt = prevPt;                } return result;    }    /**      * Visitor method: perform a type translation on list of trees.      */    public List translate(List trees, Type pt) {        Type prevPt = this.pt;        List res;        try {            this.pt = pt;            res = translate(trees);        }        finally { this.pt = prevPt;                } return res;    }    public void visitClassDef(ClassDef tree) {        tree.typarams = TypeParameter.emptyList;        super.visitClassDef(tree);        make.at(tree.pos);        tree.type = tree.type.erasure();        result = tree;    }    public void visitMethodDef(MethodDef tree) {        tree.restype = translate(tree.restype, null);        tree.typarams = TypeParameter.emptyList;        tree.params = translateVarDefs(tree.params);        tree.thrown = translate(tree.thrown, null);        tree.body = (Block) translate(tree.body, tree.sym.erasure().restype());        tree.type = tree.type.erasure();        result = tree;        for (Scope.Entry e = tree.sym.owner.members().lookup(tree.name);                e.sym != null; e = e.next()) {            if (e.sym != tree.sym && e.sym.type.erasure().isSameType(tree.type)) {                log.error(tree.pos, "name.clash.same.erasure", tree.sym.toJava(),                        e.sym.toJava());                return;            }        }    }    public void visitVarDef(VarDef tree) {        tree.vartype = translate(tree.vartype, null);        tree.init = translate(tree.init, tree.sym.erasure());        tree.type = tree.type.erasure();        result = tree;    }    public void visitDoLoop(DoLoop tree) {        tree.body = translate(tree.body);        tree.cond = translate(tree.cond, null);        result = tree;    }    public void visitWhileLoop(WhileLoop tree) {        tree.cond = translate(tree.cond, null);        tree.body = translate(tree.body);        result = tree;    }    public void visitForLoop(ForLoop tree) {        tree.init = translate(tree.init, null);        tree.cond = translate(tree.cond, null);        tree.step = translate(tree.step, null);        tree.body = translate(tree.body);        result = tree;    }    public void visitSwitch(Switch tree) {        tree.selector = translate(tree.selector, null);        tree.cases = translateCases(tree.cases);        result = tree;    }    public void visitCase(Case tree) {        tree.pat = translate(tree.pat, null);        tree.stats = translate(tree.stats);        result = tree;    }    public void visitSynchronized(Synchronized tree) {        tree.lock = translate(tree.lock, null);        tree.body = translate(tree.body);        result = tree;    }    public void visitConditional(Conditional tree) {        tree.cond = translate(tree.cond, null);        tree.truepart = translate(tree.truepart, tree.type.erasure());        tree.falsepart = translate(tree.falsepart, tree.type.erasure());        result = tree;    }    public void visitIf(If tree) {        tree.cond = translate(tree.cond, null);        tree.thenpart = translate(tree.thenpart);        tree.elsepart = translate(tree.elsepart);        result = tree;    }    public void visitExec(Exec tree) {        tree.expr = translate(tree.expr, null);        result = tree;    }    public void visitReturn(Return tree) {        tree.expr = translate(tree.expr);        result = tree;    }    public void visitThrow(Throw tree) {        tree.expr = translate(tree.expr, tree.expr.type.erasure());        result = tree;    }    public void visitAssert(Assert tree) {        tree.cond = translate(tree.cond, null);        if (tree.detail != null)            tree.detail = translate(tree.detail, null);        result = tree;    }    public void visitApply(Apply tree) {        tree.meth = translate(tree.meth, null);        Type mt = TreeInfo.symbol(tree.meth).erasure();        tree.args = translateArgs(tree.args, mt.argtypes());        result = retype(tree, mt.restype(), pt);    }    public void visitNewClass(NewClass tree) {        if (tree.encl != null)            tree.encl = translate(tree.encl, tree.encl.type.erasure());        tree.clazz = translate(tree.clazz, null);        tree.args = translateArgs(tree.args, tree.constructor.erasure().argtypes());        tree.def = (ClassDef) translate(tree.def, null);        tree.type = tree.type.erasure();        result = tree;    }    public void visitNewArray(NewArray tree) {        tree.elemtype = translate(tree.elemtype, null);        tree.dims = translate(tree.dims, null);        tree.elems = translate(tree.elems, tree.type.elemtype().erasure());        tree.type = tree.type.erasure();        result = tree;    }    public void visitParens(Parens tree) {        tree.expr = translate(tree.expr, null);        tree.type = tree.type.erasure();        result = tree;    }    public void visitAssign(Assign tree) {        tree.lhs = translate(tree.lhs, null);        tree.rhs = translate(tree.rhs, tree.lhs.type.erasure());        tree.type = tree.type.erasure();        result = tree;    }    public void visitAssignop(Assignop tree) {        tree.lhs = translate(tree.lhs, null);        tree.rhs = translate(tree.rhs, null);        tree.type = tree.type.erasure();        result = tree;    }    public void visitUnary(Unary tree) {        tree.arg = translate(tree.arg, (Type) tree.operator.type.argtypes().head);        result = tree;    }    public void visitBinary(Binary tree) {        tree.lhs = translate(tree.lhs, (Type) tree.operator.type.argtypes().head);        tree.rhs =                translate(tree.rhs, (Type) tree.operator.type.argtypes().tail.head);        result = tree;    }    public void visitTypeCast(TypeCast tree) {        tree.clazz = translate(tree.clazz, null);        tree.expr = translate(tree.expr, null);        tree.type = tree.type.erasure();        result = tree;    }    public void visitTypeTest(TypeTest tree) {        tree.expr = translate(tree.expr, null);        tree.clazz = translate(tree.clazz, null);        result = tree;    }    public void visitIndexed(Indexed tree) {        tree.indexed = translate(tree.indexed, tree.indexed.type.erasure());        tree.index = translate(tree.index, null);        result = retype(tree, tree.indexed.type.elemtype(), pt);    }    public void visitIdent(Ident tree) {        Type et = tree.sym.erasure();        if (tree.type.constValue != null) {            result = tree;        } else if (tree.sym.kind == VAR) {            result = retype(tree, et, pt);        } else {            tree.type = tree.type.erasure();            result = tree;        }    }    public void visitSelect(Select tree) {        Type t = tree.selected.type;        tree.selected = translate(tree.selected, t.erasure());        if (tree.type.constValue != null) {            result = tree;        } else if (tree.sym.kind == VAR) {            result = retype(tree, tree.sym.erasure(), pt);        } else {            tree.type = tree.type.erasure();            result = tree;        }    }    public void visitTypeArray(TypeArray tree) {        tree.elemtype = translate(tree.elemtype, null);        tree.type = tree.type.erasure();        result = tree;    }    /**      * Translate a toplevel class definition.      *  @param cdef    The definition to be translated.      */    public Tree translateTopLevelClass(Tree cdef, TreeMaker make) {        try {            this.make = make;            overridden = Hashtable.make();            pt = null;            return translate(cdef, null);        }        finally { this.make = null;                  overridden = null;                  pt = null;                } }}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩精品一二三区| 国产成人h网站| 久久精品日韩一区二区三区| 在线视频国内一区二区| 国产高清不卡一区| 日韩国产欧美在线视频| 成人免费一区二区三区视频 | 91亚洲精品久久久蜜桃网站| 亚洲成人7777| 中文字幕一区二区三| 精品国产露脸精彩对白| 欧美三级中文字| 一本久久a久久免费精品不卡| 国产精品一区二区在线看| 视频一区二区不卡| 亚洲午夜久久久久久久久久久| 国产精品嫩草久久久久| 国产亚洲欧美在线| 精品国产百合女同互慰| 日韩一区二区不卡| 欧美日韩国产美| 在线观看日韩精品| 在线免费观看视频一区| 99久久久精品免费观看国产蜜| 国产麻豆午夜三级精品| 久久69国产一区二区蜜臀| 免费视频最近日韩| 日韩不卡在线观看日韩不卡视频| 亚洲v日本v欧美v久久精品| 亚洲黄网站在线观看| 亚洲黄色在线视频| 亚洲靠逼com| 一区二区久久久久| 亚洲高清视频的网址| 亚洲第一会所有码转帖| 偷拍日韩校园综合在线| 亚瑟在线精品视频| 天天综合天天综合色| 午夜精品爽啪视频| 日韩综合小视频| 热久久久久久久| 激情综合色综合久久| 精品无码三级在线观看视频| 九九热在线视频观看这里只有精品| 日韩精品一级中文字幕精品视频免费观看 | 久久国产人妖系列| 黑人巨大精品欧美一区| 国产一区二区三区观看| 成熟亚洲日本毛茸茸凸凹| 成人av在线资源网| 色哟哟日韩精品| 欧美日韩久久一区| 欧美一区二区三区四区高清| 精品噜噜噜噜久久久久久久久试看| 久久综合久久99| 国产精品毛片高清在线完整版| 亚洲欧洲日韩综合一区二区| 一区二区三区高清在线| 日韩精品一二区| 国产一区二区在线电影| 成人毛片在线观看| 欧美丝袜丝交足nylons图片| 在线播放日韩导航| 久久久欧美精品sm网站| 亚洲桃色在线一区| 日韩有码一区二区三区| 国产一区二区三区| 一本大道av一区二区在线播放| 欧美日韩成人综合| 精品国产乱码久久久久久1区2区| 国产精品日韩精品欧美在线| 亚洲综合在线免费观看| 精品在线播放免费| 99国产精品久久久| 欧美日韩国产首页在线观看| 久久综合狠狠综合| 亚洲精品高清在线| 经典一区二区三区| 91麻豆免费观看| 精品少妇一区二区三区在线播放 | 亚洲男人的天堂在线观看| 日韩电影在线观看网站| 成人美女在线视频| 欧美一区二区三区视频在线| 国产精品久久久久久久久搜平片| 亚洲成人av资源| 高清av一区二区| 制服视频三区第一页精品| 国产精品沙发午睡系列990531| 香蕉久久夜色精品国产使用方法 | 午夜精品一区二区三区电影天堂| 国产精品69久久久久水密桃| 欧美探花视频资源| 国产精品欧美久久久久无广告| 天堂久久一区二区三区| 94色蜜桃网一区二区三区| 精品久久99ma| 午夜影院在线观看欧美| 福利一区福利二区| 欧美成人精精品一区二区频| 亚洲一区二区精品视频| www.日韩av| 久久久www成人免费无遮挡大片| 亚洲一区二区三区国产| av在线不卡观看免费观看| 欧美一区二区成人| 亚洲一区二区三区四区五区黄| 成人午夜私人影院| 精品国产在天天线2019| 亚洲第一激情av| 日本乱人伦aⅴ精品| 国产精品狼人久久影院观看方式| 精品无人区卡一卡二卡三乱码免费卡| 欧美日韩亚洲综合在线| 中文字幕一区二区三区视频 | 国产精品一区二区久激情瑜伽| 4438成人网| 亚洲福利国产精品| 色综合久久88色综合天天免费| 国产欧美日韩综合精品一区二区| 久久99深爱久久99精品| 欧美一区二区三区婷婷月色| 丝袜美腿亚洲一区二区图片| 欧美日韩精品一区二区天天拍小说 | 国内精品写真在线观看| 91精品国产丝袜白色高跟鞋| 亚洲香肠在线观看| 色婷婷av一区| 亚洲乱码中文字幕综合| 成人av网站免费观看| 国产欧美在线观看一区| 高清日韩电视剧大全免费| 日本一区二区三区电影| 成人免费看的视频| 国产精品女同一区二区三区| 成人午夜精品一区二区三区| 日本一区二区免费在线| 成人夜色视频网站在线观看| 国产精品你懂的| 91在线观看高清| 一区二区三区日本| 欧美日韩综合一区| 日韩精品一二区| 欧美精品一区在线观看| 国产一区久久久| 国产精品毛片a∨一区二区三区| voyeur盗摄精品| 亚洲一区二区偷拍精品| 欧美一级黄色录像| 黄色日韩网站视频| 国产精品乱人伦一区二区| 97se亚洲国产综合自在线 | 日韩精品电影在线| 日韩免费高清av| 国产盗摄一区二区| 日韩一区中文字幕| 欧美精选在线播放| 精品一区二区免费看| 中文字幕高清一区| 在线观看一区不卡| 美女视频免费一区| 欧美国产日韩精品免费观看| 99久久久无码国产精品| 亚洲国产视频一区二区| 欧美岛国在线观看| 成人av免费在线观看| 亚洲愉拍自拍另类高清精品| 日韩一卡二卡三卡四卡| 成人午夜免费电影| 亚洲aⅴ怡春院| 国产蜜臀97一区二区三区| 欧美综合天天夜夜久久| 久久国产精品72免费观看| 中文字幕中文字幕一区| 欧美日本在线一区| 色菇凉天天综合网| 五月天婷婷综合| 国产精品五月天| 欧美视频第二页| 国产精品一区二区免费不卡| 亚洲一区二区视频在线观看| 久久婷婷国产综合精品青草| 91啪亚洲精品| 久久99国产精品尤物| 亚洲精品视频免费看| 精品久久国产字幕高潮| 色菇凉天天综合网| 国产高清久久久| 五月激情六月综合| 亚洲视频在线观看三级| 日韩欧美123| 欧美三级在线视频| 成人性色生活片| 激情文学综合丁香| 亚洲va中文字幕| 亚洲免费观看高清完整 | 亚洲成av人片在线观看无码| 久久久www免费人成精品| 在线不卡a资源高清| 99精品欧美一区二区三区小说|