mirror of
https://github.com/nushell/nushell.git
synced 2025-06-24 20:01:45 +02:00
fix: deeply nested module id
This commit is contained in:
parent
457cb3652b
commit
302e8ec323
@ -137,13 +137,18 @@ fn try_find_id_in_mod(
|
||||
any_id = false;
|
||||
id_num_ref = id_ref.get();
|
||||
}
|
||||
let block_span = call.arguments.last()?.span();
|
||||
(0..working_set.num_modules())
|
||||
.find(|id| {
|
||||
(any_id || id_num_ref == *id)
|
||||
&& working_set
|
||||
.get_module(ModuleId::new(*id))
|
||||
.span
|
||||
.is_some_and(|mod_span| call.span().contains_span(mod_span))
|
||||
&& working_set.get_module(ModuleId::new(*id)).span.is_some_and(
|
||||
|mod_span| {
|
||||
mod_span.start <= block_span.start + 1
|
||||
&& block_span.start <= mod_span.start
|
||||
&& block_span.end >= mod_span.end
|
||||
&& block_span.end <= mod_span.end + 1
|
||||
},
|
||||
)
|
||||
})
|
||||
.map(ModuleId::new)
|
||||
})?;
|
||||
|
@ -279,7 +279,7 @@ mod hover_tests {
|
||||
open_unchecked(&client_connection, script.clone());
|
||||
|
||||
// For module record
|
||||
let resp = send_hover_request(&client_connection, script, 8, 22);
|
||||
let resp = send_hover_request(&client_connection, script, 8, 42);
|
||||
let result = result_from_message(resp);
|
||||
assert_json_eq!(
|
||||
result.pointer("/contents/value").unwrap(),
|
||||
@ -398,7 +398,6 @@ mod hover_tests {
|
||||
open_unchecked(&client_connection, script.clone());
|
||||
let resp = send_hover_request(&client_connection, script.clone(), 15, 15);
|
||||
let result = result_from_message(resp);
|
||||
|
||||
assert_eq!(
|
||||
result
|
||||
.pointer("/contents/value")
|
||||
@ -408,9 +407,8 @@ mod hover_tests {
|
||||
"\"# cmt\""
|
||||
);
|
||||
|
||||
let resp = send_hover_request(&client_connection, script, 17, 27);
|
||||
let resp = send_hover_request(&client_connection, script.clone(), 17, 27);
|
||||
let result = result_from_message(resp);
|
||||
|
||||
assert_eq!(
|
||||
result
|
||||
.pointer("/contents/value")
|
||||
@ -419,6 +417,17 @@ mod hover_tests {
|
||||
.replace("\\r", ""),
|
||||
"\"# sub cmt\""
|
||||
);
|
||||
|
||||
let resp = send_hover_request(&client_connection, script, 19, 33);
|
||||
let result = result_from_message(resp);
|
||||
assert_eq!(
|
||||
result
|
||||
.pointer("/contents/value")
|
||||
.unwrap()
|
||||
.to_string()
|
||||
.replace("\\r", ""),
|
||||
"\"# sub sub cmt\""
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
2
tests/fixtures/lsp/workspace/baz.nu
vendored
2
tests/fixtures/lsp/workspace/baz.nu
vendored
@ -6,7 +6,7 @@ overlay hide prefix
|
||||
|
||||
use ./foo.nu [ "mod name" cst_mod ]
|
||||
|
||||
$cst_mod."sub module".var_name
|
||||
$cst_mod."sub module"."sub sub module".var_name
|
||||
mod name sub module cmd name
|
||||
let $cst_mod = 1
|
||||
$cst_mod
|
||||
|
5
tests/fixtures/lsp/workspace/foo.nu
vendored
5
tests/fixtures/lsp/workspace/foo.nu
vendored
@ -16,6 +16,9 @@ export module "mod name" {
|
||||
export module cst_mod {
|
||||
# sub cmt
|
||||
export module "sub module" {
|
||||
export const var_name = "const value"
|
||||
# sub sub cmt
|
||||
export module "sub sub module" {
|
||||
export const var_name = "const value"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user