• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Java ConstraintKind类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Java中com.sun.tools.javac.code.Type.ForAll.ConstraintKind的典型用法代码示例。如果您正苦于以下问题:Java ConstraintKind类的具体用法?Java ConstraintKind怎么用?Java ConstraintKind使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



ConstraintKind类属于com.sun.tools.javac.code.Type.ForAll包,在下文中一共展示了ConstraintKind类的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。

示例1: instantiateExpr

import com.sun.tools.javac.code.Type.ForAll.ConstraintKind; //导入依赖的package包/类
/** Try to instantiate expression type `that' to given type `to'.
 *  If a maximal instantiation exists which makes this type
 *  a subtype of type `to', return the instantiated type.
 *  If no instantiation exists, or if several incomparable
 *  best instantiations exist throw a NoInstanceException.
 */
public Type instantiateExpr(ForAll that,
                            Type to,
                            Warner warn) throws InferenceException {
    List<Type> undetvars = Type.map(that.tvars, fromTypeVarFun);
    for (List<Type> l = undetvars; l.nonEmpty(); l = l.tail) {
        UndetVar uv = (UndetVar) l.head;
        TypeVar tv = (TypeVar)uv.qtype;
        ListBuffer<Type> hibounds = new ListBuffer<Type>();
        for (Type t : that.getConstraints(tv, ConstraintKind.EXTENDS)) {
            hibounds.append(types.subst(t, that.tvars, undetvars));
        }

        List<Type> inst = that.getConstraints(tv, ConstraintKind.EQUAL);
        if (inst.nonEmpty() && inst.head.tag != BOT) {
            uv.inst = inst.head;
        }
        uv.hibounds = hibounds.toList();
    }
    Type qtype1 = types.subst(that.qtype, that.tvars, undetvars);
    if (!types.isSubtype(qtype1,
            qtype1.tag == UNDETVAR ? types.boxedTypeOrType(to) : to)) {
        throw unambiguousNoInstanceException
            .setMessage("infer.no.conforming.instance.exists",
                        that.tvars, that.qtype, to);
    }
    for (List<Type> l = undetvars; l.nonEmpty(); l = l.tail)
        maximizeInst((UndetVar) l.head, warn);
    // System.out.println(" = " + qtype1.map(getInstFun));//DEBUG

    // check bounds
    List<Type> targs = Type.map(undetvars, getInstFun);
    if (Type.containsAny(targs, that.tvars)) {
        //replace uninferred type-vars
        targs = types.subst(targs,
                that.tvars,
                instantiateAsUninferredVars(undetvars, that.tvars));
    }
    return chk.checkType(warn.pos(), that.inst(targs, types), to);
}
 
开发者ID:tranleduy2000,项目名称:javaide,代码行数:46,代码来源:Infer.java


示例2: instantiateExpr

import com.sun.tools.javac.code.Type.ForAll.ConstraintKind; //导入依赖的package包/类
/** Try to instantiate expression type `that' to given type `to'.
 *  If a maximal instantiation exists which makes this type
 *  a subtype of type `to', return the instantiated type.
 *  If no instantiation exists, or if several incomparable
 *  best instantiations exist throw a NoInstanceException.
 */
public Type instantiateExpr(ForAll that,
                            Type to,
                            Warner warn) throws InferenceException {
    List<Type> undetvars = Type.map(that.tvars, fromTypeVarFun);
    for (List<Type> l = undetvars; l.nonEmpty(); l = l.tail) {
        UndetVar uv = (UndetVar) l.head;
        TypeVar tv = (TypeVar)uv.qtype;
        ListBuffer<Type> hibounds = new ListBuffer<Type>();
        for (Type t : that.getConstraints(tv, ConstraintKind.EXTENDS)) {
            hibounds.append(types.subst(t, that.tvars, undetvars));
        }

        List<Type> inst = that.getConstraints(tv, ConstraintKind.EQUAL);
        if (inst.nonEmpty() && inst.head.tag != BOT) {
            uv.inst = inst.head;
        }
        uv.hibounds = hibounds.toList();
    }
    Type qtype1 = types.subst(that.qtype, that.tvars, undetvars);
    if (!types.isSubtype(qtype1,
            qtype1.tag == UNDETVAR ? types.boxedTypeOrType(to) : to)) {
        throw unambiguousNoInstanceException
            .setMessage("infer.no.conforming.instance.exists",
                        that.tvars, that.qtype, to);
    }
    for (List<Type> l = undetvars; l.nonEmpty(); l = l.tail)
        maximizeInst((UndetVar) l.head, warn);
    // System.out.println(" = " + qtype1.map(getInstFun));//DEBUG

    // check bounds
    List<Type> targs = Type.map(undetvars, getInstFun);
    if (Type.containsAny(targs, that.tvars)) {
        //replace uninferred type-vars
        targs = types.subst(targs,
                that.tvars,
                instaniateAsUninferredVars(undetvars, that.tvars));
    }
    return chk.checkType(warn.pos(), that.inst(targs, types), to);
}
 
开发者ID:aducode,项目名称:openjdk-source-code-learn,代码行数:46,代码来源:Infer.java


示例3: getConstraints

import com.sun.tools.javac.code.Type.ForAll.ConstraintKind; //导入依赖的package包/类
@Override
public List<Type> getConstraints(TypeVar tv, ConstraintKind ck) {
    return UninferredMethodType.this.getConstraints(tv, ck);
}
 
开发者ID:tranleduy2000,项目名称:javaide,代码行数:5,代码来源:Infer.java



注:本文中的com.sun.tools.javac.code.Type.ForAll.ConstraintKind类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java Icon类代码示例发布时间:2022-05-22
下一篇:
Java SchemaCompatibility类代码示例发布时间:2022-05-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap