Skip to content

Commit 4dc2126

Browse files
committed
[IMP] use stop_on_type to handle typing.Self evaluation
1 parent 3346b98 commit 4dc2126

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

server/src/core/python_arch_eval.rs

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1001,15 +1001,20 @@ impl PythonArchEval {
10011001
diagnostics.extend(diags);
10021002
// Check for type annotation `typing.Self`, if so, return a `self` evaluation
10031003
let final_evaluations = evaluations.into_iter().map(|eval|{
1004-
let sym_ptrs = Symbol::follow_ref(&eval.symbol.get_symbol(session, &mut None, diagnostics, None), session, &mut None, false, false, None, None);
1005-
for sym_ptr in sym_ptrs.iter(){
1006-
let EvaluationSymbolPtr::WEAK(sym_weak) = sym_ptr else {continue};
1007-
let Some(sym_rc) = sym_weak.weak.upgrade() else {continue};
1008-
if sym_rc.borrow().match_tree_from_any_entry(session, &(vec![Sy!("typing")], vec![Sy!("Self")])){
1009-
return Evaluation::new_self();
1010-
}
1004+
let sym_ptrs = Symbol::follow_ref(
1005+
&eval.symbol.get_symbol(session, &mut None, diagnostics, None),
1006+
session,
1007+
&mut None,
1008+
false,
1009+
false,
1010+
Some((vec![Sy!("typing")], vec![Sy!("Self")])),
1011+
None
1012+
);
1013+
if sym_ptrs.is_empty() {
1014+
eval
1015+
} else {
1016+
Evaluation::new_self()
10111017
}
1012-
eval
10131018
}).collect::<Vec<_>>();
10141019
func_sym.borrow_mut().set_evaluations(final_evaluations);
10151020
}

0 commit comments

Comments
 (0)