Skip to main content

scope_engine/language/
java.rs

1use super::{LanguageAdapter, LanguageQueries};
2use tree_sitter::Language;
3
4pub struct JavaAdapter;
5
6impl JavaAdapter {
7    #[must_use]
8    pub const fn new() -> Self {
9        Self
10    }
11}
12
13impl Default for JavaAdapter {
14    fn default() -> Self {
15        Self::new()
16    }
17}
18
19impl LanguageAdapter for JavaAdapter {
20    fn language_name(&self) -> &'static str {
21        "java"
22    }
23
24    fn extensions(&self) -> &[&'static str] {
25        &["java"]
26    }
27
28    fn language(&self) -> Language {
29        tree_sitter_java::LANGUAGE.into()
30    }
31
32    fn queries(&self) -> LanguageQueries {
33        LanguageQueries {
34            definitions: r"
35                (method_declaration name: (identifier) @name) @def
36                (class_declaration name: (identifier) @name) @def
37                (interface_declaration name: (identifier) @name) @def
38                (enum_declaration name: (identifier) @name) @def
39                (constructor_declaration name: (identifier) @name) @def
40                (field_declaration declarator: (variable_declarator name: (identifier) @name)) @def
41                (local_variable_declaration declarator: (variable_declarator name: (identifier) @name)) @def
42            ",
43            references: r"
44                (method_invocation name: (identifier) @ref) @call
45                (object_creation_expression type: (type_identifier) @ref) @call
46                (type_identifier) @ref
47                (identifier) @ref
48            ",
49        }
50    }
51}