Skip to content

Commit

Permalink
fix(textproto indexer): implement and test repeated extension fields (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
justbuchanan committed Feb 27, 2019
1 parent e9b68f1 commit e658b1c
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 3 deletions.
14 changes: 11 additions & 3 deletions kythe/cxx/indexer/textproto/analyzer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -174,9 +174,17 @@ Status TextprotoAnalyzer::AnalyzeMessage(
continue;
}

auto s = AnalyzeField(file_vname, proto, parse_tree, *field,
kNonRepeatedFieldIndex);
if (!s.ok()) return s;
if (field->is_repeated()) {
const size_t count = reflection->FieldSize(proto, field);
for (size_t i = 0; i < count; i++) {
auto s = AnalyzeField(file_vname, proto, parse_tree, *field, i);
if (!s.ok()) return s;
}
} else {
auto s = AnalyzeField(file_vname, proto, parse_tree, *field,
kNonRepeatedFieldIndex);
if (!s.ok()) return s;
}
}

return OkStatus();
Expand Down
6 changes: 6 additions & 0 deletions kythe/cxx/indexer/textproto/testdata/BUILD
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,9 @@ textproto_verifier_test(
textproto = "any_type.pbtxt",
deps = ["@com_google_protobuf//:well_known_protos"],
)

textproto_verifier_test(
name = "repeated_extension_test",
protos = ["repeated_extension.proto"],
textproto = "repeated_extension.pbtxt",
)
14 changes: 14 additions & 0 deletions kythe/cxx/indexer/textproto/testdata/repeated_extension.pbtxt
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# proto-file: repeated_extension.proto
# proto-message: repeated_extension_test.Extendee

#- @"repeated_extension_test.Extension.ext" ref Ext
[repeated_extension_test.Extension.ext] {
#- @str_field ref ExtensionStrField
str_field: "test"
}

#- @"repeated_extension_test.Extension.ext" ref Ext
[repeated_extension_test.Extension.ext] {
#- @str_field ref ExtensionStrField
str_field: "test2"
}
17 changes: 17 additions & 0 deletions kythe/cxx/indexer/textproto/testdata/repeated_extension.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
syntax = "proto2";

package repeated_extension_test;

message Extendee {
extensions 100 to max;
}

message Extension {
extend Extendee {
//- @ext defines/binding Ext?
repeated Extension ext = 1000;
}

//- @str_field defines/binding ExtensionStrField?
optional string str_field = 1;
}

0 comments on commit e658b1c

Please sign in to comment.