本文整理了Java中com.sun.tools.javac.util.List.last()
方法的一些代码示例,展示了List.last()
的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。List.last()
方法的具体详情如下:
包路径:com.sun.tools.javac.util.List
类名称: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;
}
内容来源于网络,如有侵权,请联系作者删除!