mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-27 04:19:13 +00:00
Fixup emitted whitespace in most cases
This commit is contained in:
parent
6181154d50
commit
ea02d27a1e
3 changed files with 97 additions and 31 deletions
|
@ -17,16 +17,23 @@ use crate::{
|
||||||
// Inlines a function or method body.
|
// Inlines a function or method body.
|
||||||
//
|
//
|
||||||
// ```
|
// ```
|
||||||
// fn align(a: u32, b: u32) -> u32 { (a + b - 1) & !(b - 1) }
|
// fn align(a: u32, b: u32) -> u32 {
|
||||||
|
// (a + b - 1) & !(b - 1)
|
||||||
|
// }
|
||||||
// fn main() {
|
// fn main() {
|
||||||
// let x = align$0(1, 2);
|
// let x = align$0(1, 2);
|
||||||
// }
|
// }
|
||||||
// ```
|
// ```
|
||||||
// ->
|
// ->
|
||||||
// ```
|
// ```
|
||||||
// fn align(a: u32, b: u32) -> u32 { (a + b - 1) & !(b - 1) }
|
// fn align(a: u32, b: u32) -> u32 {
|
||||||
|
// (a + b - 1) & !(b - 1)
|
||||||
|
// }
|
||||||
// fn main() {
|
// fn main() {
|
||||||
// let x = { let b = 2; (1 + b - 1) & !(b - 1) };
|
// let x = {
|
||||||
|
// let b = 2;
|
||||||
|
// (1 + b - 1) & !(b - 1)
|
||||||
|
// };
|
||||||
// }
|
// }
|
||||||
// ```
|
// ```
|
||||||
pub(crate) fn inline_call(acc: &mut Assists, ctx: &AssistContext) -> Option<()> {
|
pub(crate) fn inline_call(acc: &mut Assists, ctx: &AssistContext) -> Option<()> {
|
||||||
|
@ -140,14 +147,14 @@ pub(crate) fn inline_(
|
||||||
|
|
||||||
// Rewrite `self` to `this`
|
// Rewrite `self` to `this`
|
||||||
if param_list.self_param().is_some() {
|
if param_list.self_param().is_some() {
|
||||||
let this = make::name_ref("this").syntax().clone_for_update();
|
let this = || make::name_ref("this").syntax().clone_for_update();
|
||||||
usages_for_locals(params[0].1.as_local(ctx.sema.db))
|
usages_for_locals(params[0].1.as_local(ctx.sema.db))
|
||||||
.flat_map(|FileReference { name, range, .. }| match name {
|
.flat_map(|FileReference { name, range, .. }| match name {
|
||||||
ast::NameLike::NameRef(_) => Some(body.syntax().covering_element(range)),
|
ast::NameLike::NameRef(_) => Some(body.syntax().covering_element(range)),
|
||||||
_ => None,
|
_ => None,
|
||||||
})
|
})
|
||||||
.for_each(|it| {
|
.for_each(|it| {
|
||||||
ted::replace(it, &this);
|
ted::replace(it, &this());
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -212,25 +219,6 @@ fn main() {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn args_with_side_effects() {
|
|
||||||
check_assist(
|
|
||||||
inline_call,
|
|
||||||
r#"
|
|
||||||
fn foo(name: String) { println!("Hello, {}!", name); }
|
|
||||||
fn main() {
|
|
||||||
foo$0(String::from("Michael"));
|
|
||||||
}
|
|
||||||
"#,
|
|
||||||
r#"
|
|
||||||
fn foo(name: String) { println!("Hello, {}!", name); }
|
|
||||||
fn main() {
|
|
||||||
{ let name = String::from("Michael"); println!("Hello, {}!", name); };
|
|
||||||
}
|
|
||||||
"#,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn not_applicable_when_incorrect_number_of_parameters_are_provided() {
|
fn not_applicable_when_incorrect_number_of_parameters_are_provided() {
|
||||||
cov_mark::check!(inline_call_incorrect_number_of_arguments);
|
cov_mark::check!(inline_call_incorrect_number_of_arguments);
|
||||||
|
@ -243,6 +231,32 @@ fn main() { let x = add$0(42); }
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn args_with_side_effects() {
|
||||||
|
check_assist(
|
||||||
|
inline_call,
|
||||||
|
r#"
|
||||||
|
fn foo(name: String) {
|
||||||
|
println!("Hello, {}!", name);
|
||||||
|
}
|
||||||
|
fn main() {
|
||||||
|
foo$0(String::from("Michael"));
|
||||||
|
}
|
||||||
|
"#,
|
||||||
|
r#"
|
||||||
|
fn foo(name: String) {
|
||||||
|
println!("Hello, {}!", name);
|
||||||
|
}
|
||||||
|
fn main() {
|
||||||
|
{
|
||||||
|
let name = String::from("Michael");
|
||||||
|
println!("Hello, {}!", name);
|
||||||
|
};
|
||||||
|
}
|
||||||
|
"#,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn function_with_multiple_statements() {
|
fn function_with_multiple_statements() {
|
||||||
check_assist(
|
check_assist(
|
||||||
|
@ -266,7 +280,8 @@ fn foo(a: u32, b: u32) -> u32 {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let x = { let b = 2;
|
let x = {
|
||||||
|
let b = 2;
|
||||||
let x = 1 + b;
|
let x = 1 + b;
|
||||||
let y = x - b;
|
let y = x - b;
|
||||||
x * y
|
x * y
|
||||||
|
@ -369,7 +384,8 @@ impl Foo {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let x = { let ref this = Foo(3);
|
let x = {
|
||||||
|
let ref this = Foo(3);
|
||||||
Foo(this.0 + 2)
|
Foo(this.0 + 2)
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -406,7 +422,8 @@ impl Foo {
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let mut foo = Foo(3);
|
let mut foo = Foo(3);
|
||||||
{ let ref mut this = foo;
|
{
|
||||||
|
let ref mut this = foo;
|
||||||
this.0 = 0;
|
this.0 = 0;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -458,7 +475,8 @@ fn square(x: u32) -> u32 {
|
||||||
}
|
}
|
||||||
fn main() {
|
fn main() {
|
||||||
let x = 51;
|
let x = 51;
|
||||||
let y = { let x = 10 + x;
|
let y = {
|
||||||
|
let x = 10 + x;
|
||||||
x * x
|
x * x
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -487,6 +505,41 @@ fn main() {
|
||||||
let local = 51;
|
let local = 51;
|
||||||
let y = local * local;
|
let y = local * local;
|
||||||
}
|
}
|
||||||
|
"#,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn method_in_impl() {
|
||||||
|
check_assist(
|
||||||
|
inline_call,
|
||||||
|
r#"
|
||||||
|
struct Foo;
|
||||||
|
impl Foo {
|
||||||
|
fn foo(&self) {
|
||||||
|
self;
|
||||||
|
self;
|
||||||
|
}
|
||||||
|
fn bar(&self) {
|
||||||
|
self.foo$0();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
"#,
|
||||||
|
r#"
|
||||||
|
struct Foo;
|
||||||
|
impl Foo {
|
||||||
|
fn foo(&self) {
|
||||||
|
self;
|
||||||
|
self;
|
||||||
|
}
|
||||||
|
fn bar(&self) {
|
||||||
|
{
|
||||||
|
let ref this = self;
|
||||||
|
this;
|
||||||
|
this;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
"#,
|
"#,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
@ -923,15 +923,22 @@ fn doctest_inline_call() {
|
||||||
check_doc_test(
|
check_doc_test(
|
||||||
"inline_call",
|
"inline_call",
|
||||||
r#####"
|
r#####"
|
||||||
fn align(a: u32, b: u32) -> u32 { (a + b - 1) & !(b - 1) }
|
fn align(a: u32, b: u32) -> u32 {
|
||||||
|
(a + b - 1) & !(b - 1)
|
||||||
|
}
|
||||||
fn main() {
|
fn main() {
|
||||||
let x = align$0(1, 2);
|
let x = align$0(1, 2);
|
||||||
}
|
}
|
||||||
"#####,
|
"#####,
|
||||||
r#####"
|
r#####"
|
||||||
fn align(a: u32, b: u32) -> u32 { (a + b - 1) & !(b - 1) }
|
fn align(a: u32, b: u32) -> u32 {
|
||||||
|
(a + b - 1) & !(b - 1)
|
||||||
|
}
|
||||||
fn main() {
|
fn main() {
|
||||||
let x = { let b = 2; (1 + b - 1) & !(b - 1) };
|
let x = {
|
||||||
|
let b = 2;
|
||||||
|
(1 + b - 1) & !(b - 1)
|
||||||
|
};
|
||||||
}
|
}
|
||||||
"#####,
|
"#####,
|
||||||
)
|
)
|
||||||
|
|
|
@ -188,6 +188,12 @@ fn ws_between(left: &SyntaxElement, right: &SyntaxElement) -> Option<SyntaxToken
|
||||||
return None;
|
return None;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if left.kind() == T!['{'] && right.kind() == SyntaxKind::LET_STMT {
|
||||||
|
let mut indent = IndentLevel::from_element(left);
|
||||||
|
indent.0 += 1;
|
||||||
|
return Some(make::tokens::whitespace(&format!("\n{}", indent)));
|
||||||
|
}
|
||||||
|
|
||||||
if right.kind() == SyntaxKind::USE {
|
if right.kind() == SyntaxKind::USE {
|
||||||
let mut indent = IndentLevel::from_element(left);
|
let mut indent = IndentLevel::from_element(left);
|
||||||
if left.kind() == SyntaxKind::USE {
|
if left.kind() == SyntaxKind::USE {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue