Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(textproto_indexer): mark fields as ref/writes #5679

Merged
merged 2 commits into from
Jun 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 2 additions & 2 deletions kythe/cxx/indexer/textproto/analyzer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -661,9 +661,9 @@ absl::Status TextprotoAnalyzer::AnalyzeField(const proto::VName& file_vname,
const int end = begin + len;
proto::VName anchor_vname = CreateAndAddAnchorNode(file_vname, begin, end);

// Add ref to proto field.
// Add ref/writes to proto field.
auto field_vname = VNameForDescriptor(&field);
recorder_->AddEdge(VNameRef(anchor_vname), EdgeKindID::kRef,
recorder_->AddEdge(VNameRef(anchor_vname), EdgeKindID::kRefWrites,
VNameRef(field_vname));

// Add refs for enum values.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,32 +5,32 @@
# syntax options for specifying field values. It is more a test of the plugin
# system than of the example plugin.

#- @name ref NameField
#- @name ref/writes NameField
#- @person1 defines/binding Person1
name: "person1"

#- @friend ref FriendField
#- @friend ref/writes FriendField
#- @"person\" \"1" ref Person1
friend: "person" "1"

#- @friend ref FriendField
#- @friend ref/writes FriendField
#- @person1 ref Person1
#- @person2 ref Person2?
friend: [ "person1", "person2" ]

#- @friend ref FriendField
#- @friend ref/writes FriendField
#- StrValue ref Person1
friend:
#- StrValue.loc/start @^per
"per"
#- StrValue.loc/end @$son1
"son1"

#- @friend ref FriendField
#- @friend ref/writes FriendField
#- @"per\\n\\n\\nson3" ref Person3?
friend: "per\n\n\nson3"

# test that tabs are handled correctly
#- @friend ref FriendField
#- @friend ref/writes FriendField
#- @"person1" ref Person1
friend : "person1"
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# proto-file: kythe/cxx/indexer/textproto/plugins/example/testdata/example.proto
# proto-message: kythe_plugin_example.Person

#- @name ref NameField
#- @name ref/writes NameField
#- @person1 defines/binding Person1=vname("person1","kythe","","","textproto_plugin_example")
name: "person1"

#- @friend ref FriendField
#- @friend ref/writes FriendField
#- @person2 ref Person2
friend: "person2"
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# proto-file: kythe/cxx/indexer/textproto/plugins/example/testdata/example.proto
# proto-message: kythe_plugin_example.Person

#- @name ref NameField
#- @name ref/writes NameField
#- @person2 defines/binding Person2=vname("person2","kythe","","","textproto_plugin_example")
name: "person2"

#- @friend ref FriendField
#- @friend ref/writes FriendField
#- @person1 ref Person1
friend: "person1"
20 changes: 10 additions & 10 deletions kythe/cxx/indexer/textproto/testdata/any_type.pbtxt
Original file line number Diff line number Diff line change
@@ -1,42 +1,42 @@
# proto-file: kythe/cxx/indexer/textproto/testdata/any_type.proto
# proto-message: any_type_test.Message

#- @str_field ref StrField
#- @str_field ref/writes StrField
str_field: "testing..."

#- @details_field ref DetailsField
#- @details_field ref/writes DetailsField
details_field: {
#- @"any_type_test.Message2" ref Message2
[type.googleapis.com/any_type_test.Message2] {
#- @bool_field ref BoolField
#- @bool_field ref/writes BoolField
bool_field: true
}
}

#- @repeated_details_field ref RepeatedDetailsField
#- @repeated_details_field ref/writes RepeatedDetailsField
repeated_details_field: {
#- @"any_type_test.Message2" ref Message2
[type.googleapis.com/any_type_test.Message2] {

#- @bool_field ref BoolField
#- @bool_field ref/writes BoolField
bool_field: true
}
}

#- @repeated_details_field ref RepeatedDetailsField
#- @repeated_details_field ref/writes RepeatedDetailsField
repeated_details_field {

#- @type_url ref vname("4.0.2.0",_,_,"google/protobuf/any.proto",_)
#- @type_url ref/writes vname("4.0.2.0",_,_,"google/protobuf/any.proto",_)
type_url: "type.googleapis.com/any_type_test.Message2"
#- @value ref vname("4.0.2.1",_,_,"google/protobuf/any.proto",_)
#- @value ref/writes vname("4.0.2.1",_,_,"google/protobuf/any.proto",_)
value: ""
}

#- @repeated_details_field ref RepeatedDetailsField
#- @repeated_details_field ref/writes RepeatedDetailsField
repeated_details_field {
#- @"any_type_test.Message2" ref Message2
[ type.googleapis.com/any_type_test.Message2 ] {
#- @bool_field ref BoolField
#- @bool_field ref/writes BoolField
bool_field: true
}
}
Expand Down
10 changes: 5 additions & 5 deletions kythe/cxx/indexer/textproto/testdata/basics.pbtxt
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
# proto-file: kythe/cxx/indexer/textproto/testdata/example.proto
# proto-message: example.Message2

#- @field1 ref Field1
#- @field1 ref/writes Field1
field1: "hello"

#- @repeated_message ref RepeatedMessage
#- @repeated_message ref/writes RepeatedMessage
repeated_message {
#- @str_field ref Message1StrField
#- @str_field ref/writes Message1StrField
str_field: "hello"
}

# The message below is indented with tabs to test that they are handled
# correctly by the indexer.
#- @repeated_message ref RepeatedMessage
#- @repeated_message ref/writes RepeatedMessage
repeated_message {
#- @str_field ref Message1StrField
#- @str_field ref/writes Message1StrField
str_field: "hello"
}
2 changes: 1 addition & 1 deletion kythe/cxx/indexer/textproto/testdata/default_value.pbtxt
Original file line number Diff line number Diff line change
Expand Up @@ -4,5 +4,5 @@
# proto3 does not have "has" bits that track whether a field is set or not.
# Using a value of zero here ensures that even fields that are set equal to the
# default value still get xrefs.
#- @field2 ref Field2
#- @field2 ref/writes Field2
field2: 0
16 changes: 8 additions & 8 deletions kythe/cxx/indexer/textproto/testdata/enum_value.pbtxt
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
# proto-file: kythe/cxx/indexer/textproto/testdata/example.proto
# proto-message: example.Message2

#- @enum_field ref EnumField
#- @enum_field ref/writes EnumField
#- @ENUM_VALUE1 ref EnumValue1
enum_field: ENUM_VALUE1

#- @repeated_enum_field ref RepeatedEnumField
#- @repeated_enum_field ref/writes RepeatedEnumField
#- @ENUM_VALUE1 ref EnumValue1
repeated_enum_field: ENUM_VALUE1

#- @repeated_enum_field ref RepeatedEnumField
repeated_enum_field
#- @repeated_enum_field ref/writes RepeatedEnumField
repeated_enum_field
:
#- @ENUM_VALUE2 ref EnumValue2
ENUM_VALUE2 # comment

#- @repeated_enum_field ref RepeatedEnumField
#- @repeated_enum_field ref/writes RepeatedEnumField
#- @"2" ref EnumValue2
repeated_enum_field: 2

#- @repeated_enum_field ref RepeatedEnumField
#- @repeated_enum_field ref/writes RepeatedEnumField
#- @"2" ref EnumValue2
#- @"1" ref EnumValue1
repeated_enum_field: [2, 1]

#- @repeated_enum_field ref RepeatedEnumField
#- @repeated_enum_field ref/writes RepeatedEnumField
#- @+3ENUM_VALUE1 ref EnumValue1
#- @+2ENUM_VALUE2 ref EnumValue2
repeated_enum_field
repeated_enum_field
: [ ENUM_VALUE1 , ENUM_VALUE2 ]
6 changes: 3 additions & 3 deletions kythe/cxx/indexer/textproto/testdata/extensions.pbtxt
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
# proto-file: kythe/cxx/indexer/textproto/testdata/extensions.proto
# proto-message: mypkg.ExtendableMessage

#- @str_field1 ref ExtendableMessageStrField1
#- @str_field1 ref/writes ExtendableMessageStrField1
str_field1: "hello"

#- @"mypkg.MyExtension.ext" ref Ext
#- @"mypkg.MyExtension.ext" ref/writes Ext
[mypkg.MyExtension.ext] {
#- @field1 ref MyExtensionField1
#- @field1 ref/writes MyExtensionField1
field1: "hello"
}
4 changes: 2 additions & 2 deletions kythe/cxx/indexer/textproto/testdata/generated_imports.pbtxt
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# proto-message: example2.OuterMessage
# proto-file: kythe/cxx/indexer/textproto/testdata/imports_generated.proto

#- @inner_msg ref OuterMessageInnerMsg
#- @inner_msg ref/writes OuterMessageInnerMsg
inner_msg {
#- @field1 ref Field1
#- @field1 ref/writes Field1
field1: "hello"
}
4 changes: 2 additions & 2 deletions kythe/cxx/indexer/textproto/testdata/imports.pbtxt
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# proto-message: example2.OuterMessage
# proto-file: kythe/cxx/indexer/textproto/testdata/proto_with_imports.proto

#- @inner_msg ref OuterMessageInnerMsg
#- @inner_msg ref/writes OuterMessageInnerMsg
inner_msg {
#- @field1 ref Field1
#- @field1 ref/writes Field1
field1: "hello"
}
18 changes: 9 additions & 9 deletions kythe/cxx/indexer/textproto/testdata/inline_repeated_field.pbtxt
Original file line number Diff line number Diff line change
@@ -1,29 +1,29 @@
# proto-file: kythe/cxx/indexer/textproto/testdata/example.proto
# proto-message: example.Message2

#- @repeated_field ref RepeatedField
#- @repeated_field ref/writes RepeatedField
repeated_field: ["first", "second"]

#- @repeated_message ref RepeatedMessage
#- @repeated_message ref/writes RepeatedMessage
repeated_message: [
#- @str_field ref Message1StrField
#- @str_field ref/writes Message1StrField
{str_field: "another"},

#- @str_field ref Message1StrField
#- @str_field ref/writes Message1StrField
{str_field: "even more"}
]

#- @repeated_message ref RepeatedMessage
#- @repeated_message ref/writes RepeatedMessage
repeated_message: {
#- @str_field ref Message1StrField
#- @str_field ref/writes Message1StrField
str_field: "nested"
}

#- @repeated_message ref RepeatedMessage
#- @repeated_message ref/writes RepeatedMessage
repeated_message: [
#- @str_field ref Message1StrField
#- @str_field ref/writes Message1StrField
{str_field: "another"},

#- @str_field ref Message1StrField
#- @str_field ref/writes Message1StrField
{str_field: "even more"}
]
4 changes: 2 additions & 2 deletions kythe/cxx/indexer/textproto/testdata/nested_message.pbtxt
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# proto-file: kythe/cxx/indexer/textproto/testdata/example.proto
# proto-message: example.Message2

#- @msg1 ref Msg1
#- @msg1 ref/writes Msg1
msg1 {
#- @str_field ref Message1StrField
#- @str_field ref/writes Message1StrField
str_field: "hello"
}
20 changes: 10 additions & 10 deletions kythe/cxx/indexer/textproto/testdata/recordio_basics.recordiotxt
Original file line number Diff line number Diff line change
@@ -1,32 +1,32 @@
# proto-file: kythe/cxx/indexer/textproto/testdata/example.proto
# proto-message: example.Message2

#- @field1 ref Field1
#- @field1 ref/writes Field1
field1: "hello"
#- @repeated_message ref RepeatedMessage
#- @repeated_message ref/writes RepeatedMessage
repeated_message {
#- @str_field ref Message1StrField
#- @str_field ref/writes Message1StrField
str_field: "hello"
}
# The message below is indented with tabs to test that they are handled
# correctly by the indexer.
#- @repeated_message ref RepeatedMessage
#- @repeated_message ref/writes RepeatedMessage
repeated_message {
#- @str_field ref Message1StrField
#- @str_field ref/writes Message1StrField
str_field: "hello"
}

@@@@@@@@@@@@@@@@

#- @field1 ref Field1
#- @field1 ref/writes Field1
field1: "hello"
#- @repeated_message ref RepeatedMessage
#- @repeated_message ref/writes RepeatedMessage
repeated_message {
#- @str_field ref Message1StrField
#- @str_field ref/writes Message1StrField
str_field: "hello"
}

@@@@@@@@@@@@@@@@

#- @field1 ref Field1
field1: "hello"
#- @field1 ref/writes Field1
field1: "hello"
Original file line number Diff line number Diff line change
@@ -1,30 +1,30 @@
# proto-file: kythe/cxx/indexer/textproto/testdata/example.proto
# proto-message: example.Message2

#- @field1 ref Field1
#- @field1 ref/writes Field1
field1: "hello"
#- @repeated_message ref RepeatedMessage
#- @repeated_message ref/writes RepeatedMessage
repeated_message {
#- @str_field ref Message1StrField
#- @str_field ref/writes Message1StrField
str_field: "hello"
}
# The message below is indented with tabs to test that they are handled
# correctly by the indexer.
#- @repeated_message ref RepeatedMessage
#- @repeated_message ref/writes RepeatedMessage
repeated_message {
#- @str_field ref Message1StrField
#- @str_field ref/writes Message1StrField
str_field: "hello"
}

#- @field1 ref Field1
#- @field1 ref/writes Field1
field1: "hello"
#- @repeated_message ref RepeatedMessage
#- @repeated_message ref/writes RepeatedMessage
repeated_message {
#- @str_field ref Message1StrField
#- @str_field ref/writes Message1StrField
str_field: "hello"
}

#- @field1 ref Field1
#- @field1 ref/writes Field1
field1: "hello"

# end of chunks with a comment.
8 changes: 4 additions & 4 deletions kythe/cxx/indexer/textproto/testdata/repeated_extension.pbtxt
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
# proto-file: kythe/cxx/indexer/textproto/testdata/repeated_extension.proto
# proto-message: repeated_extension_test.Extendee

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

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