|
@@ -595,12 +595,20 @@ static void check_repeated_field_type(VALUE val, const upb_fielddef* field) {
|
|
|
rb_raise(rb_eTypeError, "Repeated field array has wrong element type");
|
|
|
}
|
|
|
|
|
|
- if (self->field_type == UPB_TYPE_MESSAGE ||
|
|
|
- self->field_type == UPB_TYPE_ENUM) {
|
|
|
+ if (self->field_type == UPB_TYPE_MESSAGE) {
|
|
|
if (self->field_type_class !=
|
|
|
Descriptor_msgclass(get_def_obj(upb_fielddef_subdef(field)))) {
|
|
|
rb_raise(rb_eTypeError,
|
|
|
- "Repeated field array has wrong message/enum class");
|
|
|
+ "Repeated field array has wrong message class");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if (self->field_type == UPB_TYPE_ENUM) {
|
|
|
+ if (self->field_type_class !=
|
|
|
+ EnumDescriptor_enummodule(get_def_obj(upb_fielddef_subdef(field)))) {
|
|
|
+ rb_raise(rb_eTypeError,
|
|
|
+ "Repeated field array has wrong enum class");
|
|
|
}
|
|
|
}
|
|
|
}
|