Skip to content

Commit

Permalink
fix: fix unexpected complete item in schema doc. (#1514)
Browse files Browse the repository at this point in the history
* fix: fix error complete item in schema doc. Add CommentOrDocSymbol in advanced resolver to represent scehma doc

Signed-off-by: he1pa <18012015693@163.com>

* fmt

Signed-off-by: he1pa <18012015693@163.com>

---------

Signed-off-by: he1pa <18012015693@163.com>
  • Loading branch information
He1pa committed Jul 22, 2024
1 parent 0c20ad2 commit 6385e30
Show file tree
Hide file tree
Showing 5 changed files with 46 additions and 8 deletions.
17 changes: 14 additions & 3 deletions kclvm/sema/src/advanced_resolver/node.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,8 @@ use crate::{
core::{
scope::LocalSymbolScopeKind,
symbol::{
CommentSymbol, DecoratorSymbol, ExpressionSymbol, Symbol, SymbolHint, SymbolHintKind,
SymbolRef, SymbolSemanticInfo, UnresolvedSymbol, ValueSymbol,
CommentOrDocSymbol, DecoratorSymbol, ExpressionSymbol, Symbol, SymbolHint,
SymbolHintKind, SymbolRef, SymbolSemanticInfo, UnresolvedSymbol, ValueSymbol,
},
},
ty::{self, Type, TypeKind, SCHEMA_MEMBER_FUNCTIONS},
Expand Down Expand Up @@ -308,6 +308,17 @@ impl<'ctx> MutSelfTypedResultWalker<'ctx> for AdvancedResolver<'ctx> {
}
last_end_pos = index_signature.get_end_pos();
}

if let Some(doc) = &schema_stmt.doc {
let (start, end) = doc.get_span_pos();
let comment_symbol = CommentOrDocSymbol::new(start, end, doc.node.clone());
self.gs.get_symbols_mut().alloc_comment_symbol(
comment_symbol,
self.ctx.get_node_key(&self.ctx.cur_node),
self.ctx.current_pkgpath.clone().unwrap(),
);
}

for stmt in schema_stmt.body.iter() {
if let Some(attribute_symbol) = self.stmt(&stmt)? {
let name = self
Expand Down Expand Up @@ -860,7 +871,7 @@ impl<'ctx> MutSelfTypedResultWalker<'ctx> for AdvancedResolver<'ctx> {

fn walk_comment(&mut self, comment: &'ctx ast::Comment) -> Self::Result {
let (start, end) = (self.ctx.start_pos.clone(), self.ctx.end_pos.clone());
let comment_symbol = CommentSymbol::new(start, end, comment.text.clone());
let comment_symbol = CommentOrDocSymbol::new(start, end, comment.text.clone());
Ok(self.gs.get_symbols_mut().alloc_comment_symbol(
comment_symbol,
self.ctx.get_node_key(&self.ctx.cur_node),
Expand Down
10 changes: 5 additions & 5 deletions kclvm/sema/src/core/symbol.rs
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ pub struct SymbolData {
pub(crate) unresolved: Arena<UnresolvedSymbol>,
pub(crate) rules: Arena<RuleSymbol>,
pub(crate) exprs: Arena<ExpressionSymbol>,
pub(crate) comments: Arena<CommentSymbol>,
pub(crate) comments: Arena<CommentOrDocSymbol>,
pub(crate) decorators: Arena<DecoratorSymbol>,
pub(crate) functions: Arena<FunctionSymbol>,

Expand Down Expand Up @@ -792,7 +792,7 @@ impl SymbolData {

pub fn alloc_comment_symbol(
&mut self,
comment: CommentSymbol,
comment: CommentOrDocSymbol,
node_key: NodeKey,
pkg_name: String,
) -> Option<SymbolRef> {
Expand Down Expand Up @@ -2087,15 +2087,15 @@ impl ExpressionSymbol {
}

#[derive(Debug, Clone)]
pub struct CommentSymbol {
pub struct CommentOrDocSymbol {
pub(crate) id: Option<SymbolRef>,
pub(crate) start: Position,
pub(crate) end: Position,
pub(crate) content: String,
pub(crate) sema_info: SymbolSemanticInfo,
}

impl Symbol for CommentSymbol {
impl Symbol for CommentOrDocSymbol {
type SymbolData = SymbolData;
type SemanticInfo = SymbolSemanticInfo;
type SymbolHint = SymbolHint;
Expand Down Expand Up @@ -2183,7 +2183,7 @@ impl Symbol for CommentSymbol {
}
}

impl CommentSymbol {
impl CommentOrDocSymbol {
pub fn new(start: Position, end: Position, content: String) -> Self {
Self {
id: None,
Expand Down
8 changes: 8 additions & 0 deletions kclvm/tools/src/LSP/src/completion.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2048,4 +2048,12 @@ mod tests {
2,
Some('.')
);

completion_label_test_snapshot!(
func_doc_completion,
"src/test_data/completion_test/schema_doc/schema_doc.k",
7,
14,
Some('.')
);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
source: tools/src/LSP/src/completion.rs
expression: "format!(\"{:?}\", got_labels)"
---
[]
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
schema Name:
"""


Attributes
----------
name: str

Examples
--------
"""
name: str

# aaax

0 comments on commit 6385e30

Please sign in to comment.