aboutsummaryrefslogtreecommitdiff
path: root/src/ProtocolBuffers/UninitializedMessageException.cs
diff options
context:
space:
mode:
authorcsharptest <roger@csharptest.net>2010-11-09 20:49:12 -0600
committercsharptest <roger@csharptest.net>2010-11-09 20:49:12 -0600
commit272cb8aee775de65e08b4ab17c485cd678d08266 (patch)
tree3489244ff5bd901592b535ea5ad9352096d1521f /src/ProtocolBuffers/UninitializedMessageException.cs
parente49547735834485dd22842e1a82bc5ae4139b8a8 (diff)
downloadprotobuf-272cb8aee775de65e08b4ab17c485cd678d08266.tar.gz
protobuf-272cb8aee775de65e08b4ab17c485cd678d08266.tar.bz2
protobuf-272cb8aee775de65e08b4ab17c485cd678d08266.zip
Lite feature complete.
Diffstat (limited to 'src/ProtocolBuffers/UninitializedMessageException.cs')
-rw-r--r--src/ProtocolBuffers/UninitializedMessageException.cs14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/ProtocolBuffers/UninitializedMessageException.cs b/src/ProtocolBuffers/UninitializedMessageException.cs
index c5bcd822..d7f58197 100644
--- a/src/ProtocolBuffers/UninitializedMessageException.cs
+++ b/src/ProtocolBuffers/UninitializedMessageException.cs
@@ -124,16 +124,24 @@ namespace Google.ProtocolBuffers {
foreach (KeyValuePair<FieldDescriptor, object> entry in message.AllFields) {
FieldDescriptor field = entry.Key;
object value = entry.Value;
-#warning ToDo - bad assumption, could be IMessageLite
+
if (field.MappedType == MappedType.Message) {
if (field.IsRepeated) {
int i = 0;
foreach (object element in (IEnumerable) value) {
- FindMissingFields((IMessage) element, SubMessagePrefix(prefix, field, i++), results);
+ if (element is IMessage) {
+ FindMissingFields((IMessage)element, SubMessagePrefix(prefix, field, i++), results);
+ } else {
+ results.Add(prefix + field.Name);
+ }
}
} else {
if (message.HasField(field)) {
- FindMissingFields((IMessage) value, SubMessagePrefix(prefix, field, -1), results);
+ if (value is IMessage) {
+ FindMissingFields((IMessage)value, SubMessagePrefix(prefix, field, -1), results);
+ } else {
+ results.Add(prefix + field.Name);
+ }
}
}
}