1use std::path::Path;
2
3use crate::error::AftError;
4pub use crate::symbols::{Range, Symbol, SymbolMatch};
5
6pub trait LanguageProvider {
10 fn resolve_symbol(&self, file: &Path, name: &str) -> Result<Vec<SymbolMatch>, AftError>;
12
13 fn list_symbols(&self, file: &Path) -> Result<Vec<Symbol>, AftError>;
15}
16
17pub struct StubProvider;
21
22impl LanguageProvider for StubProvider {
23 fn resolve_symbol(&self, _file: &Path, _name: &str) -> Result<Vec<SymbolMatch>, AftError> {
24 Err(AftError::InvalidRequest {
25 message: "no language provider configured".to_string(),
26 })
27 }
28
29 fn list_symbols(&self, _file: &Path) -> Result<Vec<Symbol>, AftError> {
30 Err(AftError::InvalidRequest {
31 message: "no language provider configured".to_string(),
32 })
33 }
34}