mirror of
https://github.com/nushell/nushell.git
synced 2025-06-25 12:21:37 +02:00
refactor: less clone
This commit is contained in:
parent
8b6d6708e0
commit
3f9e6ab985
@ -355,7 +355,7 @@ fn try_find_id_in_overlay(
|
|||||||
None
|
None
|
||||||
}
|
}
|
||||||
|
|
||||||
/// For variable references `$foo`
|
/// Trim leading `$` sign For variable references `$foo`
|
||||||
fn strip_dollar_sign(span: Span, working_set: &StateWorkingSet<'_>) -> (Box<[u8]>, Span) {
|
fn strip_dollar_sign(span: Span, working_set: &StateWorkingSet<'_>) -> (Box<[u8]>, Span) {
|
||||||
let content = working_set.get_span_contents(span);
|
let content = working_set.get_span_contents(span);
|
||||||
if content.starts_with(b"$") {
|
if content.starts_with(b"$") {
|
||||||
@ -379,7 +379,6 @@ fn find_id_in_expr(
|
|||||||
}
|
}
|
||||||
let span = expr.span;
|
let span = expr.span;
|
||||||
match &expr.expr {
|
match &expr.expr {
|
||||||
// trim leading `$` sign
|
|
||||||
Expr::VarDecl(var_id) | Expr::Var(var_id) => {
|
Expr::VarDecl(var_id) | Expr::Var(var_id) => {
|
||||||
let (name, clean_span) = strip_dollar_sign(span, working_set);
|
let (name, clean_span) = strip_dollar_sign(span, working_set);
|
||||||
FindMapResult::Found((Id::Variable(*var_id, name), clean_span))
|
FindMapResult::Found((Id::Variable(*var_id, name), clean_span))
|
||||||
|
@ -588,7 +588,7 @@ mod tests {
|
|||||||
])
|
])
|
||||||
);
|
);
|
||||||
|
|
||||||
let resp = send_complete_request(&client_connection, script.clone(), 7, 15);
|
let resp = send_complete_request(&client_connection, script, 7, 15);
|
||||||
assert_json_include!(
|
assert_json_include!(
|
||||||
actual: result_from_message(resp),
|
actual: result_from_message(resp),
|
||||||
expected: serde_json::json!([
|
expected: serde_json::json!([
|
||||||
|
@ -213,7 +213,7 @@ mod tests {
|
|||||||
let script = path_to_uri(&script);
|
let script = path_to_uri(&script);
|
||||||
|
|
||||||
open_unchecked(&client_connection, script.clone());
|
open_unchecked(&client_connection, script.clone());
|
||||||
let resp = send_inlay_hint_request(&client_connection, script.clone());
|
let resp = send_inlay_hint_request(&client_connection, script);
|
||||||
|
|
||||||
assert_json_eq!(
|
assert_json_eq!(
|
||||||
result_from_message(resp),
|
result_from_message(resp),
|
||||||
@ -240,7 +240,7 @@ mod tests {
|
|||||||
let script = path_to_uri(&script);
|
let script = path_to_uri(&script);
|
||||||
|
|
||||||
open_unchecked(&client_connection, script.clone());
|
open_unchecked(&client_connection, script.clone());
|
||||||
let resp = send_inlay_hint_request(&client_connection, script.clone());
|
let resp = send_inlay_hint_request(&client_connection, script);
|
||||||
|
|
||||||
assert_json_eq!(
|
assert_json_eq!(
|
||||||
result_from_message(resp),
|
result_from_message(resp),
|
||||||
@ -268,7 +268,7 @@ mod tests {
|
|||||||
let script = path_to_uri(&script);
|
let script = path_to_uri(&script);
|
||||||
|
|
||||||
open_unchecked(&client_connection, script.clone());
|
open_unchecked(&client_connection, script.clone());
|
||||||
let resp = send_inlay_hint_request(&client_connection, script.clone());
|
let resp = send_inlay_hint_request(&client_connection, script);
|
||||||
|
|
||||||
assert_json_eq!(
|
assert_json_eq!(
|
||||||
result_from_message(resp),
|
result_from_message(resp),
|
||||||
@ -333,7 +333,7 @@ mod tests {
|
|||||||
let (client_connection, _recv) = initialize_language_server(Some(&config), None);
|
let (client_connection, _recv) = initialize_language_server(Some(&config), None);
|
||||||
|
|
||||||
open_unchecked(&client_connection, script.clone());
|
open_unchecked(&client_connection, script.clone());
|
||||||
let resp = send_inlay_hint_request(&client_connection, script.clone());
|
let resp = send_inlay_hint_request(&client_connection, script);
|
||||||
|
|
||||||
assert_json_eq!(
|
assert_json_eq!(
|
||||||
result_from_message(resp),
|
result_from_message(resp),
|
||||||
|
@ -352,7 +352,7 @@ impl LanguageServer {
|
|||||||
if self.need_parse {
|
if self.need_parse {
|
||||||
// TODO: incremental parsing
|
// TODO: incremental parsing
|
||||||
// add block to working_set for later references
|
// add block to working_set for later references
|
||||||
working_set.add_block(block.clone());
|
working_set.add_block(block);
|
||||||
self.cached_state_delta = Some(working_set.delta.clone());
|
self.cached_state_delta = Some(working_set.delta.clone());
|
||||||
self.need_parse = false;
|
self.need_parse = false;
|
||||||
}
|
}
|
||||||
@ -615,7 +615,7 @@ mod tests {
|
|||||||
method: DidChangeTextDocument::METHOD.to_string(),
|
method: DidChangeTextDocument::METHOD.to_string(),
|
||||||
params: serde_json::to_value(DidChangeTextDocumentParams {
|
params: serde_json::to_value(DidChangeTextDocumentParams {
|
||||||
text_document: lsp_types::VersionedTextDocumentIdentifier {
|
text_document: lsp_types::VersionedTextDocumentIdentifier {
|
||||||
uri: uri.clone(),
|
uri,
|
||||||
version: 2,
|
version: 2,
|
||||||
},
|
},
|
||||||
content_changes: vec![TextDocumentContentChangeEvent {
|
content_changes: vec![TextDocumentContentChangeEvent {
|
||||||
|
@ -19,20 +19,19 @@ impl LanguageServer {
|
|||||||
docs.listen(notification.method.as_str(), ¬ification.params);
|
docs.listen(notification.method.as_str(), ¬ification.params);
|
||||||
match notification.method.as_str() {
|
match notification.method.as_str() {
|
||||||
DidOpenTextDocument::METHOD => {
|
DidOpenTextDocument::METHOD => {
|
||||||
let params: DidOpenTextDocumentParams =
|
let params: DidOpenTextDocumentParams = serde_json::from_value(notification.params)
|
||||||
serde_json::from_value(notification.params.clone())
|
|
||||||
.expect("Expect receive DidOpenTextDocumentParams");
|
.expect("Expect receive DidOpenTextDocumentParams");
|
||||||
Some(params.text_document.uri)
|
Some(params.text_document.uri)
|
||||||
}
|
}
|
||||||
DidChangeTextDocument::METHOD => {
|
DidChangeTextDocument::METHOD => {
|
||||||
let params: DidChangeTextDocumentParams =
|
let params: DidChangeTextDocumentParams =
|
||||||
serde_json::from_value(notification.params.clone())
|
serde_json::from_value(notification.params)
|
||||||
.expect("Expect receive DidChangeTextDocumentParams");
|
.expect("Expect receive DidChangeTextDocumentParams");
|
||||||
Some(params.text_document.uri)
|
Some(params.text_document.uri)
|
||||||
}
|
}
|
||||||
DidCloseTextDocument::METHOD => {
|
DidCloseTextDocument::METHOD => {
|
||||||
let params: DidCloseTextDocumentParams =
|
let params: DidCloseTextDocumentParams =
|
||||||
serde_json::from_value(notification.params.clone())
|
serde_json::from_value(notification.params)
|
||||||
.expect("Expect receive DidCloseTextDocumentParams");
|
.expect("Expect receive DidCloseTextDocumentParams");
|
||||||
let uri = params.text_document.uri;
|
let uri = params.text_document.uri;
|
||||||
self.symbol_cache.drop(&uri);
|
self.symbol_cache.drop(&uri);
|
||||||
@ -41,7 +40,7 @@ impl LanguageServer {
|
|||||||
}
|
}
|
||||||
DidChangeWorkspaceFolders::METHOD => {
|
DidChangeWorkspaceFolders::METHOD => {
|
||||||
let params: DidChangeWorkspaceFoldersParams =
|
let params: DidChangeWorkspaceFoldersParams =
|
||||||
serde_json::from_value(notification.params.clone())
|
serde_json::from_value(notification.params)
|
||||||
.expect("Expect receive DidChangeWorkspaceFoldersParams");
|
.expect("Expect receive DidChangeWorkspaceFoldersParams");
|
||||||
for added in params.event.added {
|
for added in params.event.added {
|
||||||
self.workspace_folders.insert(added.name.clone(), added);
|
self.workspace_folders.insert(added.name.clone(), added);
|
||||||
@ -155,7 +154,7 @@ mod tests {
|
|||||||
let script = path_to_uri(&script);
|
let script = path_to_uri(&script);
|
||||||
|
|
||||||
open_unchecked(&client_connection, script.clone());
|
open_unchecked(&client_connection, script.clone());
|
||||||
let resp = send_hover_request(&client_connection, script.clone(), 0, 0);
|
let resp = send_hover_request(&client_connection, script, 0, 0);
|
||||||
|
|
||||||
assert_json_eq!(
|
assert_json_eq!(
|
||||||
result_from_message(resp),
|
result_from_message(resp),
|
||||||
@ -190,7 +189,7 @@ hello"#,
|
|||||||
),
|
),
|
||||||
None,
|
None,
|
||||||
);
|
);
|
||||||
let resp = send_hover_request(&client_connection, script.clone(), 3, 0);
|
let resp = send_hover_request(&client_connection, script, 3, 0);
|
||||||
|
|
||||||
assert_json_eq!(
|
assert_json_eq!(
|
||||||
result_from_message(resp),
|
result_from_message(resp),
|
||||||
@ -229,7 +228,7 @@ hello"#,
|
|||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
);
|
);
|
||||||
let resp = send_hover_request(&client_connection, script.clone(), 3, 0);
|
let resp = send_hover_request(&client_connection, script, 3, 0);
|
||||||
|
|
||||||
assert_json_eq!(
|
assert_json_eq!(
|
||||||
result_from_message(resp),
|
result_from_message(resp),
|
||||||
|
@ -144,7 +144,7 @@ mod tests {
|
|||||||
let script = path_to_uri(&script);
|
let script = path_to_uri(&script);
|
||||||
|
|
||||||
open_unchecked(&client_connection, script.clone());
|
open_unchecked(&client_connection, script.clone());
|
||||||
let resp = send_semantic_token_request(&client_connection, script.clone());
|
let resp = send_semantic_token_request(&client_connection, script);
|
||||||
|
|
||||||
assert_json_eq!(
|
assert_json_eq!(
|
||||||
result_from_message(resp),
|
result_from_message(resp),
|
||||||
|
@ -236,7 +236,7 @@ impl SymbolCache {
|
|||||||
self.cache
|
self.cache
|
||||||
.get(uri)?
|
.get(uri)?
|
||||||
.iter()
|
.iter()
|
||||||
.map(|s| s.clone().to_symbol_information(uri))
|
.map(|s| s.to_symbol_information(uri))
|
||||||
.collect(),
|
.collect(),
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@ -250,7 +250,7 @@ impl SymbolCache {
|
|||||||
);
|
);
|
||||||
self.cache
|
self.cache
|
||||||
.iter()
|
.iter()
|
||||||
.flat_map(|(uri, symbols)| symbols.iter().map(|s| s.clone().to_symbol_information(uri)))
|
.flat_map(|(uri, symbols)| symbols.iter().map(|s| s.to_symbol_information(uri)))
|
||||||
.filter_map(|s| {
|
.filter_map(|s| {
|
||||||
let mut buf = Vec::new();
|
let mut buf = Vec::new();
|
||||||
let name = Utf32Str::new(&s.name, &mut buf);
|
let name = Utf32Str::new(&s.name, &mut buf);
|
||||||
@ -470,7 +470,7 @@ mod tests {
|
|||||||
script.push("bar.nu");
|
script.push("bar.nu");
|
||||||
let script_bar = path_to_uri(&script);
|
let script_bar = path_to_uri(&script);
|
||||||
|
|
||||||
open_unchecked(&client_connection, script_foo.clone());
|
open_unchecked(&client_connection, script_foo);
|
||||||
open_unchecked(&client_connection, script_bar.clone());
|
open_unchecked(&client_connection, script_bar.clone());
|
||||||
let resp = send_workspace_symbol_request(&client_connection, "br".to_string());
|
let resp = send_workspace_symbol_request(&client_connection, "br".to_string());
|
||||||
|
|
||||||
@ -531,7 +531,7 @@ mod tests {
|
|||||||
let script_bar = path_to_uri(&script);
|
let script_bar = path_to_uri(&script);
|
||||||
|
|
||||||
open_unchecked(&client_connection, script_foo.clone());
|
open_unchecked(&client_connection, script_foo.clone());
|
||||||
open_unchecked(&client_connection, script_bar.clone());
|
open_unchecked(&client_connection, script_bar);
|
||||||
let resp = send_workspace_symbol_request(&client_connection, "foo".to_string());
|
let resp = send_workspace_symbol_request(&client_connection, "foo".to_string());
|
||||||
|
|
||||||
assert_json_eq!(
|
assert_json_eq!(
|
||||||
|
@ -138,7 +138,6 @@ impl LanguageServer {
|
|||||||
/// The rename request only happens after the client received a `PrepareRenameResponse`,
|
/// The rename request only happens after the client received a `PrepareRenameResponse`,
|
||||||
/// and a new name typed in, could happen before ranges ready for all files in the workspace folder
|
/// and a new name typed in, could happen before ranges ready for all files in the workspace folder
|
||||||
pub(crate) fn rename(&mut self, params: &RenameParams) -> Option<WorkspaceEdit> {
|
pub(crate) fn rename(&mut self, params: &RenameParams) -> Option<WorkspaceEdit> {
|
||||||
let new_name = params.new_name.to_owned();
|
|
||||||
// changes in WorkspaceEdit have mutable key
|
// changes in WorkspaceEdit have mutable key
|
||||||
#[allow(clippy::mutable_key_type)]
|
#[allow(clippy::mutable_key_type)]
|
||||||
let changes: HashMap<Uri, Vec<TextEdit>> = self
|
let changes: HashMap<Uri, Vec<TextEdit>> = self
|
||||||
@ -151,7 +150,7 @@ impl LanguageServer {
|
|||||||
.iter()
|
.iter()
|
||||||
.map(|range| TextEdit {
|
.map(|range| TextEdit {
|
||||||
range: *range,
|
range: *range,
|
||||||
new_text: new_name.clone(),
|
new_text: params.new_name.to_owned(),
|
||||||
})
|
})
|
||||||
.collect(),
|
.collect(),
|
||||||
)
|
)
|
||||||
@ -462,7 +461,7 @@ impl LanguageServer {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
data_sender
|
data_sender
|
||||||
.send(InternalMessage::Finished(token.clone()))
|
.send(InternalMessage::Finished(token))
|
||||||
.into_diagnostic()?;
|
.into_diagnostic()?;
|
||||||
Ok(())
|
Ok(())
|
||||||
});
|
});
|
||||||
@ -555,7 +554,7 @@ mod tests {
|
|||||||
|
|
||||||
// use a hover request to interrupt
|
// use a hover request to interrupt
|
||||||
if immediate_cancellation {
|
if immediate_cancellation {
|
||||||
send_hover_request(client_connection, uri.clone(), line, character);
|
send_hover_request(client_connection, uri, line, character);
|
||||||
}
|
}
|
||||||
|
|
||||||
(0..num)
|
(0..num)
|
||||||
@ -684,7 +683,7 @@ mod tests {
|
|||||||
));
|
));
|
||||||
assert!(array.contains(&serde_json::json!(
|
assert!(array.contains(&serde_json::json!(
|
||||||
{
|
{
|
||||||
"uri": script.to_string(),
|
"uri": script,
|
||||||
"range": { "start": { "line": 0, "character": 11 }, "end": { "line": 0, "character": 16 } }
|
"range": { "start": { "line": 0, "character": 11 }, "end": { "line": 0, "character": 16 } }
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@ -745,7 +744,7 @@ mod tests {
|
|||||||
));
|
));
|
||||||
assert!(array.contains(&serde_json::json!(
|
assert!(array.contains(&serde_json::json!(
|
||||||
{
|
{
|
||||||
"uri": script.to_string().replace("bar", "foo"),
|
"uri": script,
|
||||||
"range": { "start": { "line": 6, "character": 13 }, "end": { "line": 6, "character": 20 } }
|
"range": { "start": { "line": 6, "character": 13 }, "end": { "line": 6, "character": 20 } }
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
@ -799,7 +798,7 @@ mod tests {
|
|||||||
));
|
));
|
||||||
assert!(array.contains(&serde_json::json!(
|
assert!(array.contains(&serde_json::json!(
|
||||||
{
|
{
|
||||||
"uri": script.to_string(),
|
"uri": script,
|
||||||
"range": { "start": { "line": 6, "character": 4 }, "end": { "line": 6, "character": 12 } }
|
"range": { "start": { "line": 6, "character": 4 }, "end": { "line": 6, "character": 12 } }
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user