class Protobuf::Field::BaseField
def define_array_setter
def define_array_setter field = self method_name = field.setter message_class.class_eval do define_method(method_name) do |val| if val.is_a?(Array) val = val.dup val.compact! else fail TypeError, <<-TYPE_ERROR Expected repeated value of type '#{field.type_class}' Got '#{val.class}' for repeated protobuf field #{field.name} TYPE_ERROR end if val.nil? || (val.respond_to?(:empty?) && val.empty?) @values.delete(field.name) else @values[field.name] ||= ::Protobuf::Field::FieldArray.new(field) @values[field.name].replace(val) end end ::Protobuf.deprecator.deprecate_methods(method_name) end end