class Protobuf::Field::BaseField
def define_array_setter
def define_array_setter field = self @message_class.class_eval do define_method(field.setter_method_name) do |val| field.warn_if_deprecated if val.is_a?(Array) val = val.dup val.compact! else error_text = <<-TYPE_ERROR Expected repeated value of type '#{field.type}' Got '#{val.class}' for repeated protobuf field #{field.name} TYPE_ERROR raise TypeError, error_text 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 end end