Skip to main content

scope_engine/language/
go.rs

1use super::{LanguageAdapter, LanguageQueries};
2use tree_sitter::Language;
3
4pub struct GoAdapter;
5
6impl GoAdapter {
7    pub fn new() -> Self {
8        Self
9    }
10}
11
12impl Default for GoAdapter {
13    fn default() -> Self {
14        Self::new()
15    }
16}
17
18impl LanguageAdapter for GoAdapter {
19    fn language_name(&self) -> &'static str {
20        "go"
21    }
22
23    fn extensions(&self) -> &[&'static str] {
24        &["go"]
25    }
26
27    fn language(&self) -> Language {
28        tree_sitter_go::LANGUAGE.into()
29    }
30
31    fn queries(&self) -> LanguageQueries {
32        LanguageQueries {
33            definitions: r#"
34                (function_declaration name: (identifier) @name) @def
35                (method_declaration name: (field_identifier) @name) @def
36                (type_declaration (type_identifier) @name) @def
37            "#,
38            references: r#"
39                (call_expression function: (identifier) @ref) @call
40                (call_expression function: (selector_expression field: (field_identifier) @ref)) @call
41                (type_identifier) @ref
42            "#,
43        }
44    }
45}