private void generateInitialization(Context context, StringBuilder buf, Object values) { buf.append("{ "); int length = Array.getLength(values); for (int i = 0; i < length; i++) { Object element = Array.get(values, i); if (element.getClass().isArray()) { generateInitialization(context, buf, element); } else { Statement statement = GenUtil.generate(context, element); String statementExpr = statement.generate(context); GenUtil.assertAssignableTypes(context, statement.getType(), componentType); buf.append(statementExpr); } if (i + 1 < length) { buf.append(", "); } } buf.append(" }"); } }
private void generateInitialization(Context context, StringBuilder buf, Object values) { buf.append("{ "); int length = Array.getLength(values); for (int i = 0; i < length; i++) { Object element = Array.get(values, i); if (element.getClass().isArray()) { generateInitialization(context, buf, element); } else { Statement statement = GenUtil.generate(context, element); String statementExpr = statement.generate(context); GenUtil.assertAssignableTypes(context, statement.getType(), componentType); buf.append(statementExpr); } if (i + 1 < length) { buf.append(", "); } } buf.append(" }"); } }
assertAssignableTypes(context, ((Statement) input).getType(), targetType); return (Statement) input;
assertAssignableTypes(context, ((Statement) input).getType(), targetType); return (Statement) input;
private Variable createForEachLoopVar(Statement collection, String loopVarName, MetaClass providedLoopVarType, Context context) { // infer the loop variable type MetaClass loopVarType = MetaClassFactory.get(Object.class); final MetaParameterizedType parameterizedType = collection.getType().getParameterizedType(); if (parameterizedType != null && parameterizedType.getTypeParameters().length != 0 && parameterizedType.getTypeParameters()[0] instanceof MetaClass) { loopVarType = (MetaClass) parameterizedType.getTypeParameters()[0]; } else if (collection.getType().getComponentType() != null) { loopVarType = collection.getType().getComponentType(); } // try to use the provided loop variable type if possible (assignable from the inferred type) if (providedLoopVarType != null) { GenUtil.assertAssignableTypes(context, loopVarType, providedLoopVarType); loopVarType = providedLoopVarType; } final Variable loopVar = Variable.create(loopVarName, loopVarType); context.addVariable(loopVar); return loopVar; }
private Variable createForEachLoopVar(Statement collection, String loopVarName, MetaClass providedLoopVarType, Context context) { // infer the loop variable type MetaClass loopVarType = MetaClassFactory.get(Object.class); final MetaParameterizedType parameterizedType = collection.getType().getParameterizedType(); if (parameterizedType != null && parameterizedType.getTypeParameters().length != 0 && parameterizedType.getTypeParameters()[0] instanceof MetaClass) { loopVarType = (MetaClass) parameterizedType.getTypeParameters()[0]; } else if (collection.getType().getComponentType() != null) { loopVarType = collection.getType().getComponentType(); } // try to use the provided loop variable type if possible (assignable from the inferred type) if (providedLoopVarType != null) { GenUtil.assertAssignableTypes(context, loopVarType, providedLoopVarType); loopVarType = providedLoopVarType; } final Variable loopVar = Variable.create(loopVarName, loopVarType); context.addVariable(loopVar); return loopVar; }