Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'crates/ide_diagnostics/src/handlers/add_reference_here.rs')
-rw-r--r--crates/ide_diagnostics/src/handlers/add_reference_here.rs163
1 files changed, 0 insertions, 163 deletions
diff --git a/crates/ide_diagnostics/src/handlers/add_reference_here.rs b/crates/ide_diagnostics/src/handlers/add_reference_here.rs
deleted file mode 100644
index db24fd6cce..0000000000
--- a/crates/ide_diagnostics/src/handlers/add_reference_here.rs
+++ /dev/null
@@ -1,163 +0,0 @@
-use hir::db::AstDatabase;
-use ide_db::source_change::SourceChange;
-use syntax::AstNode;
-use text_edit::TextEdit;
-
-use crate::{fix, Assist, Diagnostic, DiagnosticsContext};
-
-// Diagnostic: add-reference-here
-//
-// This diagnostic is triggered when there's a missing referencing of expression.
-pub(crate) fn add_reference_here(
- ctx: &DiagnosticsContext<'_>,
- d: &hir::AddReferenceHere,
-) -> Diagnostic {
- Diagnostic::new(
- "add-reference-here",
- "add reference here",
- ctx.sema.diagnostics_display_range(d.expr.clone().map(|it| it.into())).range,
- )
- .with_fixes(fixes(ctx, d))
-}
-
-fn fixes(ctx: &DiagnosticsContext<'_>, d: &hir::AddReferenceHere) -> Option<Vec<Assist>> {
- let root = ctx.sema.db.parse_or_expand(d.expr.file_id)?;
- let arg_expr = d.expr.value.to_node(&root);
-
- let arg_with_ref = format!("&{}{}", d.mutability.as_keyword_for_ref(), arg_expr.syntax());
-
- let arg_range = arg_expr.syntax().text_range();
- let edit = TextEdit::replace(arg_range, arg_with_ref);
- let source_change =
- SourceChange::from_text_edit(d.expr.file_id.original_file(ctx.sema.db), edit);
-
- Some(vec![fix("add_reference_here", "Add reference here", source_change, arg_range)])
-}
-
-#[cfg(test)]
-mod tests {
- use crate::tests::{check_diagnostics, check_fix};
-
- #[test]
- fn missing_reference() {
- check_diagnostics(
- r#"
-fn main() {
- test(123);
- //^^^ 💡 error: add reference here
-}
-fn test(arg: &i32) {}
-"#,
- );
- }
-
- #[test]
- fn test_add_reference_to_int() {
- check_fix(
- r#"
-fn main() {
- test(123$0);
-}
-fn test(arg: &i32) {}
- "#,
- r#"
-fn main() {
- test(&123);
-}
-fn test(arg: &i32) {}
- "#,
- );
- }
-
- #[test]
- fn test_add_mutable_reference_to_int() {
- check_fix(
- r#"
-fn main() {
- test($0123);
-}
-fn test(arg: &mut i32) {}
- "#,
- r#"
-fn main() {
- test(&mut 123);
-}
-fn test(arg: &mut i32) {}
- "#,
- );
- }
-
- #[test]
- fn test_add_reference_to_array() {
- check_fix(
- r#"
-fn main() {
- test($0[1, 2, 3]);
-}
-fn test(arg: &[i32]) {}
- "#,
- r#"
-fn main() {
- test(&[1, 2, 3]);
-}
-fn test(arg: &[i32]) {}
- "#,
- );
- }
-
- #[test]
- fn test_add_reference_to_method_call() {
- check_fix(
- r#"
-fn main() {
- Test.call_by_ref($0123);
-}
-struct Test;
-impl Test {
- fn call_by_ref(&self, arg: &i32) {}
-}
- "#,
- r#"
-fn main() {
- Test.call_by_ref(&123);
-}
-struct Test;
-impl Test {
- fn call_by_ref(&self, arg: &i32) {}
-}
- "#,
- );
- }
-
- #[test]
- fn test_add_reference_to_let_stmt() {
- check_fix(
- r#"
-fn main() {
- let test: &i32 = $0123;
-}
- "#,
- r#"
-fn main() {
- let test: &i32 = &123;
-}
- "#,
- );
- }
-
- #[test]
- fn test_add_mutable_reference_to_let_stmt() {
- check_fix(
- r#"
-fn main() {
- let test: &mut i32 = $0123;
-}
- "#,
- r#"
-fn main() {
- let test: &mut i32 = &mut 123;
-}
- "#,
- );
- }
-}