rubydex 0.1.0.beta12-aarch64-linux

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +23 -0
  3. data/README.md +125 -0
  4. data/THIRD_PARTY_LICENSES.html +4562 -0
  5. data/exe/rdx +47 -0
  6. data/ext/rubydex/declaration.c +453 -0
  7. data/ext/rubydex/declaration.h +23 -0
  8. data/ext/rubydex/definition.c +284 -0
  9. data/ext/rubydex/definition.h +28 -0
  10. data/ext/rubydex/diagnostic.c +6 -0
  11. data/ext/rubydex/diagnostic.h +11 -0
  12. data/ext/rubydex/document.c +97 -0
  13. data/ext/rubydex/document.h +10 -0
  14. data/ext/rubydex/extconf.rb +138 -0
  15. data/ext/rubydex/graph.c +681 -0
  16. data/ext/rubydex/graph.h +10 -0
  17. data/ext/rubydex/handle.h +44 -0
  18. data/ext/rubydex/location.c +22 -0
  19. data/ext/rubydex/location.h +15 -0
  20. data/ext/rubydex/reference.c +123 -0
  21. data/ext/rubydex/reference.h +15 -0
  22. data/ext/rubydex/rubydex.c +22 -0
  23. data/ext/rubydex/utils.c +108 -0
  24. data/ext/rubydex/utils.h +34 -0
  25. data/lib/rubydex/3.2/rubydex.so +0 -0
  26. data/lib/rubydex/3.3/rubydex.so +0 -0
  27. data/lib/rubydex/3.4/rubydex.so +0 -0
  28. data/lib/rubydex/4.0/rubydex.so +0 -0
  29. data/lib/rubydex/comment.rb +17 -0
  30. data/lib/rubydex/diagnostic.rb +21 -0
  31. data/lib/rubydex/failures.rb +15 -0
  32. data/lib/rubydex/graph.rb +98 -0
  33. data/lib/rubydex/keyword.rb +17 -0
  34. data/lib/rubydex/keyword_parameter.rb +13 -0
  35. data/lib/rubydex/librubydex_sys.so +0 -0
  36. data/lib/rubydex/location.rb +90 -0
  37. data/lib/rubydex/mixin.rb +22 -0
  38. data/lib/rubydex/version.rb +5 -0
  39. data/lib/rubydex.rb +23 -0
  40. data/rbi/rubydex.rbi +422 -0
  41. data/rust/Cargo.lock +1851 -0
  42. data/rust/Cargo.toml +29 -0
  43. data/rust/about.hbs +78 -0
  44. data/rust/about.toml +10 -0
  45. data/rust/rubydex/Cargo.toml +42 -0
  46. data/rust/rubydex/src/compile_assertions.rs +13 -0
  47. data/rust/rubydex/src/diagnostic.rs +110 -0
  48. data/rust/rubydex/src/errors.rs +28 -0
  49. data/rust/rubydex/src/indexing/local_graph.rs +224 -0
  50. data/rust/rubydex/src/indexing/rbs_indexer.rs +1551 -0
  51. data/rust/rubydex/src/indexing/ruby_indexer.rs +2329 -0
  52. data/rust/rubydex/src/indexing/ruby_indexer_tests.rs +4962 -0
  53. data/rust/rubydex/src/indexing.rs +210 -0
  54. data/rust/rubydex/src/integrity.rs +279 -0
  55. data/rust/rubydex/src/job_queue.rs +205 -0
  56. data/rust/rubydex/src/lib.rs +17 -0
  57. data/rust/rubydex/src/listing.rs +371 -0
  58. data/rust/rubydex/src/main.rs +160 -0
  59. data/rust/rubydex/src/model/built_in.rs +83 -0
  60. data/rust/rubydex/src/model/comment.rs +24 -0
  61. data/rust/rubydex/src/model/declaration.rs +671 -0
  62. data/rust/rubydex/src/model/definitions.rs +1682 -0
  63. data/rust/rubydex/src/model/document.rs +222 -0
  64. data/rust/rubydex/src/model/encoding.rs +22 -0
  65. data/rust/rubydex/src/model/graph.rs +3754 -0
  66. data/rust/rubydex/src/model/id.rs +110 -0
  67. data/rust/rubydex/src/model/identity_maps.rs +58 -0
  68. data/rust/rubydex/src/model/ids.rs +60 -0
  69. data/rust/rubydex/src/model/keywords.rs +256 -0
  70. data/rust/rubydex/src/model/name.rs +298 -0
  71. data/rust/rubydex/src/model/references.rs +111 -0
  72. data/rust/rubydex/src/model/string_ref.rs +50 -0
  73. data/rust/rubydex/src/model/visibility.rs +41 -0
  74. data/rust/rubydex/src/model.rs +15 -0
  75. data/rust/rubydex/src/offset.rs +147 -0
  76. data/rust/rubydex/src/position.rs +6 -0
  77. data/rust/rubydex/src/query.rs +1841 -0
  78. data/rust/rubydex/src/resolution.rs +6517 -0
  79. data/rust/rubydex/src/stats/memory.rs +71 -0
  80. data/rust/rubydex/src/stats/orphan_report.rs +264 -0
  81. data/rust/rubydex/src/stats/timer.rs +127 -0
  82. data/rust/rubydex/src/stats.rs +11 -0
  83. data/rust/rubydex/src/test_utils/context.rs +226 -0
  84. data/rust/rubydex/src/test_utils/graph_test.rs +730 -0
  85. data/rust/rubydex/src/test_utils/local_graph_test.rs +602 -0
  86. data/rust/rubydex/src/test_utils.rs +52 -0
  87. data/rust/rubydex/src/visualization/dot.rs +192 -0
  88. data/rust/rubydex/src/visualization.rs +6 -0
  89. data/rust/rubydex/tests/cli.rs +185 -0
  90. data/rust/rubydex-mcp/Cargo.toml +28 -0
  91. data/rust/rubydex-mcp/src/main.rs +48 -0
  92. data/rust/rubydex-mcp/src/server.rs +1145 -0
  93. data/rust/rubydex-mcp/src/tools.rs +49 -0
  94. data/rust/rubydex-mcp/tests/mcp.rs +302 -0
  95. data/rust/rubydex-sys/Cargo.toml +20 -0
  96. data/rust/rubydex-sys/build.rs +14 -0
  97. data/rust/rubydex-sys/cbindgen.toml +12 -0
  98. data/rust/rubydex-sys/src/declaration_api.rs +485 -0
  99. data/rust/rubydex-sys/src/definition_api.rs +443 -0
  100. data/rust/rubydex-sys/src/diagnostic_api.rs +99 -0
  101. data/rust/rubydex-sys/src/document_api.rs +85 -0
  102. data/rust/rubydex-sys/src/graph_api.rs +948 -0
  103. data/rust/rubydex-sys/src/lib.rs +79 -0
  104. data/rust/rubydex-sys/src/location_api.rs +79 -0
  105. data/rust/rubydex-sys/src/name_api.rs +135 -0
  106. data/rust/rubydex-sys/src/reference_api.rs +267 -0
  107. data/rust/rubydex-sys/src/utils.rs +70 -0
  108. data/rust/rustfmt.toml +2 -0
  109. metadata +159 -0
data/rust/Cargo.toml ADDED
@@ -0,0 +1,29 @@
1
+ [workspace]
2
+ members = [
3
+ "rubydex",
4
+ "rubydex-mcp",
5
+ "rubydex-sys",
6
+ ]
7
+
8
+ resolver = "3"
9
+
10
+ [profile.release]
11
+ lto = true
12
+ opt-level = 3
13
+ codegen-units = 1
14
+
15
+ [profile.profiling]
16
+ inherits = "release"
17
+ debug = true
18
+ strip = false
19
+
20
+ [workspace.lints.clippy]
21
+ # See: https://doc.rust-lang.org/clippy/lints.html
22
+ correctness = "deny"
23
+ suspicious = "deny"
24
+ perf = "deny"
25
+ complexity = "deny"
26
+ style = "deny"
27
+ pedantic = "warn"
28
+
29
+ ptr-as-ptr = { level = "deny", priority = 1 }
data/rust/about.hbs ADDED
@@ -0,0 +1,78 @@
1
+ <html>
2
+
3
+ <head>
4
+ <style>
5
+ @media (prefers-color-scheme: dark) {
6
+ body {
7
+ background: #333;
8
+ color: white;
9
+ }
10
+
11
+ a {
12
+ color: skyblue;
13
+ }
14
+ }
15
+
16
+ .container {
17
+ font-family: sans-serif;
18
+ max-width: 800px;
19
+ margin: 0 auto;
20
+ }
21
+
22
+ .intro {
23
+ text-align: center;
24
+ }
25
+
26
+ .licenses-list {
27
+ list-style-type: none;
28
+ margin: 0;
29
+ padding: 0;
30
+ }
31
+
32
+ .license-used-by {
33
+ margin-top: -10px;
34
+ }
35
+
36
+ .license-text {
37
+ max-height: 200px;
38
+ overflow-y: scroll;
39
+ white-space: pre-wrap;
40
+ }
41
+ </style>
42
+ </head>
43
+
44
+ <body>
45
+ <main class="container">
46
+ <div class="intro">
47
+ <h1>Third Party Licenses</h1>
48
+ <p>This page lists the licenses of the projects used in Rubydex.</p>
49
+ </div>
50
+
51
+ <h2>Overview of licenses:</h2>
52
+ <ul class="licenses-overview">
53
+ {{#each overview}}
54
+ <li><a href="#{{id}}">{{name}}</a> ({{count}})</li>
55
+ {{/each}}
56
+ </ul>
57
+
58
+ <h2>All license text:</h2>
59
+ <ul class="licenses-list">
60
+ {{#each licenses}}
61
+ <li class="license">
62
+ <h3 id="{{id}}">{{name}}</h3>
63
+ <h4>Used by:</h4>
64
+ <ul class="license-used-by">
65
+ {{#each used_by}}
66
+ <li><a
67
+ href="{{#if crate.repository}} {{crate.repository}} {{else}} https://crates.io/crates/{{crate.name}} {{/if}}">{{crate.name}}
68
+ {{crate.version}}</a></li>
69
+ {{/each}}
70
+ </ul>
71
+ <pre class="license-text">{{text}}</pre>
72
+ </li>
73
+ {{/each}}
74
+ </ul>
75
+ </main>
76
+ </body>
77
+
78
+ </html>
data/rust/about.toml ADDED
@@ -0,0 +1,10 @@
1
+ accepted = [
2
+ "Apache-2.0",
3
+ "MIT",
4
+ "BSD-3-Clause",
5
+ "BSD-2-Clause",
6
+ "Unicode-3.0",
7
+ "ISC",
8
+ "BSL-1.0",
9
+ "MPL-2.0"
10
+ ]
@@ -0,0 +1,42 @@
1
+ [package]
2
+ name = "rubydex"
3
+ version = "0.1.0"
4
+ edition = "2024"
5
+ rust-version = "1.89.0"
6
+ license = "MIT"
7
+
8
+ [[bin]]
9
+ name = "rubydex_cli"
10
+ path = "src/main.rs"
11
+
12
+ [lib]
13
+ crate-type = ["rlib"]
14
+
15
+ [features]
16
+ test_utils = ["dep:tempfile"]
17
+
18
+ [dependencies]
19
+ ruby-prism = "1.9.0"
20
+ ruby-rbs = "0.3"
21
+ url = "2.5.4"
22
+ xxhash-rust = { version = "0.8.15", features = ["xxh3"] }
23
+ clap = { version = "4.5.16", features = ["derive"] }
24
+ glob = "0.3.2"
25
+ bitflags = "2.9"
26
+ bytecount = "0.6.9"
27
+ libc = "0.2"
28
+ line-index = "0.1.2"
29
+ tempfile = { version = "3.0", optional = true }
30
+ crossbeam-deque = "0.8"
31
+ crossbeam-utils = "0.8"
32
+ crossbeam-channel = "0.5"
33
+
34
+ [dev-dependencies]
35
+ rubydex = { path = ".", features = ["test_utils"] }
36
+ tempfile = "3.0"
37
+ assert_cmd = "2.0"
38
+ predicates = "3.1"
39
+ regex = "1.10"
40
+
41
+ [lints]
42
+ workspace = true
@@ -0,0 +1,13 @@
1
+ /// Asserts the memory size of a struct at compile time in bytes
2
+ #[macro_export]
3
+ macro_rules! assert_mem_size {
4
+ ($struct:ident, $size:expr) => {
5
+ // Check struct name on this assert! error
6
+ const _: () = assert!(
7
+ std::mem::size_of::<$struct>() == $size,
8
+ concat!("Incorrect size for `", stringify!($struct), "`")
9
+ );
10
+ // Check actual size on this array error
11
+ const _: [(); $size] = [(); std::mem::size_of::<$struct>()];
12
+ };
13
+ }
@@ -0,0 +1,110 @@
1
+ #[cfg(any(test, feature = "test_utils"))]
2
+ use crate::model::document::Document;
3
+ use crate::{model::ids::UriId, offset::Offset};
4
+
5
+ #[derive(Debug)]
6
+ pub struct Diagnostic {
7
+ rule: Rule,
8
+ uri_id: UriId,
9
+ offset: Offset,
10
+ message: String,
11
+ }
12
+
13
+ impl Diagnostic {
14
+ #[must_use]
15
+ pub fn new(rule: Rule, uri_id: UriId, offset: Offset, message: String) -> Self {
16
+ Self {
17
+ rule,
18
+ uri_id,
19
+ offset,
20
+ message,
21
+ }
22
+ }
23
+
24
+ #[must_use]
25
+ pub fn rule(&self) -> &Rule {
26
+ &self.rule
27
+ }
28
+
29
+ #[must_use]
30
+ pub fn uri_id(&self) -> &UriId {
31
+ &self.uri_id
32
+ }
33
+
34
+ #[must_use]
35
+ pub fn offset(&self) -> &Offset {
36
+ &self.offset
37
+ }
38
+
39
+ #[must_use]
40
+ pub fn message(&self) -> &str {
41
+ &self.message
42
+ }
43
+
44
+ #[cfg(any(test, feature = "test_utils"))]
45
+ #[must_use]
46
+ pub fn formatted(&self, document: &Document) -> String {
47
+ format!(
48
+ "{}: {} ({})",
49
+ self.rule(),
50
+ self.message(),
51
+ self.offset().to_display_range(document)
52
+ )
53
+ }
54
+ }
55
+
56
+ fn camel_to_snake(s: &str) -> String {
57
+ let mut snake = String::new();
58
+ for (i, ch) in s.chars().enumerate() {
59
+ if ch.is_uppercase() {
60
+ if i != 0 {
61
+ snake.push('-');
62
+ }
63
+ for lc in ch.to_lowercase() {
64
+ snake.push(lc);
65
+ }
66
+ } else {
67
+ snake.push(ch);
68
+ }
69
+ }
70
+ snake
71
+ }
72
+
73
+ macro_rules! rules {
74
+ (
75
+ $( $variant:ident );* $(;)?
76
+ ) => {
77
+ #[derive(Debug, Copy, Clone, PartialEq, Eq)]
78
+ pub enum Rule {
79
+ $(
80
+ $variant,
81
+ )*
82
+ }
83
+
84
+ impl std::fmt::Display for Rule {
85
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
86
+ write!(f, "{}", match self {
87
+ $(
88
+ Rule::$variant => camel_to_snake(stringify!($variant)),
89
+ )*
90
+ })
91
+ }
92
+ }
93
+ }
94
+ }
95
+
96
+ rules! {
97
+ // Parsing
98
+ ParseError;
99
+ ParseWarning;
100
+
101
+ // Indexing
102
+ DynamicConstantReference;
103
+ DynamicSingletonDefinition;
104
+ DynamicAncestor;
105
+ TopLevelMixinSelf;
106
+ InvalidPrivateConstant;
107
+ InvalidMethodVisibility;
108
+
109
+ // Resolution
110
+ }
@@ -0,0 +1,28 @@
1
+ macro_rules! errors {
2
+ (
3
+ $( $variant:ident );* $(;)?
4
+ ) => {
5
+ #[derive(Debug, PartialEq, Eq)]
6
+ pub enum Errors {
7
+ $(
8
+ $variant(String),
9
+ )*
10
+ }
11
+
12
+ impl std::fmt::Display for Errors {
13
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
14
+ match self {
15
+ $(
16
+ Errors::$variant(msg) => write!(f, "{}: {}", stringify!($variant), msg),
17
+ )*
18
+ }
19
+ }
20
+ }
21
+
22
+ impl std::error::Error for Errors {}
23
+ }
24
+ }
25
+
26
+ errors!(
27
+ FileError;
28
+ );
@@ -0,0 +1,224 @@
1
+ use std::collections::hash_map::Entry;
2
+
3
+ use crate::diagnostic::{Diagnostic, Rule};
4
+ use crate::model::definitions::Definition;
5
+ use crate::model::document::Document;
6
+ use crate::model::graph::NameDependent;
7
+ use crate::model::identity_maps::IdentityHashMap;
8
+ use crate::model::ids::{ConstantReferenceId, DefinitionId, MethodReferenceId, NameId, StringId, UriId};
9
+ use crate::model::name::{Name, NameRef};
10
+ use crate::model::references::{ConstantReference, MethodRef};
11
+ use crate::model::string_ref::StringRef;
12
+ use crate::offset::Offset;
13
+
14
+ type LocalGraphParts = (
15
+ UriId,
16
+ Document,
17
+ IdentityHashMap<DefinitionId, Definition>,
18
+ IdentityHashMap<StringId, StringRef>,
19
+ IdentityHashMap<NameId, NameRef>,
20
+ IdentityHashMap<ConstantReferenceId, ConstantReference>,
21
+ IdentityHashMap<MethodReferenceId, MethodRef>,
22
+ IdentityHashMap<NameId, Vec<NameDependent>>,
23
+ );
24
+
25
+ #[derive(Debug)]
26
+ pub struct LocalGraph {
27
+ uri_id: UriId,
28
+ document: Document,
29
+ definitions: IdentityHashMap<DefinitionId, Definition>,
30
+ strings: IdentityHashMap<StringId, StringRef>,
31
+ names: IdentityHashMap<NameId, NameRef>,
32
+ constant_references: IdentityHashMap<ConstantReferenceId, ConstantReference>,
33
+ method_references: IdentityHashMap<MethodReferenceId, MethodRef>,
34
+ name_dependents: IdentityHashMap<NameId, Vec<NameDependent>>,
35
+ }
36
+
37
+ impl LocalGraph {
38
+ #[must_use]
39
+ pub fn new(uri_id: UriId, document: Document) -> Self {
40
+ Self {
41
+ uri_id,
42
+ document,
43
+ definitions: IdentityHashMap::default(),
44
+ strings: IdentityHashMap::default(),
45
+ names: IdentityHashMap::default(),
46
+ constant_references: IdentityHashMap::default(),
47
+ method_references: IdentityHashMap::default(),
48
+ name_dependents: IdentityHashMap::default(),
49
+ }
50
+ }
51
+
52
+ #[must_use]
53
+ pub fn uri_id(&self) -> UriId {
54
+ self.uri_id
55
+ }
56
+
57
+ #[must_use]
58
+ pub fn document(&self) -> &Document {
59
+ &self.document
60
+ }
61
+
62
+ // Definitions
63
+
64
+ #[must_use]
65
+ pub fn definitions(&self) -> &IdentityHashMap<DefinitionId, Definition> {
66
+ &self.definitions
67
+ }
68
+
69
+ #[must_use]
70
+ pub fn get_definition_mut(&mut self, definition_id: DefinitionId) -> Option<&mut Definition> {
71
+ self.definitions.get_mut(&definition_id)
72
+ }
73
+
74
+ pub fn add_definition(&mut self, definition: Definition) -> DefinitionId {
75
+ let definition_id = definition.id();
76
+
77
+ if let Some(name_id) = definition.name_id() {
78
+ self.name_dependents
79
+ .entry(*name_id)
80
+ .or_default()
81
+ .push(NameDependent::Definition(definition_id));
82
+ }
83
+
84
+ if self.definitions.insert(definition_id, definition).is_some() {
85
+ debug_assert!(false, "DefinitionId collision in local graph");
86
+ }
87
+
88
+ self.document.add_definition(definition_id);
89
+ definition_id
90
+ }
91
+
92
+ // Strings
93
+
94
+ #[must_use]
95
+ pub fn strings(&self) -> &IdentityHashMap<StringId, StringRef> {
96
+ &self.strings
97
+ }
98
+
99
+ pub fn intern_string(&mut self, string: String) -> StringId {
100
+ let string_id = StringId::from(&string);
101
+
102
+ match self.strings.entry(string_id) {
103
+ Entry::Occupied(mut entry) => {
104
+ debug_assert!(string == **entry.get(), "StringId collision in local graph");
105
+ entry.get_mut().increment_ref_count(1);
106
+ }
107
+ Entry::Vacant(entry) => {
108
+ entry.insert(StringRef::new(string));
109
+ }
110
+ }
111
+
112
+ string_id
113
+ }
114
+
115
+ // Names
116
+
117
+ #[must_use]
118
+ pub fn names(&self) -> &IdentityHashMap<NameId, NameRef> {
119
+ &self.names
120
+ }
121
+
122
+ pub fn add_name(&mut self, name: Name) -> NameId {
123
+ let name_id = name.id();
124
+
125
+ match self.names.entry(name_id) {
126
+ Entry::Occupied(mut entry) => {
127
+ debug_assert!(*entry.get() == name, "NameId collision in local graph");
128
+ entry.get_mut().increment_ref_count(1);
129
+ }
130
+ Entry::Vacant(entry) => {
131
+ if let Some(&parent_scope) = name.parent_scope().as_ref() {
132
+ self.name_dependents
133
+ .entry(parent_scope)
134
+ .or_default()
135
+ .push(NameDependent::ChildName(name_id));
136
+ }
137
+ if let Some(&nesting_id) = name.nesting().as_ref() {
138
+ self.name_dependents
139
+ .entry(nesting_id)
140
+ .or_default()
141
+ .push(NameDependent::NestedName(name_id));
142
+ }
143
+ entry.insert(NameRef::Unresolved(Box::new(name)));
144
+ }
145
+ }
146
+
147
+ name_id
148
+ }
149
+
150
+ // Constant references
151
+
152
+ #[must_use]
153
+ pub fn constant_references(&self) -> &IdentityHashMap<ConstantReferenceId, ConstantReference> {
154
+ &self.constant_references
155
+ }
156
+
157
+ pub fn add_constant_reference(&mut self, reference: ConstantReference) -> ConstantReferenceId {
158
+ let reference_id = reference.id();
159
+ self.name_dependents
160
+ .entry(*reference.name_id())
161
+ .or_default()
162
+ .push(NameDependent::Reference(reference_id));
163
+
164
+ if self.constant_references.insert(reference_id, reference).is_some() {
165
+ debug_assert!(false, "ReferenceId collision in local graph");
166
+ }
167
+
168
+ self.document.add_constant_reference(reference_id);
169
+ reference_id
170
+ }
171
+
172
+ // Method references
173
+
174
+ #[must_use]
175
+ pub fn method_references(&self) -> &IdentityHashMap<MethodReferenceId, MethodRef> {
176
+ &self.method_references
177
+ }
178
+
179
+ pub fn add_method_reference(&mut self, reference: MethodRef) -> MethodReferenceId {
180
+ let reference_id = reference.id();
181
+
182
+ if self.method_references.insert(reference_id, reference).is_some() {
183
+ debug_assert!(false, "ReferenceId collision in local graph");
184
+ }
185
+
186
+ self.document.add_method_reference(reference_id);
187
+ reference_id
188
+ }
189
+
190
+ // Diagnostics
191
+
192
+ #[must_use]
193
+ pub fn diagnostics(&self) -> &[Diagnostic] {
194
+ self.document.diagnostics()
195
+ }
196
+
197
+ pub fn add_diagnostic(&mut self, rule: Rule, offset: Offset, message: String) {
198
+ let diagnostic = Diagnostic::new(rule, self.uri_id, offset, message);
199
+ self.document.add_diagnostic(diagnostic);
200
+ }
201
+
202
+ // Name dependents
203
+
204
+ #[must_use]
205
+ pub fn name_dependents(&self) -> &IdentityHashMap<NameId, Vec<NameDependent>> {
206
+ &self.name_dependents
207
+ }
208
+
209
+ // Into parts
210
+
211
+ #[must_use]
212
+ pub fn into_parts(self) -> LocalGraphParts {
213
+ (
214
+ self.uri_id,
215
+ self.document,
216
+ self.definitions,
217
+ self.strings,
218
+ self.names,
219
+ self.constant_references,
220
+ self.method_references,
221
+ self.name_dependents,
222
+ )
223
+ }
224
+ }