private MetaClass inferType(final Context context, final Object initialization) { final Statement initStatement = GenUtil.generate(context, initialization); final MetaClass inferredType = (initStatement != null) ? initStatement.getType() : null; if (inferredType == null) { throw new InvalidTypeException("No type specified and no initialization provided to infer the type."); } return inferredType; }
private MetaClass inferType(final Context context, final Object initialization) { final Statement initStatement = GenUtil.generate(context, initialization); final MetaClass inferredType = (initStatement != null) ? initStatement.getType() : null; if (inferredType == null) { throw new InvalidTypeException("No type specified and no initialization provided to infer the type."); } return inferredType; }
private void checkSwitchExprType() { final boolean validType = supportedTypes.stream() .anyMatch(cls -> MetaClassFactory.get(cls).isAssignableFrom(switchExprStmt.getType().asBoxed())); if (!validType) throw new InvalidTypeException("Type not permitted in switch statements:" + switchExprStmt.getType().getFullyQualifiedName()); } }
private void checkSwitchExprType() { final boolean validType = supportedTypes.stream() .anyMatch(cls -> MetaClassFactory.get(cls).isAssignableFrom(switchExprStmt.getType().asBoxed())); if (!validType) throw new InvalidTypeException("Type not permitted in switch statements:" + switchExprStmt.getType().getFullyQualifiedName()); } }
@Override public String generate(Context context) { StringBuilder buf = new StringBuilder(); try { buf.append("throw "); if (throwableType != null) { buf.append(ObjectBuilder.newInstanceOf(throwableType).withParameters(parameters).generate(context)); } else { VariableReference exceptionVar = context.getVariable(exceptionVariableName); if (!exceptionVar.getType().isAssignableTo(Throwable.class)) { throw new InvalidTypeException("Variable " + exceptionVariableName + " is not a Throwable"); } buf.append(exceptionVar.generate(context)); } } catch (GenerationException e) { blameAndRethrow(e); } return buf.toString(); } };
@Override public String generate(Context context) { StringBuilder buf = new StringBuilder(); try { buf.append("throw "); if (throwableType != null) { buf.append(ObjectBuilder.newInstanceOf(throwableType).withParameters(parameters).generate(context)); } else { VariableReference exceptionVar = context.getVariable(exceptionVariableName); if (!exceptionVar.getType().isAssignableTo(Throwable.class)) { throw new InvalidTypeException("Variable " + exceptionVariableName + " is not a Throwable"); } buf.append(exceptionVar.generate(context)); } } catch (GenerationException e) { blameAndRethrow(e); } return buf.toString(); } };
for (final LiteralValue<?> value : caseBlocks.keySet()) { if (!switchExprMetaClass.isAssignableFrom(value.getType().getErased())) { throw new InvalidTypeException( value.generate(context) + " is not a valid value for " + switchExprStmt.getType().getFullyQualifiedName());
for (final LiteralValue<?> value : caseBlocks.keySet()) { if (!switchExprMetaClass.isAssignableFrom(value.getType().getErased())) { throw new InvalidTypeException( value.generate(context) + " is not a valid value for " + switchExprStmt.getType().getFullyQualifiedName());
throw new InvalidTypeException(nfe);
throw new InvalidTypeException(nfe);
appendCallElement(new DeferredCallElement((writer, context1, statement) -> { if (extendsBlock == null && (type.isAbstract() || type.isInterface() || type.isPrimitive())) throw new InvalidTypeException("Cannot instantiate type:" + type, blame);
appendCallElement(new DeferredCallElement((writer, context1, statement) -> { if (extendsBlock == null && (type.isAbstract() || type.isInterface() || type.isPrimitive())) throw new InvalidTypeException("Cannot instantiate type:" + type, blame);
public static void assertAssignableTypes(final Context context, final MetaClass from, final MetaClass to) { if (!to.asBoxed().isAssignableFrom(from.asBoxed())) { if (to.isArray() && from.isArray() && GenUtil.getArrayDimensions(to) == GenUtil.getArrayDimensions(from) && to.getOuterComponentType().isAssignableFrom(from.getOuterComponentType())) { return; } if (!context.isPermissiveMode()) { if (classAliases.contains(from.getFullyQualifiedName()) && classAliases.contains(to.getFullyQualifiedName())) { // handle convertibility between MetaClass API and java Class reference. return; } throw new InvalidTypeException(to.getFullyQualifiedName() + " is not assignable from " + from.getFullyQualifiedName()); } } }
public static void assertAssignableTypes(final Context context, final MetaClass from, final MetaClass to) { if (!to.asBoxed().isAssignableFrom(from.asBoxed())) { if (to.isArray() && from.isArray() && GenUtil.getArrayDimensions(to) == GenUtil.getArrayDimensions(from) && to.getOuterComponentType().isAssignableFrom(from.getOuterComponentType())) { return; } if (!context.isPermissiveMode()) { if (classAliases.contains(from.getFullyQualifiedName()) && classAliases.contains(to.getFullyQualifiedName())) { // handle convertibility between MetaClass API and java Class reference. return; } throw new InvalidTypeException(to.getFullyQualifiedName() + " is not assignable from " + from.getFullyQualifiedName()); } } }
@Override public String generate(final Context context) { final String stmt = statement.generate(context); if (!toType.isPrimitive() && !toType.isAssignableFrom(statement.getType()) && !toType.isAssignableTo(statement.getType()) && !toType.isInterface() && !statement.getType().asBoxed().equals(toType)) { if (context.isPermissiveMode()) { return "(" + LoadClassReference.getClassReference(toType, context) + ") " + stmt; } else { throw new InvalidTypeException(statement.getType() + " cannot be cast to " + toType); } } else if (toType.isAssignableFrom(statement.getType()) && !statement.getType().equals(MetaClassFactory.get(NullType.class))) { return stmt; } else { return "(" + LoadClassReference.getClassReference(toType, context) + ") " + stmt; } }
@Override public String generate(final Context context) { final String stmt = statement.generate(context); if (!toType.isPrimitive() && !toType.isAssignableFrom(statement.getType()) && !toType.isAssignableTo(statement.getType()) && !toType.isInterface() && !statement.getType().asBoxed().equals(toType)) { if (context.isPermissiveMode()) { return "(" + LoadClassReference.getClassReference(toType, context) + ") " + stmt; } else { throw new InvalidTypeException(statement.getType() + " cannot be cast to " + toType); } } else if (toType.isAssignableFrom(statement.getType()) && !statement.getType().equals(MetaClassFactory.get(NullType.class))) { return stmt; } else { return "(" + LoadClassReference.getClassReference(toType, context) + ") " + stmt; } }
@Override public String generate(final Context context) { MetaClass referenceType = reference.getType(); final Statement[] indexes = reference.getIndexes(); if (indexes!=null) { for (final Statement index : indexes) { if (!referenceType.isArray()) throw new InvalidTypeException("Variable is not a " + indexes.length + "-dimensional array!"); referenceType = referenceType.getComponentType(); } } operator.assertCanBeApplied(referenceType); operator.assertCanBeApplied(statement.getType()); return reference.generate(context) + generateIndexes(context, indexes) + " " + operator.getCanonicalString() + " " + statement.generate(context); }
@Override public String generate(final Context context) { MetaClass referenceType = reference.getType(); final Statement[] indexes = reference.getIndexes(); if (indexes!=null) { for (final Statement index : indexes) { if (!referenceType.isArray()) throw new InvalidTypeException("Variable is not a " + indexes.length + "-dimensional array!"); referenceType = referenceType.getComponentType(); } } operator.assertCanBeApplied(referenceType); operator.assertCanBeApplied(statement.getType()); return reference.generate(context) + generateIndexes(context, indexes) + " " + operator.getCanonicalString() + " " + statement.generate(context); }
throw new InvalidTypeException("attempt to use indexed accessor on non-array type: " + ref);
throw new InvalidTypeException("attempt to use indexed accessor on non-array type: " + ref);