Merge pull request #6139 from haberman/conformance-build

Typo fix for conformance test runner.
diff --git a/ruby/ext/google/protobuf_c/map.c b/ruby/ext/google/protobuf_c/map.c
index 88512fd..55b7be4 100644
--- a/ruby/ext/google/protobuf_c/map.c
+++ b/ruby/ext/google/protobuf_c/map.c
@@ -538,8 +538,8 @@
   return new_map;
 }
 
-/* :nodoc: */
-static VALUE Map_deep_copy(VALUE _self) {
+// Used by Google::Protobuf.deep_copy but not exposed directly.
+VALUE Map_deep_copy(VALUE _self) {
   Map* self = ruby_to_Map(_self);
   VALUE new_map = Map_new_this_type(_self);
   Map* new_self = ruby_to_Map(new_map);
@@ -851,6 +851,5 @@
   rb_define_method(klass, "to_h", Map_to_h, 0);
   rb_define_method(klass, "inspect", Map_inspect, 0);
   rb_define_method(klass, "merge", Map_merge, 1);
-  rb_define_method(klass, "deep_copy", Map_deep_copy, 0);
   rb_include_module(klass, rb_mEnumerable);
 }
diff --git a/ruby/ext/google/protobuf_c/message.c b/ruby/ext/google/protobuf_c/message.c
index 2714a32..850ab0e 100644
--- a/ruby/ext/google/protobuf_c/message.c
+++ b/ruby/ext/google/protobuf_c/message.c
@@ -511,8 +511,8 @@
   return new_msg;
 }
 
-/* :nodoc: */
-static VALUE Message_deep_copy(VALUE _self) {
+// Internal only; used by Google::Protobuf.deep_copy.
+VALUE Message_deep_copy(VALUE _self) {
   MessageHeader* self;
   MessageHeader* new_msg_self;
   VALUE new_msg;
@@ -742,7 +742,6 @@
   rb_define_method(klass, "to_s", Message_inspect, 0);
   rb_define_method(klass, "[]", Message_index, 1);
   rb_define_method(klass, "[]=", Message_index_set, 2);
-  rb_define_method(klass, "deep_copy", Message_deep_copy, 0);
   rb_define_singleton_method(klass, "decode", Message_decode, 1);
   rb_define_singleton_method(klass, "encode", Message_encode, 1);
   rb_define_singleton_method(klass, "decode_json", Message_decode_json, -1);
@@ -830,3 +829,21 @@
 
   return mod;
 }
+
+/*
+ * call-seq:
+ *     Google::Protobuf.deep_copy(obj) => copy_of_obj
+ *
+ * Performs a deep copy of a RepeatedField instance, a Map instance, or a
+ * message object, recursively copying its members.
+ */
+VALUE Google_Protobuf_deep_copy(VALUE self, VALUE obj) {
+  VALUE klass = CLASS_OF(obj);
+  if (klass == cRepeatedField) {
+    return RepeatedField_deep_copy(obj);
+  } else if (klass == cMap) {
+    return Map_deep_copy(obj);
+  } else {
+    return Message_deep_copy(obj);
+  }
+}
diff --git a/ruby/ext/google/protobuf_c/protobuf.h b/ruby/ext/google/protobuf_c/protobuf.h
index 0eb82a2..8731eeb 100644
--- a/ruby/ext/google/protobuf_c/protobuf.h
+++ b/ruby/ext/google/protobuf_c/protobuf.h
@@ -425,6 +425,7 @@
 VALUE RepeatedField_clear(VALUE _self);
 VALUE RepeatedField_length(VALUE _self);
 VALUE RepeatedField_dup(VALUE _self);
+VALUE RepeatedField_deep_copy(VALUE _self);
 VALUE RepeatedField_to_ary(VALUE _self);
 VALUE RepeatedField_eq(VALUE _self, VALUE _other);
 VALUE RepeatedField_hash(VALUE _self);
@@ -468,6 +469,7 @@
 VALUE Map_clear(VALUE _self);
 VALUE Map_length(VALUE _self);
 VALUE Map_dup(VALUE _self);
+VALUE Map_deep_copy(VALUE _self);
 VALUE Map_eq(VALUE _self, VALUE _other);
 VALUE Map_hash(VALUE _self);
 VALUE Map_to_h(VALUE _self);
@@ -562,6 +564,7 @@
 VALUE Message_method_missing(int argc, VALUE* argv, VALUE _self);
 VALUE Message_initialize(int argc, VALUE* argv, VALUE _self);
 VALUE Message_dup(VALUE _self);
+VALUE Message_deep_copy(VALUE _self);
 VALUE Message_eq(VALUE _self, VALUE _other);
 VALUE Message_hash(VALUE _self);
 VALUE Message_inspect(VALUE _self);
diff --git a/ruby/ext/google/protobuf_c/repeated_field.c b/ruby/ext/google/protobuf_c/repeated_field.c
index e1d7924..29e829e 100644
--- a/ruby/ext/google/protobuf_c/repeated_field.c
+++ b/ruby/ext/google/protobuf_c/repeated_field.c
@@ -355,8 +355,8 @@
   return new_rptfield;
 }
 
-/* :nodoc: */
-static VALUE RepeatedField_deep_copy(VALUE _self) {
+// Internal only: used by Google::Protobuf.deep_copy.
+VALUE RepeatedField_deep_copy(VALUE _self) {
   RepeatedField* self = ruby_to_RepeatedField(_self);
   VALUE new_rptfield = RepeatedField_new_this_type(_self);
   RepeatedField* new_rptfield_self = ruby_to_RepeatedField(new_rptfield);
@@ -656,6 +656,5 @@
   rb_define_method(klass, "hash", RepeatedField_hash, 0);
   rb_define_method(klass, "+", RepeatedField_plus, 1);
   rb_define_method(klass, "concat", RepeatedField_concat, 1);
-  rb_define_method(klass, "deep_copy", RepeatedField_deep_copy, 0);
   rb_include_module(klass, rb_mEnumerable);
 }
diff --git a/ruby/lib/google/protobuf.rb b/ruby/lib/google/protobuf.rb
index 8c9d460..464982e 100644
--- a/ruby/lib/google/protobuf.rb
+++ b/ruby/lib/google/protobuf.rb
@@ -73,13 +73,5 @@
       klass.decode_json(json, options)
     end
 
-    # call-seq:
-    #     Google::Protobuf.deep_copy(obj) => copy_of_obj
-    #
-    # Performs a deep copy of a RepeatedField instance, a Map instance, or a
-    # message object, recursively copying its members.
-    def self.deep_copy(obj)
-      obj.deep_copy
-    end
   end
 end