From ac0d79f81675f0c2737c69b3687f72f6722e7d1f Mon Sep 17 00:00:00 2001 From: sofia Date: Sun, 3 Aug 2025 21:11:04 +0300 Subject: [PATCH] add trivial semantic tokens --- reid-lsp/src/analysis.rs | 48 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/reid-lsp/src/analysis.rs b/reid-lsp/src/analysis.rs index 08378b1..06e5dfa 100644 --- a/reid-lsp/src/analysis.rs +++ b/reid-lsp/src/analysis.rs @@ -321,6 +321,54 @@ pub fn analyze_context(context: &mir::Context, module: &mir::Module, error: Opti properties: HashMap::new(), types: HashMap::new(), }; + + for (i, token) in module.tokens.iter().enumerate() { + let semantic_token = match &token.token { + Token::DecimalValue(_) => Some(SemanticKind::Number), + Token::HexadecimalValue(_) => Some(SemanticKind::Number), + Token::OctalValue(_) => Some(SemanticKind::Number), + Token::BinaryValue(_) => Some(SemanticKind::Number), + Token::CharLit(_) => Some(SemanticKind::String), + Token::StringLit(_) => Some(SemanticKind::String), + Token::LetKeyword + | Token::MutKeyword + | Token::ImportKeyword + | Token::ReturnKeyword + | Token::FnKeyword + | Token::PubKeyword + | Token::AsKeyword + | Token::If + | Token::Else + | Token::True + | Token::False + | Token::Extern + | Token::Struct + | Token::While + | Token::For + | Token::In + | Token::Impl + | Token::Binop => Some(SemanticKind::Keyword), + Token::Equals + | Token::Plus + | Token::Star + | Token::Minus + | Token::Slash + | Token::Percent + | Token::GreaterThan + | Token::LessThan + | Token::Et + | Token::Pipe + | Token::Hat + | Token::Exclamation + | Token::Comment(_) => Some(SemanticKind::Comment), + _ => None, + }; + if let Some(semantic) = semantic_token { + let symbol = scope.state.new_symbol(i, semantic); + scope.state.set_symbol(i, symbol); + } + } + for import in &module.imports { scope.state.init_types(&import.1, None); if let Some((module_name, _)) = import.0.get(0) {