Skip to content

Commit e2ec779

Browse files
committed
fix: fn range too wide
1 parent d651f1d commit e2ec779

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

src/ast/node/function.rs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ impl Node for FuncDefNode {
7676
}
7777
}
7878
fn emit<'a, 'ctx>(&'a mut self, ctx: &mut Ctx<'a, 'ctx>) -> NodeResult<'ctx> {
79-
ctx.save_if_comment_doc_hover(self.range, Some(self.typenode.doc.clone()));
79+
ctx.save_if_comment_doc_hover(self.typenode.id.range, Some(self.typenode.doc.clone()));
8080
for c in self.typenode.doc.iter_mut() {
8181
c.emit(ctx)?;
8282
}
@@ -105,7 +105,7 @@ impl Node for FuncDefNode {
105105
};
106106
}
107107
ctx.push_semantic_token(self.typenode.ret.range(), SemanticTokenType::TYPE, 0);
108-
let res = ctx.get_type(self.typenode.id.name.as_str(), self.range);
108+
let res = ctx.get_type(self.typenode.id.name.as_str(), self.typenode.id.range);
109109
if res.is_err() {
110110
let diag = res.unwrap_err();
111111
ctx.add_diag(diag.clone());
@@ -285,6 +285,7 @@ impl Node for FuncCallNode {
285285
}
286286
}
287287
fn emit<'a, 'ctx>(&'a mut self, ctx: &mut Ctx<'a, 'ctx>) -> NodeResult<'ctx> {
288+
let id_range = self.id.range();
288289
let mut para_values = Vec::new();
289290
let (func, pltype, _) = self.id.emit(ctx)?;
290291
if pltype.is_none() || !matches!(*RefCell::borrow(&pltype.clone().unwrap()), PLType::FN(_))
@@ -325,7 +326,7 @@ impl Node for FuncCallNode {
325326
&para_values,
326327
format(format_args!("call_{}", RefCell::borrow(&pltype).get_name())).as_str(),
327328
);
328-
ctx.save_if_comment_doc_hover(self.range, Some(fv.doc.clone()));
329+
ctx.save_if_comment_doc_hover(id_range, Some(fv.doc.clone()));
329330
let res = match ret.try_as_basic_value().left() {
330331
Some(v) => Ok((
331332
{
@@ -338,8 +339,8 @@ impl Node for FuncCallNode {
338339
)),
339340
None => Ok((None, Some(*fv.ret_pltype.clone()), TerminatorEnum::NONE)),
340341
};
341-
ctx.set_if_refs_tp(pltype.clone(), self.range);
342-
ctx.send_if_go_to_def(self.range, fv.range, ctx.plmod.path.clone());
342+
ctx.set_if_refs_tp(pltype.clone(), id_range);
343+
ctx.send_if_go_to_def(id_range, fv.range, ctx.plmod.path.clone());
343344
return res;
344345
}
345346
return Err(ctx.add_err(self.range, ErrorCode::NOT_A_FUNCTION));
@@ -359,7 +360,7 @@ impl FuncTypeNode {
359360
&'a mut self,
360361
ctx: &mut crate::ast::ctx::Ctx<'a, 'ctx>,
361362
) -> Result<FunctionValue<'ctx>, PLDiag> {
362-
if let Ok(_) = ctx.get_type(&self.id.name.as_str(), self.range) {
363+
if let Ok(_) = ctx.get_type(&self.id.name.as_str(), self.id.range) {
363364
return Err(ctx.add_err(self.range, ErrorCode::REDEFINE_SYMBOL));
364365
}
365366
let mut param_pltypes = Vec::new();
@@ -381,7 +382,7 @@ impl FuncTypeNode {
381382
ret_pltype: Box::new(self.ret.get_type(ctx)?),
382383
param_pltypes,
383384
param_name,
384-
range: self.range,
385+
range: self.id.range,
385386
refs: Rc::new(RefCell::new(refs)),
386387
doc: self.doc.clone(),
387388
llvmname: if self.declare {
@@ -406,8 +407,8 @@ impl FuncTypeNode {
406407
let res = ftp.get_or_insert_fn(ctx);
407408
let pltype = PLType::FN(ftp);
408409
let pltype = Rc::new(RefCell::new(pltype));
409-
ctx.set_if_refs_tp(pltype.clone(), self.range);
410-
ctx.add_type(self.id.name.clone(), pltype.clone(), self.range)?;
410+
ctx.set_if_refs_tp(pltype.clone(), self.id.range);
411+
ctx.add_type(self.id.name.clone(), pltype.clone(), self.id.range)?;
411412
ctx.add_doc_symbols(pltype);
412413
Ok(res)
413414
}

0 commit comments

Comments
 (0)