summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJon Skeet <jonskeet@google.com>2015-06-23 20:04:39 +0100
committerJon Skeet <jonskeet@google.com>2015-06-23 20:04:39 +0100
commit8c896b259ecda6160ad2839fab59fad71ae77a7c (patch)
tree07557a07d3bd0970c68a66d642bcd77ddaa4526e
parent6c1fe6ea3e4e3915fc4164c43230210f9a0ac24f (diff)
downloadprotobuf-javalite-8c896b259ecda6160ad2839fab59fad71ae77a7c.tar.gz
Implement requested changes for IMessage<T>
1) New line at end of file 2) Make IMessage<T> itself extend IEquatable<T> and IDeepCloneable<T>
-rw-r--r--csharp/src/ProtocolBuffers/IMessage.cs9
-rw-r--r--src/google/protobuf/compiler/csharp/csharp_message.cc2
2 files changed, 6 insertions, 5 deletions
diff --git a/csharp/src/ProtocolBuffers/IMessage.cs b/csharp/src/ProtocolBuffers/IMessage.cs
index 32dfcaff..5d662cfd 100644
--- a/csharp/src/ProtocolBuffers/IMessage.cs
+++ b/csharp/src/ProtocolBuffers/IMessage.cs
@@ -34,6 +34,7 @@
#endregion
+using System;
using Google.Protobuf.FieldAccess;
namespace Google.Protobuf
@@ -84,7 +85,7 @@ namespace Google.Protobuf
/// the implementation class.
/// </summary>
/// <typeparam name="T">The message type.</typeparam>
- public interface IMessage<T> : IMessage where T : IMessage<T>
+ public interface IMessage<T> : IMessage, IEquatable<T>, IDeepCloneable<T> where T : IMessage<T>
{
/// <summary>
/// Merges the given message into this one.
@@ -98,8 +99,8 @@ namespace Google.Protobuf
/// Generic interface for a deeply cloneable type.
/// <summary>
/// <remarks>
- /// In practice, all generated messages implement this interface.
- /// However, due to the type constraint on <c>T</c> in <see cref="IMessage{T}"/>,
+ /// All generated messages implement this interface, but so do some non-message types.
+ /// Additionally, due to the type constraint on <c>T</c> in <see cref="IMessage{T}"/>,
/// it is simpler to keep this as a separate interface.
/// </remarks>
/// <typeparam name="T">The type itself, returned by the <see cref="Clone"/> method.</typeparam>
@@ -111,4 +112,4 @@ namespace Google.Protobuf
/// <returns>A deep clone of this object.</returns>
T Clone();
}
-} \ No newline at end of file
+}
diff --git a/src/google/protobuf/compiler/csharp/csharp_message.cc b/src/google/protobuf/compiler/csharp/csharp_message.cc
index 32d0a82d..39938fa3 100644
--- a/src/google/protobuf/compiler/csharp/csharp_message.cc
+++ b/src/google/protobuf/compiler/csharp/csharp_message.cc
@@ -179,7 +179,7 @@ void MessageGenerator::Generate(io::Printer* printer) {
WriteGeneratedCodeAttributes(printer);
printer->Print(
vars,
- "$access_level$ sealed partial class $class_name$ : pb::IMessage<$class_name$>, global::System.IEquatable<$class_name$>, pb::IDeepCloneable<$class_name$> {\n");
+ "$access_level$ sealed partial class $class_name$ : pb::IMessage<$class_name$> {\n");
printer->Indent();
// All static fields and properties