Parse source code and extract all references (function calls, variable usages)
(&mut self, source: &str, file_path: &str)
| 54 | |
| 55 | /// Parse source code and extract all references (function calls, variable usages) |
| 56 | pub fn extract_references(&mut self, source: &str, file_path: &str) -> Vec<Reference> { |
| 57 | let tree = match self.parser.parse(source, None) { |
| 58 | Some(t) => t, |
| 59 | None => return vec![], |
| 60 | }; |
| 61 | |
| 62 | let mut references = Vec::new(); |
| 63 | let mut seen = HashSet::new(); |
| 64 | self.walk_tree_for_references( |
| 65 | &tree.root_node(), |
| 66 | source, |
| 67 | file_path, |
| 68 | &mut references, |
| 69 | &mut seen, |
| 70 | ); |
| 71 | references |
| 72 | } |
| 73 | |
| 74 | /// Walk the AST and extract references (function calls, identifier usages) |
| 75 | fn walk_tree_for_references( |
no test coverage detected