Commit f9aed208 authored by Jon Skeet's avatar Jon Skeet

Merge pull request #732 from jskeet/fix-descriptor-proto

Change where we rename Descriptor.cs to DescriptorProtoFile.cs.
parents 3253634d 31d119af
......@@ -36,11 +36,8 @@ if [ -z "$PROTOC" ]; then
fi
# Descriptor proto
# TODO(jonskeet): Remove fixup
cp src/google/protobuf/descriptor.proto src/google/protobuf/descriptor_proto_file.proto
$PROTOC -Isrc --csharp_out=csharp/src/Google.Protobuf/Reflection \
src/google/protobuf/descriptor_proto_file.proto
rm src/google/protobuf/descriptor_proto_file.proto
src/google/protobuf/descriptor.proto
$PROTOC -Isrc --csharp_out=csharp/src/Google.Protobuf/WellKnownTypes \
src/google/protobuf/any.proto \
......
......@@ -301,7 +301,8 @@ namespace Google.Protobuf.Reflection
{
throw new DescriptorValidationException(result,
"Dependencies passed to FileDescriptor.BuildFrom() don't match " +
"those listed in the FileDescriptorProto.");
"those listed in the FileDescriptorProto. Expected: " +
proto.Dependency[i] + " but was: " + dependencies[i].Name);
}
}
......
......@@ -118,6 +118,12 @@ std::string GetFileNamespace(const FileDescriptor* descriptor) {
}
std::string GetUmbrellaClassUnqualifiedName(const FileDescriptor* descriptor) {
// We manually rename Descriptor to DescriptorProtoFile to avoid collisions with
// the static Descriptor property. It would be nice to be able to do this with an
// option, but it would be rarely used.
if (IsDescriptorProto(descriptor)) {
return "DescriptorProtoFile";
}
// umbrella_classname can no longer be set using message option.
std::string proto_file = descriptor->name();
int lastslash = proto_file.find_last_of("/");
......
......@@ -115,12 +115,7 @@ inline bool IsMapEntryMessage(const Descriptor* descriptor) {
// for use in the runtime. This is the only type which is allowed to use proto2 syntax,
// and it generates internal classes.
inline bool IsDescriptorProto(const FileDescriptor* descriptor) {
// TODO: Do this better! (Currently this depends on a hack in generate_protos.sh to rename
// the file...)
// We need to be able to detect the "normal" name as well, for times that we're just
// depending on descriptor.proto instead of generating it.
return descriptor->name() == "google/protobuf/descriptor_proto_file.proto"
|| descriptor->name() == "google/protobuf/descriptor.proto";
return descriptor->name() == "google/protobuf/descriptor.proto";
}
inline bool IsWrapperType(const FieldDescriptor* descriptor) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment