com.sun.tools.javac.util.List.last()方法的使用及代码示例

x33g5p2x  于2022-01-24 转载在 其他  
字(8.4k)|赞(0)|评价(0)|浏览(163)

本文整理了Java中com.sun.tools.javac.util.List.last()方法的一些代码示例,展示了List.last()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。List.last()方法的具体详情如下:
包路径:com.sun.tools.javac.util.List
类名称:List
方法名:last

List.last介绍

[英]The last element in the list, if any, or null.
[中]列表中的最后一个元素(如果有)或null。

代码示例

代码示例来源:origin: google/error-prone

if (param.equals(sym.getParameters().last()) && sym.isVarArgs()) {
 break; // TODO(b/121273225): support varargs

代码示例来源:origin: google/error-prone

ArrayType varargsParamType = (ArrayType) params.last().type;

代码示例来源:origin: org.kohsuke.sorcerer/sorcerer-javac

@Override
  protected Symbol access(Name name, TypeSymbol location) {
    Symbol firstAmbiguity = ambiguousSyms.last();
    return firstAmbiguity.kind == TYP ?
        types.createErrorType(name, location, firstAmbiguity.type).tsym :
        firstAmbiguity;
  }
}

代码示例来源:origin: cincheo/jsweet

MethodSymbol methSym = (MethodSymbol) newClass.constructor;
if (newClass.args.size() == 0 || !Util.hasVarargs(methSym) //
    || newClass.args.last().type.getKind() != TypeKind.ARRAY
    || !context.types.erasure(((ArrayType) newClass.args.last().type).elemtype).equals(
        context.types.erasure(((ArrayType) methSym.getParameters().last().type).elemtype))) {
  applyVarargs = false;
    print(", ").print(newClass.args.get(i));
  print("].concat(<any[]>").print(newClass.args.last()).print(")))");
} else {
  if (newClass.clazz instanceof JCTypeApply) {

代码示例来源:origin: konsoletyper/teavm-javac

@Override
  protected Symbol access(Name name, TypeSymbol location) {
    Symbol firstAmbiguity = ambiguousSyms.last();
    return firstAmbiguity.kind == TYP ?
        types.createErrorType(name, location, firstAmbiguity.type).tsym :
        firstAmbiguity;
  }
}

代码示例来源:origin: cincheo/jsweet

|| !inv.args.isEmpty() && (inv.args.last().type.getKind() != TypeKind.ARRAY
      || !context.types.erasure(((ArrayType) inv.args.last().type).elemtype).equals(
          context.types.erasure(((ArrayType) methSym.getParameters().last().type).elemtype)))) {
applyVarargs = false;
      VarSymbol var = (VarSymbol) ((JCIdent) arg).sym;
      if (var.owner instanceof MethodSymbol && ((MethodSymbol) var.owner).isVarArgs()
          && ((MethodSymbol) var.owner).getParameters().last() == var) {
        print("...");
print(inv.args.last());

代码示例来源:origin: org.jvnet.sorcerer/sorcerer-javac

/** The end position of given tree, if it is a block with
 *  defined endpos.
 */
public static int endPos(JCTree tree) {
if (tree.tag == JCTree.BLOCK && ((JCBlock) tree).endpos != Position.NOPOS)
  return ((JCBlock) tree).endpos;
else if (tree.tag == JCTree.SYNCHRONIZED)
  return endPos(((JCSynchronized) tree).body);
else if (tree.tag == JCTree.TRY) {
  JCTry t = (JCTry) tree;
  return endPos((t.finalizer != null)
     ? t.finalizer
     : t.catchers.last().body);
} else
  return tree.pos;
}

代码示例来源:origin: konsoletyper/teavm-javac

List<Type> adjustArgs(List<Type> args, Symbol msym, int length, boolean allowVarargs) {
  if ((msym.flags() & VARARGS) != 0 && allowVarargs) {
    Type varargsElem = types.elemtype(args.last());
    if (varargsElem == null) {
      Assert.error("Bad varargs = " + args.last() + " " + msym);
    }
    List<Type> newArgs = args.reverse().tail.prepend(varargsElem).reverse();
    while (newArgs.length() < length) {
      newArgs = newArgs.append(newArgs.last());
    }
    return newArgs;
  } else {
    return args;
  }
}
//where

代码示例来源:origin: org.kohsuke.sorcerer/sorcerer-javac

List<Type> adjustArgs(List<Type> args, Symbol msym, int length, boolean allowVarargs) {
  if ((msym.flags() & VARARGS) != 0 && allowVarargs) {
    Type varargsElem = types.elemtype(args.last());
    if (varargsElem == null) {
      Assert.error("Bad varargs = " + args.last() + " " + msym);
    }
    List<Type> newArgs = args.reverse().tail.prepend(varargsElem).reverse();
    while (newArgs.length() < length) {
      newArgs = newArgs.append(newArgs.last());
    }
    return newArgs;
  } else {
    return args;
  }
}
//where

代码示例来源:origin: com.android.tools.external.lombok/lombok-ast

private List<JCCase> addCase(List<JCCase> cases, JCExpression currentPat, Node currentNode, List<JCStatement> stats) {
  JCStatement last = stats.last();
  int start = currentNode.getPosition().getStart();
  int end = last == null ? currentNode.getPosition().getEnd() : endPosTable.get(last);
  cases = cases.append(setPos(start, end, treeMaker.Case(currentPat, stats)));
  return cases;
}

代码示例来源:origin: org.projectlombok/lombok.ast

private List<JCCase> addCase(List<JCCase> cases, JCExpression currentPat, Node currentNode, List<JCStatement> stats) {
  JCStatement last = stats.last();
  int start = currentNode.getPosition().getStart();
  int end = last == null ? currentNode.getPosition().getEnd() : endPosTable.get(last);
  cases = cases.append(setPos(start, end, treeMaker.Case(currentPat, stats)));
  return cases;
}

代码示例来源:origin: me.tatarka.retrolambda.projectlombok/lombok.ast

private List<JCCase> addCase(List<JCCase> cases, JCExpression currentPat, Node currentNode, List<JCStatement> stats) {
  JCStatement last = stats.last();
  int start = currentNode.getPosition().getStart();
  int end = last == null ? currentNode.getPosition().getEnd() : endPosTable.get(last);
  cases = cases.append(setPos(start, end, treeMaker.Case(currentPat, stats)));
  return cases;
}

代码示例来源:origin: org.kohsuke.sorcerer/sorcerer-javac

private List<Type> adjustMethodParams(long flags, List<Type> args) {
  boolean isVarargs = (flags & VARARGS) != 0;
  if (isVarargs) {
    Type varargsElem = args.last();
    ListBuffer<Type> adjustedArgs = new ListBuffer<>();
    for (Type t : args) {
      adjustedArgs.append(t != varargsElem ?
        t :
        ((ArrayType)t).makeVarargs());
    }
    args = adjustedArgs.toList();
  }
  return args.tail;
}

代码示例来源:origin: konsoletyper/teavm-javac

private List<Type> adjustMethodParams(long flags, List<Type> args) {
  boolean isVarargs = (flags & VARARGS) != 0;
  if (isVarargs) {
    Type varargsElem = args.last();
    ListBuffer<Type> adjustedArgs = new ListBuffer<>();
    for (Type t : args) {
      adjustedArgs.append(t != varargsElem ?
        t :
        ((ArrayType)t).makeVarargs());
    }
    args = adjustedArgs.toList();
  }
  return args.tail;
}

代码示例来源:origin: konsoletyper/teavm-javac

@Override
  public void warn(LintCategory lint) {
    boolean warned = this.warned;
    super.warn(lint);
    if (warned) return; // suppress redundant diagnostics
    switch (lint) {
      case UNCHECKED:
        Check.this.warnUnchecked(pos(), "prob.found.req", diags.fragment(uncheckedKey), found, expected);
        break;
      case VARARGS:
        if (method != null &&
            method.attribute(syms.trustMeType.tsym) != null &&
            isTrustMeAllowedOnMethod(method) &&
            !types.isReifiable(method.type.getParameterTypes().last())) {
          Check.this.warnUnsafeVararg(pos(), "varargs.unsafe.use.varargs.param", method.params.last());
        }
        break;
      default:
        throw new AssertionError("Unexpected lint: " + lint);
    }
  }
}

代码示例来源:origin: sc.fiji/javac

/** The end position of given tree, if it is a block with
 *  defined endpos.
 */
public static int endPos(JCTree tree) {
  if (tree.getTag() == JCTree.BLOCK && ((JCBlock) tree).endpos != Position.NOPOS)
    return ((JCBlock) tree).endpos;
  else if (tree.getTag() == JCTree.SYNCHRONIZED)
    return endPos(((JCSynchronized) tree).body);
  else if (tree.getTag() == JCTree.TRY) {
    JCTry t = (JCTry) tree;
    return endPos((t.finalizer != null)
           ? t.finalizer
           : t.catchers.last().body);
  } else
    return tree.pos;
}

代码示例来源:origin: org.kohsuke.sorcerer/sorcerer-javac

private JCErroneous syntaxError(int pos, List<JCTree> errs, String key, TokenKind... args) {
  setErrorEndPos(pos);
  JCErroneous err = F.at(pos).Erroneous(errs);
  reportSyntaxError(err, key, (Object[])args);
  if (errs != null) {
    JCTree last = errs.last();
    if (last != null)
      storeEnd(last, pos);
  }
  return toP(err);
}

代码示例来源:origin: konsoletyper/teavm-javac

private JCErroneous syntaxError(int pos, List<JCTree> errs, String key, TokenKind... args) {
  setErrorEndPos(pos);
  JCErroneous err = F.at(pos).Erroneous(errs);
  reportSyntaxError(err, key, (Object[])args);
  if (errs != null) {
    JCTree last = errs.last();
    if (last != null)
      storeEnd(last, pos);
  }
  return toP(err);
}

代码示例来源:origin: org.kohsuke.sorcerer/sorcerer-javac

/** The end position of given tree, if it is a block with
 *  defined endpos.
 */
public static int endPos(JCTree tree) {
  if (tree.hasTag(BLOCK) && ((JCBlock) tree).endpos != Position.NOPOS)
    return ((JCBlock) tree).endpos;
  else if (tree.hasTag(SYNCHRONIZED))
    return endPos(((JCSynchronized) tree).body);
  else if (tree.hasTag(TRY)) {
    JCTry t = (JCTry) tree;
    return endPos((t.finalizer != null) ? t.finalizer
           : (t.catchers.nonEmpty() ? t.catchers.last().body : t.body));
  } else
    return tree.pos;
}

代码示例来源:origin: konsoletyper/teavm-javac

/** The end position of given tree, if it is a block with
 *  defined endpos.
 */
public static int endPos(JCTree tree) {
  if (tree.hasTag(BLOCK) && ((JCBlock) tree).endpos != Position.NOPOS)
    return ((JCBlock) tree).endpos;
  else if (tree.hasTag(SYNCHRONIZED))
    return endPos(((JCSynchronized) tree).body);
  else if (tree.hasTag(TRY)) {
    JCTry t = (JCTry) tree;
    return endPos((t.finalizer != null) ? t.finalizer
           : (t.catchers.nonEmpty() ? t.catchers.last().body : t.body));
  } else
    return tree.pos;
}

相关文章