tree-sitter--tuple-to-struct-field-access.md

 1+++
 2repository_url = "git@github.com:tree-sitter/tree-sitter"
 3revision = "24007727d42b4caceda3095ac685c463fae1ba1a"
 4+++
 5
 6## Edit History
 7
 8```diff
 9--- a/tree-sitter/crates/loader/src/loader.rs
10+++ b/tree-sitter/crates/loader/src/loader.rs
11@@ -604,7 +604,7 @@
12
13 pub struct Loader {
14     pub parser_lib_path: PathBuf,
15-    languages_by_id: Vec<(PathBuf, OnceCell<Language>, Option<Vec<PathBuf>>)>,
16+    languages_by_id: Vec<LanguageEntry>,
17     language_configurations: Vec<LanguageConfiguration<'static>>,
18     language_configuration_ids_by_file_type: HashMap<String, Vec<usize>>,
19     language_configuration_in_current_path: Option<usize>,
20@@ -619,6 +619,12 @@
21
22     #[cfg(feature = "wasm")]
23     wasm_store: Mutex<Option<tree_sitter::WasmStore>>,
24 }
25+
26+struct LanguageEntry {
27+    path: PathBuf,
28+    language: OnceCell<Language>,
29+    external_files: Option<Vec<PathBuf>>,
30+}
31
32 pub struct CompileConfig<'a> {
33```
34
35## Cursor Position
36
37```tree-sitter/crates/loader/src/loader.rs
38    #[must_use]
39    pub fn get_all_language_configurations(&self) -> Vec<(&LanguageConfiguration, &Path)> {
40        self.language_configurations
41            .iter()
42            .map(|c| (c, self.languages_by_id[c.language_id].0.as_ref()))
43            //                                               ^[CURSOR_POSITION]
44            .collect()
45    }
46```
47
48## Expected Patch
49
50```diff
51--- a/tree-sitter/crates/loader/src/loader.rs
52+++ b/tree-sitter/crates/loader/src/loader.rs
53@@ -773,7 +773,7 @@
54     pub fn get_all_language_configurations(&self) -> Vec<(&LanguageConfiguration, &Path)> {
55         self.language_configurations
56             .iter()
57-            .map(|c| (c, self.languages_by_id[c.language_id].0.as_ref()))
58+            .map(|c| (c, self.languages_by_id[c.language_id].path.as_ref()))
59             .collect()
60     }
61
62```