diff options
author | kenton@google.com <kenton@google.com@630680e5-0e50-0410-840e-4b1c322b438d> | 2010-04-19 19:15:12 +0000 |
---|---|---|
committer | kenton@google.com <kenton@google.com@630680e5-0e50-0410-840e-4b1c322b438d> | 2010-04-19 19:15:12 +0000 |
commit | d09ab8538d5742a149095445c6880382b6b4408d (patch) | |
tree | 15c865875f9c7d9e4c26cfe4402659e60bbb7b8c /src | |
parent | b3f6a15806011c37623243766900ed6fbd3da84a (diff) | |
download | protobuf-d09ab8538d5742a149095445c6880382b6b4408d.tar.gz protobuf-d09ab8538d5742a149095445c6880382b6b4408d.tar.bz2 protobuf-d09ab8538d5742a149095445c6880382b6b4408d.zip |
Allow services with lite runtime when using rpc generator plugin.
Diffstat (limited to 'src')
-rw-r--r-- | src/google/protobuf/descriptor.cc | 8 | ||||
-rw-r--r-- | src/google/protobuf/descriptor_unittest.cc | 12 |
2 files changed, 17 insertions, 3 deletions
diff --git a/src/google/protobuf/descriptor.cc b/src/google/protobuf/descriptor.cc index 81c4ac0f..9226dfbc 100644 --- a/src/google/protobuf/descriptor.cc +++ b/src/google/protobuf/descriptor.cc @@ -3720,10 +3720,14 @@ void DescriptorBuilder::ValidateEnumValueOptions( } void DescriptorBuilder::ValidateServiceOptions(ServiceDescriptor* service, const ServiceDescriptorProto& proto) { - if (IsLite(service->file())) { + if (IsLite(service->file()) && + (service->file()->options().cc_generic_services() || + service->file()->options().java_generic_services())) { AddError(service->full_name(), proto, DescriptorPool::ErrorCollector::NAME, - "Files with optimize_for = LITE_RUNTIME cannot define services."); + "Files with optimize_for = LITE_RUNTIME cannot define services " + "unless you set both options cc_generic_services and " + "java_generic_sevices to false."); } VALIDATE_OPTIONS_FROM_ARRAY(service, method, Method); diff --git a/src/google/protobuf/descriptor_unittest.cc b/src/google/protobuf/descriptor_unittest.cc index ec2c8152..d70c9bf1 100644 --- a/src/google/protobuf/descriptor_unittest.cc +++ b/src/google/protobuf/descriptor_unittest.cc @@ -3487,7 +3487,17 @@ TEST_F(ValidationErrorTest, NoLiteServices) { "service { name: \"Foo\" }", "foo.proto: Foo: NAME: Files with optimize_for = LITE_RUNTIME cannot " - "define services.\n"); + "define services unless you set both options cc_generic_services and " + "java_generic_sevices to false.\n"); + + BuildFile( + "name: \"bar.proto\" " + "options {" + " optimize_for: LITE_RUNTIME" + " cc_generic_services: false" + " java_generic_services: false" + "} " + "service { name: \"Foo\" }"); } TEST_F(ValidationErrorTest, RollbackAfterError) { |