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