@@ -220,7 +220,16 @@ INSTANTIATE_TEST_SUITE_P(
220220 DetermineTypesSuccess{" string" , R"""( {"type":"string"})""" , " string" ,
221221 true , false , false , false },
222222 DetermineTypesSuccess{" any" , R"""( {"type":"any"})""" ,
223- " google.protobuf.Any" , true , false , false , false },
223+ " google.protobuf.Value" , true , false , false ,
224+ false },
225+ DetermineTypesSuccess{
226+ " any_with_format" ,
227+ R"""( {"type":"any","format":"google.protobuf.Value"})""" ,
228+ " google.protobuf.Value" , true , false , false , false },
229+ DetermineTypesSuccess{
230+ " any_with_struct_format" ,
231+ R"""( {"type":"any","format":"google.protobuf.Struct"})""" ,
232+ " google.protobuf.Struct" , true , false , false , false },
224233 DetermineTypesSuccess{" boolean" , R"""( {"type":"boolean"})""" , " bool" ,
225234 true , false , false , false },
226235 DetermineTypesSuccess{" integer_no_format" , R"""( {"type":"integer"})""" ,
@@ -246,6 +255,21 @@ INSTANTIATE_TEST_SUITE_P(
246255 DetermineTypesSuccess{
247256 " array_any" ,
248257 R"""( {"type":"array","items":{"type":"object","additionalProperties":{"type":"any"}}})""" ,
258+ " google.protobuf.Struct" , true , false , false , false },
259+ DetermineTypesSuccess{
260+ " array_any_with_format" ,
261+ R"""( {"type":"array","items":{"type":"object","additionalProperties":{"type":"any","format":"google.protobuf.Value"}}})""" ,
262+ " google.protobuf.Value" , true , false , false , false },
263+ DetermineTypesSuccess{
264+ " array_items_any" , R"""( {"type":"array","items":{"type":"any"}})""" ,
265+ " google.protobuf.Value" , true , false , false , false },
266+ DetermineTypesSuccess{
267+ " array_items_any_with_format" ,
268+ R"""( {"type":"array","items":{"type":"any","format":"google.protobuf.Struct"}})""" ,
269+ " google.protobuf.Struct" , true , false , false , false },
270+ DetermineTypesSuccess{
271+ " status_details_any" ,
272+ R"""( {"type":"array","items":{"type":"object","format":"google.protobuf.Any","additionalProperties":{"type":"any"}}})""" ,
249273 " google.protobuf.Any" , true , false , false , false },
250274 DetermineTypesSuccess{
251275 " array_nested_message" ,
@@ -266,6 +290,14 @@ INSTANTIATE_TEST_SUITE_P(
266290 " any_to_struct" ,
267291 R"""( {"type":"object","additionalProperties":{"type":"any"}})""" ,
268292 " google.protobuf.Struct" , true , true , false , false },
293+ DetermineTypesSuccess{
294+ " map_any_with_format" ,
295+ R"""( {"type":"object","additionalProperties":{"type":"any","format":"google.protobuf.Value"}})""" ,
296+ " google.protobuf.Value" , true , true , false , false },
297+ DetermineTypesSuccess{
298+ " map_any_with_outer_format" ,
299+ R"""( {"type":"object","format":"google.protobuf.Value","additionalProperties":{"type":"any"}})""" ,
300+ " google.protobuf.Value" , true , true , false , false },
269301 DetermineTypesSuccess{
270302 " map_nested_message" ,
271303 R"""( {"type":"object","additionalProperties":{"type":"object", "properties":{}}})""" ,
@@ -846,6 +878,7 @@ message Bar {}
846878syntax = "proto3";
847879package generator.test;
848880
881+ import "google/protobuf/any.proto";
849882import "imported.proto";
850883
851884message Foo {}
@@ -857,6 +890,8 @@ message FieldsOnly {
857890 int32 field4 = 4;
858891 repeated generator.imported.Bar field5 = 5;
859892 map<string, generator.imported.Bar> field6 = 6;
893+ google.protobuf.Any field7 = 7;
894+ google.protobuf.Any field8 = 8;
860895}
861896
862897)""" ;
@@ -878,7 +913,7 @@ message FieldsOnly {
878913 ASSERT_STATUS_OK (field_number);
879914 EXPECT_THAT (*field_number, Eq (1 ));
880915
881- int const candidate_field_number = 7 ;
916+ int const candidate_field_number = 9 ;
882917 message_descriptor = file_descriptor->FindMessageTypeByName (" FieldsOnly" );
883918
884919 ASSERT_THAT (message_descriptor, NotNull ());
@@ -923,6 +958,19 @@ message FieldsOnly {
923958 ASSERT_STATUS_OK (existing_map_different_package_field_number);
924959 EXPECT_THAT (*existing_map_different_package_field_number, Eq (6 ));
925960
961+ auto existing_any_to_struct_field_number =
962+ DiscoveryTypeVertex::GetFieldNumber (message_descriptor, " field7" ,
963+ " google.protobuf.Struct" ,
964+ candidate_field_number);
965+ ASSERT_STATUS_OK (existing_any_to_struct_field_number);
966+ EXPECT_THAT (*existing_any_to_struct_field_number, Eq (7 ));
967+
968+ auto existing_any_to_value_field_number = DiscoveryTypeVertex::GetFieldNumber (
969+ message_descriptor, " field8" , " google.protobuf.Value" ,
970+ candidate_field_number);
971+ ASSERT_STATUS_OK (existing_any_to_value_field_number);
972+ EXPECT_THAT (*existing_any_to_value_field_number, Eq (8 ));
973+
926974 auto field_type_changed = DiscoveryTypeVertex::GetFieldNumber (
927975 message_descriptor, " field6" , " map<string, generator.test.Bar>" ,
928976 candidate_field_number);
0 commit comments