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 ...@@ -36,11 +36,8 @@ if [ -z "$PROTOC" ]; then
fi fi
# Descriptor proto # 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 \ $PROTOC -Isrc --csharp_out=csharp/src/Google.Protobuf/Reflection \
src/google/protobuf/descriptor_proto_file.proto src/google/protobuf/descriptor.proto
rm src/google/protobuf/descriptor_proto_file.proto
$PROTOC -Isrc --csharp_out=csharp/src/Google.Protobuf/WellKnownTypes \ $PROTOC -Isrc --csharp_out=csharp/src/Google.Protobuf/WellKnownTypes \
src/google/protobuf/any.proto \ src/google/protobuf/any.proto \
......
...@@ -300,8 +300,9 @@ namespace Google.Protobuf.Reflection ...@@ -300,8 +300,9 @@ namespace Google.Protobuf.Reflection
if (dependencies[i].Name != proto.Dependency[i]) if (dependencies[i].Name != proto.Dependency[i])
{ {
throw new DescriptorValidationException(result, throw new DescriptorValidationException(result,
"Dependencies passed to FileDescriptor.BuildFrom() don't match " + "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) { ...@@ -118,6 +118,12 @@ std::string GetFileNamespace(const FileDescriptor* descriptor) {
} }
std::string GetUmbrellaClassUnqualifiedName(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. // umbrella_classname can no longer be set using message option.
std::string proto_file = descriptor->name(); std::string proto_file = descriptor->name();
int lastslash = proto_file.find_last_of("/"); int lastslash = proto_file.find_last_of("/");
......
...@@ -115,12 +115,7 @@ inline bool IsMapEntryMessage(const Descriptor* descriptor) { ...@@ -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, // for use in the runtime. This is the only type which is allowed to use proto2 syntax,
// and it generates internal classes. // and it generates internal classes.
inline bool IsDescriptorProto(const FileDescriptor* descriptor) { inline bool IsDescriptorProto(const FileDescriptor* descriptor) {
// TODO: Do this better! (Currently this depends on a hack in generate_protos.sh to rename return descriptor->name() == "google/protobuf/descriptor.proto";
// 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";
} }
inline bool IsWrapperType(const FieldDescriptor* descriptor) { 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