当前位置: 首页>>代码示例>>Java>>正文


Java JCLiteral类代码示例

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


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

示例1: test

import com.sun.tools.javac.tree.JCTree.JCLiteral; //导入依赖的package包/类
void test(Object value, TypeTag tag, Type type, Object constValue) {
    JCLiteral l = maker.Literal(value);
    if (!l.type.hasTag(tag))
        error("unexpected tag: " + l.getTag() + ": expected: " + tag);
    if (!types.isSameType(l.type, type))
        error("unexpected type: " + l.type + ": expected: " + type);
    if (l.type.constValue().getClass() != constValue.getClass()
            || !constValue.equals(l.type.constValue()))  {
        error("unexpected const value: "
                + l.type.constValue().getClass() + " " + l.type.constValue()
                + ": expected:" + constValue.getClass() + " " + constValue);
    }
    if (l.getValue().getClass() != value.getClass()
            || !value.equals(l.getValue()))  {
        error("unexpected const value: "
                + l.getValue().getClass() + " " + l.type.constValue()
                + ": expected:" + value.getClass() + " " + value);
    }
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:20,代码来源:MakeLiteralTest.java

示例2: calculateGuess

import com.sun.tools.javac.tree.JCTree.JCLiteral; //导入依赖的package包/类
/**
 * Turns an expression into a guessed intended literal. Only works for
 * literals, as you can imagine.
 * 
 * Will for example turn a TrueLiteral into 'Boolean.valueOf(true)'.
 */
public static Object calculateGuess(JCExpression expr) {
	if (expr instanceof JCLiteral) {
		JCLiteral lit = (JCLiteral) expr;
		if (lit.getKind() == com.sun.source.tree.Tree.Kind.BOOLEAN_LITERAL) {
			return ((Number) lit.value).intValue() == 0 ? false : true;
		}
		return lit.value;
	} else if (expr instanceof JCIdent || expr instanceof JCFieldAccess) {
		String x = expr.toString();
		if (x.endsWith(".class")) x = x.substring(0, x.length() - 6);
		else {
			int idx = x.lastIndexOf('.');
			if (idx > -1) x = x.substring(idx + 1);
		}
		return x;
	} else
		return null;
}
 
开发者ID:git03394538,项目名称:lombok-ianchiu,代码行数:25,代码来源:Javac.java

示例3: visitLiteral

import com.sun.tools.javac.tree.JCTree.JCLiteral; //导入依赖的package包/类
public void visitLiteral(JCLiteral tree) {
	TypeTag typeTag = typeTag(tree);
	try {
		if (CTC_INT.equals(typeTag)) print(tree.value.toString());
		else if (CTC_LONG.equals(typeTag)) print(tree.value + "L");
		else if (CTC_FLOAT.equals(typeTag)) print(tree.value + "F");
		else if (CTC_DOUBLE.equals(typeTag)) print(tree.value.toString());
		else if (CTC_CHAR.equals(typeTag)) {
			print("\'" + quoteChar((char)((Number)tree.value).intValue()) + "\'");
		}
		else if (CTC_BOOLEAN.equals(typeTag)) print(((Number)tree.value).intValue() == 1 ? "true" : "false");
		else if (CTC_BOT.equals(typeTag)) print("null");
		else print("\"" + quoteChars(tree.value.toString()) + "\"");
	} catch (IOException e) {
		throw new UncheckedIOException(e);
	}
}
 
开发者ID:mobmead,项目名称:EasyMPermission,代码行数:18,代码来源:PrettyCommentsPrinter.java

示例4: inline

import com.sun.tools.javac.tree.JCTree.JCLiteral; //导入依赖的package包/类
@Override
public JCLiteral inline(Inliner inliner) {
  Object value = this.getValue();
  switch (getKind()) {
    case CHAR_LITERAL:
      // Why do they do it like this?  I wish I knew.
      value = (int) ((Character) value).charValue();
      break;
    case BOOLEAN_LITERAL:
      value = ((Boolean) value) ? 1 : 0;
      break;
    default:
      // do nothing
  }
  return inliner.maker().Literal(LIT_KIND_TAG.get(getKind()), value);
}
 
开发者ID:sivakumar-kailasam,项目名称:refactor-faster,代码行数:17,代码来源:ULiteral.java

示例5: hasTrueValue

import com.sun.tools.javac.tree.JCTree.JCLiteral; //导入依赖的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

示例6: constValue

import com.sun.tools.javac.tree.JCTree.JCLiteral; //导入依赖的package包/类
/** Returns the compile-time constant value of a tree if it has one, or {@code null}. */
@Nullable
public static Object constValue(Tree tree) {
  if (tree == null) {
    return null;
  }
  tree = stripParentheses(tree);
  Type type = ASTHelpers.getType(tree);
  Object value;
  if (tree instanceof JCLiteral) {
    value = ((JCLiteral) tree).value;
  } else if (type != null) {
    value = type.constValue();
  } else {
    return null;
  }
  if (type.hasTag(TypeTag.BOOLEAN) && value instanceof Integer) {
    return ((Integer) value) == 1;
  }
  return value;
}
 
开发者ID:google,项目名称:error-prone,代码行数:22,代码来源:ASTHelpers.java

示例7: matchBinary

import com.sun.tools.javac.tree.JCTree.JCLiteral; //导入依赖的package包/类
@Override
public Description matchBinary(BinaryTree tree, VisitorState state) {
  if (!(tree.getLeftOperand() instanceof JCLiteral)) {
    return Description.NO_MATCH;
  }
  if (!(tree.getRightOperand() instanceof JCLiteral)) {
    return Description.NO_MATCH;
  }
  Boolean constValue = ASTHelpers.constValue(tree, Boolean.class);
  if (constValue == null) {
    return Description.NO_MATCH;
  }
  return buildDescription(tree)
      .addFix(SuggestedFix.replace(tree, constValue.toString()))
      .setMessage(
          String.format(
              "This expression always evalutes to `%s`, prefer a boolean literal for clarity.",
              constValue))
      .build();
}
 
开发者ID:google,项目名称:error-prone,代码行数:21,代码来源:ComplexBooleanConstant.java

示例8: verifyPrintf

import com.sun.tools.javac.tree.JCTree.JCLiteral; //导入依赖的package包/类
private void verifyPrintf(MethodInvocationTree tree, FormatParameters parameters)
    throws FormatFlagsConversionMismatchException, IllegalFormatException, FormatterException {
   List<? extends ExpressionTree> args = tree.getArguments();

  JCLiteral format = (JCLiteral) args.get(parameters.getFormatIndex());
  String formatString = (String) format.getValue();

  List<String> argTypes = new ArrayList<String>();
  for (int i = parameters.getFormatIndex() + 1; i < args.size(); ++i) {
    Type type = ((JCExpression) args.get(i)).type;
    argTypes.add(getFormatterType(type));
  }

  try {
    Formatter.check(formatString, argTypes.toArray(new String[0]));
  } catch (ExtraFormatArgumentsException e) {
    return; // We can handle this.
  }
}
 
开发者ID:diy1,项目名称:error-prone-aspirator,代码行数:20,代码来源:MisusedFormattingLogger.java

示例9: hashCode

import com.sun.tools.javac.tree.JCTree.JCLiteral; //导入依赖的package包/类
/**
 * Note: Do not include node.toString() as part of the hash or the equals.  We generate
 * the WrappedTreeMap after the parse phase, but we compare after the flow phase.  The
 * attribute phase may alter the structure of the AST nodes such that their string
 * representations no longer match.  For example, annotation nodes after the parse phase look
 * like:
 * @SuppressWarnings("foo")
 * But after the flow phase, they look like:
 * @SuppressWarnings(value = "foo")
 */
@Override
public int hashCode() {
  int result = 17;
  result = 31 * result + node.getStartPosition();
  result = 31 * result + node.getPreferredPosition();
  try {
    result = 31 * result + node.getKind().ordinal();
  } catch (AssertionError e) {
    // getKind() throws an AssertionError for LetExpr and TypeBoundKind. Ignore it for 
    // calculating the hash code.
  }
  result = 31 * result + JDKCompatible.getJCTreeTag(node);
  if (node instanceof JCLiteral) {
    Object value = ((JCLiteral) node).getValue();
    if (value != null) {
      result = 31 * result + value.hashCode();
    }
  }
  return result;
}
 
开发者ID:diy1,项目名称:error-prone-aspirator,代码行数:31,代码来源:WrappedTreeMap.java

示例10: calculateGuess

import com.sun.tools.javac.tree.JCTree.JCLiteral; //导入依赖的package包/类
/**
 * Turns an expression into a guessed intended literal. Only works for literals, as you can imagine.
 * 
 * Will for example turn a TrueLiteral into 'Boolean.valueOf(true)'.
 */
public static Object calculateGuess(JCExpression expr) {
	if (expr instanceof JCLiteral) {
		JCLiteral lit = (JCLiteral)expr;
		if (lit.getKind() == com.sun.source.tree.Tree.Kind.BOOLEAN_LITERAL) {
			return ((Number)lit.value).intValue() == 0 ? false : true;
		}
		return lit.value;
	} else if (expr instanceof JCIdent || expr instanceof JCFieldAccess) {
		String x = expr.toString();
		if (x.endsWith(".class")) x = x.substring(0, x.length() - 6);
		else {
			int idx = x.lastIndexOf('.');
			if (idx > -1) x = x.substring(idx + 1);
		}
		return x;
	} else return null;
}
 
开发者ID:redundent,项目名称:lombok,代码行数:23,代码来源:Javac.java

示例11: diffLiteral

import com.sun.tools.javac.tree.JCTree.JCLiteral; //导入依赖的package包/类
protected int diffLiteral(JCLiteral oldT, JCLiteral newT, int[] bounds) {
    if (oldT.typetag != newT.typetag ||
       (oldT.value != null && !oldT.value.equals(newT.value)))
    {
        int localPointer = bounds[0];
        // literal
        int[] literalBounds = getBounds(oldT);
        copyTo(localPointer, literalBounds[0]);
        printer.print(newT);
        copyTo(literalBounds[1], bounds[1]);
    } else {
        copyTo(bounds[0], bounds[1]);
    }
    return bounds[1];
}
 
开发者ID:apache,项目名称:incubator-netbeans,代码行数:16,代码来源:CasualDiff.java

示例12: visitVarDef

import com.sun.tools.javac.tree.JCTree.JCLiteral; //导入依赖的package包/类
/**
 * field definitions: replace initializers with 0, 0.0, false etc
 * when possible -- i.e. leave public, protected initializers alone
 */
@Override
public void visitVarDef(JCVariableDecl tree) {
    tree.mods = translate(tree.mods);
    tree.vartype = translate(tree.vartype);
    if (tree.init != null) {
        if ((tree.mods.flags & (Flags.PUBLIC | Flags.PROTECTED)) != 0)
            tree.init = translate(tree.init);
        else {
            String t = tree.vartype.toString();
            if (t.equals("boolean"))
                tree.init = new JCLiteral(TypeTag.BOOLEAN, 0) { };
            else if (t.equals("byte"))
                tree.init = new JCLiteral(TypeTag.BYTE, 0) { };
            else if (t.equals("char"))
                tree.init = new JCLiteral(TypeTag.CHAR, 0) { };
            else if (t.equals("double"))
                tree.init = new JCLiteral(TypeTag.DOUBLE, 0.d) { };
            else if (t.equals("float"))
                tree.init = new JCLiteral(TypeTag.FLOAT, 0.f) { };
            else if (t.equals("int"))
                tree.init = new JCLiteral(TypeTag.INT, 0) { };
            else if (t.equals("long"))
                tree.init = new JCLiteral(TypeTag.LONG, 0) { };
            else if (t.equals("short"))
                tree.init = new JCLiteral(TypeTag.SHORT, 0) { };
            else
                tree.init = new JCLiteral(TypeTag.BOT, null) { };
        }
    }
    result = tree;
}
 
开发者ID:AdoptOpenJDK,项目名称:openjdk-jdk10,代码行数:36,代码来源:GenStubs.java

示例13: visitLiteral

import com.sun.tools.javac.tree.JCTree.JCLiteral; //导入依赖的package包/类
@Override public void visitLiteral(JCLiteral tree) {
	TypeTag typeTag = typeTag(tree);
	if (CTC_INT.equals(typeTag)) print("" + tree.value);
	else if (CTC_LONG.equals(typeTag)) print(tree.value + "L");
	else if (CTC_FLOAT.equals(typeTag)) print(tree.value + "F");
	else if (CTC_DOUBLE.equals(typeTag)) print("" + tree.value);
	else if (CTC_CHAR.equals(typeTag)) {
		print("\'" + quoteChar((char)((Number)tree.value).intValue()) + "\'");
	}
	else if (CTC_BOOLEAN.equals(typeTag)) print(((Number)tree.value).intValue() == 1 ? "true" : "false");
	else if (CTC_BOT.equals(typeTag)) print("null");
	else print("\"" + quoteChars(tree.value.toString()) + "\"");
}
 
开发者ID:git03394538,项目名称:lombok-ianchiu,代码行数:14,代码来源:PrettyPrinter.java

示例14: returnVarNameIfNullCheck

import com.sun.tools.javac.tree.JCTree.JCLiteral; //导入依赖的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

示例15: test

import com.sun.tools.javac.tree.JCTree.JCLiteral; //导入依赖的package包/类
void test(Object value, TypeTag tag, Type type, Object constValue) {
    JCLiteral l = maker.Literal(value);
    if (!l.type.hasTag(tag))
        error("unexpected tag: " + l.getTag() + ": expected: " + tag);
    if (!types.isSameType(l.type, type))
        error("unexpected type: " + l.type + ": expected: " + type);
    if (l.type.constValue().getClass() != constValue.getClass()
            || !constValue.equals(l.type.constValue()))  {
        error("unexpected const value: "
                + l.type.constValue().getClass() + " " + l.type.constValue()
                + ": expected:" + constValue.getClass() + " " + constValue);
    }
}
 
开发者ID:ojdkbuild,项目名称:lookaside_java-1.8.0-openjdk,代码行数:14,代码来源:MakeLiteralTest.java


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