fix datatype byte_idx out of range

This commit is contained in:
light-ly 2024-11-16 11:34:04 +08:00
parent 05621800a4
commit f325142046

View File

@ -734,16 +734,11 @@ pub fn data_dec(
var.symbol_kind = SymbolKind::VARIABLE; var.symbol_kind = SymbolKind::VARIABLE;
} }
for var in decs { 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 { data.push(Declaration::Scope(GenericScope {
ident: var.ident, ident: var.ident,
byte_idx: var.byte_idx, byte_idx: var.byte_idx,
start: x.start, start: x.start,
end: fix_end, end: x.end.max(var.byte_idx + 1),
url: url.clone(), url: url.clone(),
type_str: var.type_str, type_str: var.type_str,
completion_kind: x.completion_kind, completion_kind: x.completion_kind,
@ -807,6 +802,7 @@ pub fn data_dec(
let ident = get_ident(tree, RefNode::TypeIdentifier(&y.nodes.2)); let ident = get_ident(tree, RefNode::TypeIdentifier(&y.nodes.2));
def.ident = ident.0; def.ident = ident.0;
def.byte_idx = ident.1; def.byte_idx = ident.1;
def.end = def.end.max(def.byte_idx + 1);
for _ in &y.nodes.3 { for _ in &y.nodes.3 {
let tokens = &mut def.type_str; let tokens = &mut def.type_str;
advance_until_leave!( advance_until_leave!(
@ -902,6 +898,7 @@ pub fn data_dec(
let ident = get_ident(tree, RefNode::NetTypeIdentifier(&y.nodes.2)); let ident = get_ident(tree, RefNode::NetTypeIdentifier(&y.nodes.2));
def.ident = ident.0; def.ident = ident.0;
def.byte_idx = ident.1; def.byte_idx = ident.1;
def.end = def.end.max(def.byte_idx + 1);
let mut tokens = String::new(); let mut tokens = String::new();
advance_until_enter!( advance_until_enter!(
tokens, tokens,