本文整理汇总了Java中com.sun.tools.javac.tree.JCTree.JCBinary类的典型用法代码示例。如果您正苦于以下问题:Java JCBinary类的具体用法?Java JCBinary怎么用?Java JCBinary使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
JCBinary类属于com.sun.tools.javac.tree.JCTree包,在下文中一共展示了JCBinary类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。
示例1: diffBinary
import com.sun.tools.javac.tree.JCTree.JCBinary; //导入依赖的package包/类
protected int diffBinary(JCBinary oldT, JCBinary newT, int[] bounds) {
int localPointer = bounds[0];
int[] lhsBounds = getBounds(oldT.lhs);
copyTo(localPointer, lhsBounds[0]);
localPointer = diffTree(oldT.lhs, newT.lhs, lhsBounds);
if (oldT.getTag() != newT.getTag()) {
copyTo(localPointer, oldT.pos);
printer.print(operatorName(newT.getTag()));
localPointer = oldT.pos + operatorName(oldT.getTag()).toString().length();
}
int[] rhsBounds = getCommentCorrectedBounds(oldT.rhs);
rhsBounds[0] = copyUpTo(localPointer, rhsBounds[0]);
localPointer = diffTree(oldT.rhs, newT.rhs, rhsBounds);
return copyUpTo(localPointer, bounds[1]);
}
开发者ID:apache,项目名称:incubator-netbeans,代码行数:17,代码来源:CasualDiff.java
示例2: translateTopLevelClass
import com.sun.tools.javac.tree.JCTree.JCBinary; //导入依赖的package包/类
@Override
public List<JCTree> translateTopLevelClass(Env<AttrContext> env, JCTree cdef, TreeMaker make) {
List<JCTree> result = super.translateTopLevelClass(env, cdef, make);
new TreeScanner() {
@Override
public void visitBinary(JCBinary tree) {
hasNullCheck |= tree.operator.getSimpleName().contentEquals("!=") &&
"resource".equals(String.valueOf(TreeInfo.name(tree.lhs))) &&
TreeInfo.isNull(tree.rhs);
super.visitBinary(tree);
}
}.scan(result);
return result;
}
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:17,代码来源:TwrAvoidNullCheck.java
示例3: isThereInMiniTree
import com.sun.tools.javac.tree.JCTree.JCBinary; //导入依赖的package包/类
/**
* This function walks into a tree with nodes of type JCBinary to search for
* a string as one of the elements of the tree.
* @param toTest The String searched as Element in the tree.
* @param expression The bifurcation tree searched.
* @return True if the string was found, or False.
*/
private boolean isThereInMiniTree(String toTest, JCTree expression) {
if(expression instanceof JCParens){
if(isThereInMiniTree(toTest, ((JCParens) expression).expr))
return true;
} else if(expression instanceof JCIdent){
if(((JCIdent) expression).name.toString().equals(toTest))
return true;
} else if(expression instanceof JCBinary){
if(isThereInMiniTree(toTest, ((JCBinary) expression).rhs))
return true;
if(isThereInMiniTree(toTest, ((JCBinary) expression).lhs))
return true;
}
return false;
}
开发者ID:alyssonfm,项目名称:jmlok,代码行数:23,代码来源:Examinator.java
示例4: hasTrueValue
import com.sun.tools.javac.tree.JCTree.JCBinary; //导入依赖的package包/类
/**
* Verify if the boolean expression have a true value despite of any variable values.
* @param expression The boolean expression examined.
* @return 1 When the expression is always true.
*/
private int hasTrueValue(JCTree expression) {
if(expression instanceof JCParens){
if(hasTrueValue(((JCParens)expression).expr) != 0)
return 1;
}else if(expression instanceof JCLiteral){
if(((JCLiteral) expression).value == null)
return VAR_FALSE_VALUE;
return (int) ((JCLiteral) expression).value;
}else if(expression instanceof JmlSingleton){
return 1;
}else if(expression instanceof JCBinary){
return resolveBooleanOperations(expression);
}
return VAR_FALSE_VALUE;
}
开发者ID:alyssonfm,项目名称:jmlok,代码行数:21,代码来源:Examinator.java
示例5: matchBinary
import com.sun.tools.javac.tree.JCTree.JCBinary; //导入依赖的package包/类
@Override
public Description matchBinary(BinaryTree tree, VisitorState state) {
Tree parent = state.getPath().getParentPath().getLeaf();
if (!(parent instanceof BinaryTree)) {
return NO_MATCH;
}
if (TreeInfo.opPrec(((JCBinary) tree).getTag())
== TreeInfo.opPrec(((JCBinary) parent).getTag())) {
return NO_MATCH;
}
if (!isConfusing(tree.getKind(), parent.getKind())) {
return NO_MATCH;
}
return describeMatch(
tree, SuggestedFix.builder().prefixWith(tree, "(").postfixWith(tree, ")").build());
}
开发者ID:google,项目名称:error-prone,代码行数:17,代码来源:OperatorPrecedence.java
示例6: visitBinary
import com.sun.tools.javac.tree.JCTree.JCBinary; //导入依赖的package包/类
@Override public void visitBinary(JCBinary tree) {
String op = operator(treeTag(tree));
print(tree.lhs);
print(" ");
print(op);
print(" ");
print(tree.rhs);
}
开发者ID:git03394538,项目名称:lombok-ianchiu,代码行数:9,代码来源:PrettyPrinter.java
示例7: generateCompareFloatOrDouble
import com.sun.tools.javac.tree.JCTree.JCBinary; //导入依赖的package包/类
public JCStatement generateCompareFloatOrDouble(JCExpression thisDotField, JCExpression otherDotField,
JavacTreeMaker maker, JavacNode node, boolean isDouble) {
/* if (Float.compare(fieldName, other.fieldName) != 0) return false; */
JCExpression clazz = genJavaLangTypeRef(node, isDouble ? "Double" : "Float");
List<JCExpression> args = List.of(thisDotField, otherDotField);
JCBinary compareCallEquals0 = maker.Binary(CTC_NOT_EQUAL, maker.Apply(
List.<JCExpression>nil(), maker.Select(clazz, node.toName("compare")), args), maker.Literal(0));
return maker.If(compareCallEquals0, returnBool(maker, false), null);
}
开发者ID:git03394538,项目名称:lombok-ianchiu,代码行数:11,代码来源:HandleEqualsAndHashCode.java
示例8: returnVarNameIfNullCheck
import com.sun.tools.javac.tree.JCTree.JCBinary; //导入依赖的package包/类
/**
* Checks if the statement is of the form 'if (x == null) {throw WHATEVER;},
* where the block braces are optional. If it is of this form, returns "x".
* If it is not of this form, returns null.
*/
public String returnVarNameIfNullCheck(JCStatement stat) {
if (!(stat instanceof JCIf)) return null;
/* Check that the if's statement is a throw statement, possibly in a block. */ {
JCStatement then = ((JCIf) stat).thenpart;
if (then instanceof JCBlock) {
List<JCStatement> stats = ((JCBlock) then).stats;
if (stats.length() == 0) return null;
then = stats.get(0);
}
if (!(then instanceof JCThrow)) return null;
}
/* Check that the if's conditional is like 'x == null'. Return from this method (don't generate
a nullcheck) if 'x' is equal to our own variable's name: There's already a nullcheck here. */ {
JCExpression cond = ((JCIf) stat).cond;
while (cond instanceof JCParens) cond = ((JCParens) cond).expr;
if (!(cond instanceof JCBinary)) return null;
JCBinary bin = (JCBinary) cond;
if (!CTC_EQUAL.equals(treeTag(bin))) return null;
if (!(bin.lhs instanceof JCIdent)) return null;
if (!(bin.rhs instanceof JCLiteral)) return null;
if (!CTC_BOT.equals(typeTag(bin.rhs))) return null;
return ((JCIdent) bin.lhs).name.toString();
}
}
开发者ID:git03394538,项目名称:lombok-ianchiu,代码行数:32,代码来源:HandleNonNull.java
示例9: visitBinary
import com.sun.tools.javac.tree.JCTree.JCBinary; //导入依赖的package包/类
public void visitBinary(JCBinary that) {
try {
print("JCBinary:");
} catch (Exception e) {
}
super.visitBinary(that);
}
开发者ID:pcgomes,项目名称:javaparser2jctree,代码行数:8,代码来源:PrintAstVisitor.java
示例10: visitBinary
import com.sun.tools.javac.tree.JCTree.JCBinary; //导入依赖的package包/类
public void visitBinary(JCBinary tree) {
try {
int ownprec = isOwnPrec(tree);
String opname = operatorName(treeTag(tree));
open(prec, ownprec);
printExpr(tree.lhs, ownprec);
print(" " + opname + " ");
printExpr(tree.rhs, ownprec + 1);
close(prec, ownprec);
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
开发者ID:mobmead,项目名称:EasyMPermission,代码行数:14,代码来源:PrettyCommentsPrinter.java
示例11: generateCompareFloatOrDouble
import com.sun.tools.javac.tree.JCTree.JCBinary; //导入依赖的package包/类
public JCStatement generateCompareFloatOrDouble(JCExpression thisDotField, JCExpression otherDotField,
JavacTreeMaker maker, JavacNode node, boolean isDouble) {
/* if (Float.compare(fieldName, other.fieldName) != 0) return false; */
JCExpression clazz = genJavaLangTypeRef(node, isDouble ? "Double" : "Float");
List<JCExpression> args = List.of(thisDotField, otherDotField);
JCBinary compareCallEquals0 = maker.Binary(CTC_NOT_EQUAL, maker.Apply(
List.<JCExpression>nil(), maker.Select(clazz, node.toName("compare")), args), maker.Literal(0));
return maker.If(compareCallEquals0, returnBool(maker, false), null);
}
开发者ID:mobmead,项目名称:EasyMPermission,代码行数:10,代码来源:HandleEqualsAndHashCode.java
示例12: inline
import com.sun.tools.javac.tree.JCTree.JCBinary; //导入依赖的package包/类
@Override
public JCBinary inline(Inliner inliner) throws CouldNotResolveImportException {
return inliner.maker().Binary(
OP_CODES.get(getKind()),
getLeftOperand().inline(inliner),
getRightOperand().inline(inliner));
}
开发者ID:sivakumar-kailasam,项目名称:refactor-faster,代码行数:8,代码来源:UBinary.java
示例13: visitBinary
import com.sun.tools.javac.tree.JCTree.JCBinary; //导入依赖的package包/类
@Override public void visitBinary(JCBinary tree) {
printNode(tree);
child("lhs", tree.lhs);
property("(operator)", operatorName(getTag(tree)));
child("rhs", tree.rhs);
indent--;
}
开发者ID:evant,项目名称:android-retrolambda-lombok,代码行数:8,代码来源:JcTreePrinter.java
示例14: visitBinary
import com.sun.tools.javac.tree.JCTree.JCBinary; //导入依赖的package包/类
@Override public void visitBinary(JCBinary node) {
BinaryExpression expr = new BinaryExpression();
expr.rawLeft(toTree(node.getLeftOperand()));
expr.rawRight(toTree(node.getRightOperand()));
expr.astOperator(JcTreeBuilder.BINARY_OPERATORS.inverse().get(getTag(node)));
set(node, expr);
}
开发者ID:evant,项目名称:android-retrolambda-lombok,代码行数:8,代码来源:JcTreeConverter.java
示例15: inline
import com.sun.tools.javac.tree.JCTree.JCBinary; //导入依赖的package包/类
@Override
public JCBinary inline(Inliner inliner) throws CouldNotResolveImportException {
return inliner
.maker()
.Binary(
OP_CODES.get(getKind()),
getLeftOperand().inline(inliner),
getRightOperand().inline(inliner));
}
开发者ID:google,项目名称:error-prone,代码行数:10,代码来源:UBinary.java
示例16: visitBinary
import com.sun.tools.javac.tree.JCTree.JCBinary; //导入依赖的package包/类
@Override
public Choice<State<JCBinary>> visitBinary(final BinaryTree node, State<?> state) {
final Tag tag = ((JCBinary) node).getTag();
return chooseSubtrees(
state,
s -> unifyExpression(node.getLeftOperand(), s),
s -> unifyExpression(node.getRightOperand(), s),
(l, r) -> maker().Binary(tag, l, r));
}
开发者ID:google,项目名称:error-prone,代码行数:10,代码来源:PlaceholderUnificationVisitor.java
示例17: rewriteCompoundAssignment
import com.sun.tools.javac.tree.JCTree.JCBinary; //导入依赖的package包/类
/** Desugars a compound assignment, making the cast explicit. */
private static Optional<Fix> rewriteCompoundAssignment(
CompoundAssignmentTree tree, VisitorState state) {
CharSequence var = state.getSourceForNode(tree.getVariable());
CharSequence expr = state.getSourceForNode(tree.getExpression());
if (var == null || expr == null) {
return Optional.absent();
}
switch (tree.getKind()) {
case RIGHT_SHIFT_ASSIGNMENT:
// narrowing the result of a signed right shift does not lose information
return Optional.absent();
default:
break;
}
Kind regularAssignmentKind = regularAssignmentFromCompound(tree.getKind());
String op = assignmentToString(regularAssignmentKind);
// Add parens to the rhs if necessary to preserve the current precedence
// e.g. 's -= 1 - 2' -> 's = s - (1 - 2)'
if (tree.getExpression() instanceof JCBinary) {
Kind rhsKind = tree.getExpression().getKind();
if (!OperatorPrecedence.from(rhsKind)
.isHigher(OperatorPrecedence.from(regularAssignmentKind))) {
expr = String.format("(%s)", expr);
}
}
// e.g. 's *= 42' -> 's = (short) (s * 42)'
String castType = getType(tree.getVariable()).toString();
String replacement = String.format("%s = (%s) (%s %s %s)", var, castType, var, op, expr);
return Optional.of(SuggestedFix.replace(tree, replacement));
}
开发者ID:google,项目名称:error-prone,代码行数:34,代码来源:NarrowingCompoundAssignment.java
示例18: visitBinary
import com.sun.tools.javac.tree.JCTree.JCBinary; //导入依赖的package包/类
public void visitBinary(JCBinary tree) {
try {
int ownprec = TreeInfo.opPrec(tree.getTag());
String opname = operatorName(tree.getTag());
open(prec, ownprec);
printExpr(tree.lhs, ownprec);
print(" " + opname + " ");
printExpr(tree.rhs, ownprec + 1);
close(prec, ownprec);
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
开发者ID:sebastianoe,项目名称:s4j,代码行数:14,代码来源:Pretty.java
示例19: visitBinary
import com.sun.tools.javac.tree.JCTree.JCBinary; //导入依赖的package包/类
public void visitBinary(JCBinary tree) {
try {
int ownprec = TreeInfo.opPrec(getTag(tree));
String opname = operatorName(getTag(tree));
open(prec, ownprec);
printExpr(tree.lhs, ownprec);
print(" " + opname + " ");
printExpr(tree.rhs, ownprec + 1);
close(prec, ownprec);
} catch (IOException e) {
throw new UncheckedIOException(e);
}
}
开发者ID:redundent,项目名称:lombok,代码行数:14,代码来源:PrettyCommentsPrinter.java
示例20: generateCompareFloatOrDouble
import com.sun.tools.javac.tree.JCTree.JCBinary; //导入依赖的package包/类
private JCStatement generateCompareFloatOrDouble(JCExpression thisDotField, JCExpression otherDotField,
TreeMaker maker, JavacNode node, boolean isDouble) {
/* if (Float.compare(fieldName, other.fieldName) != 0) return false; */
JCExpression clazz = chainDots(node, "java", "lang", isDouble ? "Double" : "Float");
List<JCExpression> args = List.of(thisDotField, otherDotField);
JCBinary compareCallEquals0 = maker.Binary(CTC_NOT_EQUAL, maker.Apply(
List.<JCExpression>nil(), maker.Select(clazz, node.toName("compare")), args), maker.Literal(0));
return maker.If(compareCallEquals0, returnBool(maker, false), null);
}
开发者ID:redundent,项目名称:lombok,代码行数:10,代码来源:HandleEqualsAndHashCode.java
注:本文中的com.sun.tools.javac.tree.JCTree.JCBinary类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论