@Override public List<CompatibilityError> accept(Context context, FieldType input, FieldType output) { TypeName inputType = input.getTypeName(); TypeName outputType = output.getTypeName(); boolean supertype = outputType.isSupertypeOf(inputType); if (isIntegral(inputType) && isDecimal(outputType)) { return Collections.emptyList(); } else if (!supertype) { return Collections.singletonList( CompatibilityError.create( context.path(), "Can't cast '" + inputType + "' to '" + outputType + "'")); } return Collections.emptyList(); } }
@Override public List<CompatibilityError> accept(Context context, FieldType input, FieldType output) { TypeName inputType = input.getTypeName(); TypeName outputType = output.getTypeName(); boolean supertype = outputType.isSupertypeOf(inputType); boolean subtype = outputType.isSubtypeOf(inputType); if (isDecimal(inputType) && isIntegral(outputType)) { return Collections.emptyList(); } else if (!supertype && !subtype) { return Collections.singletonList( CompatibilityError.create( context.path(), "Can't cast '" + inputType + "' to '" + outputType + "'")); } return Collections.emptyList(); } }