From f325142046a3faac6b710503e985c9da7dd355d1 Mon Sep 17 00:00:00 2001 From: light-ly Date: Sat, 16 Nov 2024 11:34:04 +0800 Subject: [PATCH] fix datatype byte_idx out of range --- src/definition/extract_defs.rs | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/definition/extract_defs.rs b/src/definition/extract_defs.rs index 666a7f8..3b8f087 100644 --- a/src/definition/extract_defs.rs +++ b/src/definition/extract_defs.rs @@ -734,16 +734,11 @@ pub fn data_dec( var.symbol_kind = SymbolKind::VARIABLE; } for var in decs { - let fix_end = if var.byte_idx > x.end { - var.byte_idx + 1 - } else { - x.end - }; data.push(Declaration::Scope(GenericScope { ident: var.ident, byte_idx: var.byte_idx, start: x.start, - end: fix_end, + end: x.end.max(var.byte_idx + 1), url: url.clone(), type_str: var.type_str, completion_kind: x.completion_kind, @@ -807,6 +802,7 @@ pub fn data_dec( let ident = get_ident(tree, RefNode::TypeIdentifier(&y.nodes.2)); def.ident = ident.0; def.byte_idx = ident.1; + def.end = def.end.max(def.byte_idx + 1); for _ in &y.nodes.3 { let tokens = &mut def.type_str; advance_until_leave!( @@ -902,6 +898,7 @@ pub fn data_dec( let ident = get_ident(tree, RefNode::NetTypeIdentifier(&y.nodes.2)); def.ident = ident.0; def.byte_idx = ident.1; + def.end = def.end.max(def.byte_idx + 1); let mut tokens = String::new(); advance_until_enter!( tokens,