if (value instanceof String) { result = Literal(CLASS, value). setType(syms.stringType.constType(value)); } else if (value instanceof Integer) { result = Literal(INT, value). setType(syms.intType.constType(value)); } else if (value instanceof Long) { result = Literal(LONG, value). setType(syms.longType.constType(value)); } else if (value instanceof Byte) { result = Literal(BYTE, value). setType(syms.byteType.constType(value)); } else if (value instanceof Character) { int v = (int) (((Character) value).toString().charAt(0)); result = Literal(CHAR, value). setType(syms.charType.constType(v)); } else if (value instanceof Double) { result = Literal(DOUBLE, value). setType(syms.doubleType.constType(value)); } else if (value instanceof Float) { result = Literal(FLOAT, value). setType(syms.floatType.constType(value)); } else if (value instanceof Short) { result = Literal(SHORT, value). setType(syms.shortType.constType(value)); } else if (value instanceof Boolean) { int v = ((Boolean) value) ? 1 : 0; result = Literal(BOOLEAN, v). setType(syms.booleanType.constType(v));
if (value instanceof String) { result = Literal(CLASS, value). setType(syms.stringType.constType(value)); } else if (value instanceof Integer) { result = Literal(INT, value). setType(syms.intType.constType(value)); } else if (value instanceof Long) { result = Literal(LONG, value). setType(syms.longType.constType(value)); } else if (value instanceof Byte) { result = Literal(BYTE, value). setType(syms.byteType.constType(value)); } else if (value instanceof Character) { int v = (int) (((Character) value).toString().charAt(0)); result = Literal(CHAR, value). setType(syms.charType.constType(v)); } else if (value instanceof Double) { result = Literal(DOUBLE, value). setType(syms.doubleType.constType(value)); } else if (value instanceof Float) { result = Literal(FLOAT, value). setType(syms.floatType.constType(value)); } else if (value instanceof Short) { result = Literal(SHORT, value). setType(syms.shortType.constType(value)); } else if (value instanceof Boolean) { int v = ((Boolean) value) ? 1 : 0; result = Literal(BOOLEAN, v). setType(syms.booleanType.constType(v));
List.<JCExpression>of(make.Literal(CLASS, sig) .setType(syms.stringType)))) .setType(types.erasure(syms.classType)), make.Ident(cs)).setType(types.erasure(syms.classType)); default:
List.<JCExpression>of(make.Literal(INT, 0).setType(syms.intType)), null); newcache.type = new ArrayType(types.erasure(outerCacheClass.type),
List.<JCExpression>of(make.Literal(INT, 0).setType(syms.intType)), null); newcache.type = new ArrayType(types.erasure(outerCacheClass.type),
List.<JCExpression>of(make.Literal(INT, 0).setType(syms.intType)), null); newcache.type = new ArrayType(types.erasure(outerCacheClass.type),
List.<JCExpression>of(make.Literal(INT, 0).setType(syms.intType)), null); newcache.type = new ArrayType(types.erasure(outerCacheClass.type),
trans_block.stats = trans_block.stats.append(make.Return(make.Literal(BOT, null).setType(syms.botType)));
make.Ident(classDollarSym(pos)), List.<JCExpression>of(make.Literal(CLASS, sig) .setType(syms.stringType)))) .setType(types.erasure(syms.classType)), make.Ident(cs)).setType(types.erasure(syms.classType));
make.Ident(classDollarSym(pos)), List.<JCExpression>of(make.Literal(CLASS, sig) .setType(syms.stringType)))) .setType(types.erasure(syms.classType)), make.Ident(cs)).setType(types.erasure(syms.classType));
List.<JCExpression>of(make.Literal(CLASS, sig) .setType(syms.stringType)))) .setType(types.erasure(syms.classType)), make.Ident(cs)).setType(types.erasure(syms.classType)); default:
if (value instanceof String) { result = Literal(CLASS, value). setType(syms.stringType.constType(value)); } else if (value instanceof Integer) { result = Literal(INT, value). setType(syms.intType.constType(value)); } else if (value instanceof Long) { result = Literal(LONG, value). setType(syms.longType.constType(value)); } else if (value instanceof Byte) { result = Literal(BYTE, value). setType(syms.byteType.constType(value)); } else if (value instanceof Character) { result = Literal(CHAR, value). setType(syms.charType.constType(value)); } else if (value instanceof Double) { result = Literal(DOUBLE, value). setType(syms.doubleType.constType(value)); } else if (value instanceof Float) { result = Literal(FLOAT, value). setType(syms.floatType.constType(value)); } else if (value instanceof Short) { result = Literal(SHORT, value). setType(syms.shortType.constType(value)); } else { throw new AssertionError(value);
private JCBlock makeLambdaExpressionBody(JCExpression expr, JCMethodDecl lambdaMethodDecl) { Type restype = lambdaMethodDecl.type.getReturnType(); boolean isLambda_void = expr.type.hasTag(VOID); boolean isTarget_void = restype.hasTag(VOID); boolean isTarget_Void = types.isSameType(restype, types.boxedClass(syms.voidType).type); int prevPos = make.pos; try { if (isTarget_void) { //target is void: // BODY; JCStatement stat = make.at(expr).Exec(expr); return make.Block(0, List.<JCStatement>of(stat)); } else if (isLambda_void && isTarget_Void) { //void to Void conversion: // BODY; return null; ListBuffer<JCStatement> stats = new ListBuffer<>(); stats.append(make.at(expr).Exec(expr)); stats.append(make.Return(make.Literal(BOT, null).setType(syms.botType))); return make.Block(0, stats.toList()); } else { //non-void to non-void conversion: // return (TYPE)BODY; JCExpression retExpr = transTypes.coerce(attrEnv, expr, restype); return make.at(retExpr).Block(0, List.<JCStatement>of(make.Return(retExpr))); } } finally { make.at(prevPos); } }
trans_block.stats = trans_block.stats.append(make.Return(make.Literal(BOT, null).setType(syms.botType)));
if (value instanceof String) { result = Literal(CLASS, value). setType(syms.stringType.constType(value)); } else if (value instanceof Integer) { result = Literal(INT, value). setType(syms.intType.constType(value)); } else if (value instanceof Long) { result = Literal(LONG, value). setType(syms.longType.constType(value)); } else if (value instanceof Byte) { result = Literal(BYTE, value). setType(syms.byteType.constType(value)); } else if (value instanceof Character) { result = Literal(CHAR, value). setType(syms.charType.constType(value)); } else if (value instanceof Double) { result = Literal(DOUBLE, value). setType(syms.doubleType.constType(value)); } else if (value instanceof Float) { result = Literal(FLOAT, value). setType(syms.floatType.constType(value)); } else if (value instanceof Short) { result = Literal(SHORT, value). setType(syms.shortType.constType(value)); } else { throw new AssertionError(value);
private JCBlock makeLambdaExpressionBody(JCExpression expr, JCMethodDecl lambdaMethodDecl) { Type restype = lambdaMethodDecl.type.getReturnType(); boolean isLambda_void = expr.type.hasTag(VOID); boolean isTarget_void = restype.hasTag(VOID); boolean isTarget_Void = types.isSameType(restype, types.boxedClass(syms.voidType).type); int prevPos = make.pos; try { if (isTarget_void) { //target is void: // BODY; JCStatement stat = make.at(expr).Exec(expr); return make.Block(0, List.<JCStatement>of(stat)); } else if (isLambda_void && isTarget_Void) { //void to Void conversion: // BODY; return null; ListBuffer<JCStatement> stats = new ListBuffer<>(); stats.append(make.at(expr).Exec(expr)); stats.append(make.Return(make.Literal(BOT, null).setType(syms.botType))); return make.Block(0, stats.toList()); } else { //non-void to non-void conversion: // return (TYPE)BODY; JCExpression retExpr = transTypes.coerce(attrEnv, expr, restype); return make.at(retExpr).Block(0, List.<JCStatement>of(make.Return(retExpr))); } } finally { make.at(prevPos); } }
/** Make an attributed tree representing a literal. This will be an * Ident node in the case of boolean literals, a Literal node in all * other cases. * @param type The literal's type. * @param value The literal's value. */ JCExpression makeLit(Type type, Object value) { return make.Literal(type.getTag(), value).setType(type.constType(value)); }
/** Make an attributed tree representing a literal. This will be an * Ident node in the case of boolean literals, a Literal node in all * other cases. * @param type The literal's type. * @param value The literal's value. */ JCExpression makeLit(Type type, Object value) { return make.Literal(type.getTag(), value).setType(type.constType(value)); }
/** Make an attributed tree representing a literal. This will be an * Ident node in the case of boolean literals, a Literal node in all * other cases. * @param type The literal's type. * @param value The literal's value. */ JCExpression makeLit(Type type, Object value) { return make.Literal(type.tag, value).setType(type.constType(value)); }
/** Make an attributed tree representing a literal. This will be an * Ident node in the case of boolean literals, a Literal node in all * other cases. * @param type The literal's type. * @param value The literal's value. */ JCExpression makeLit(Type type, Object value) { return make.Literal(type.tag, value).setType(type.constType(value)); }