From 66673eae2b3d3185607d29ee341d2db8a81a46e0 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Fri, 18 Jun 2021 00:42:32 +0300 Subject: [PATCH] internal: retire famous_defs_fixture This is now done declaratively via `minicore`. --- crates/ide/src/hover.rs | 25 +++++++++++------- crates/ide_db/src/helpers.rs | 11 ++++++-- .../ide_db/src/helpers/famous_defs_fixture.rs | 26 ------------------- 3 files changed, 24 insertions(+), 38 deletions(-) delete mode 100644 crates/ide_db/src/helpers/famous_defs_fixture.rs diff --git a/crates/ide/src/hover.rs b/crates/ide/src/hover.rs index e81bcf73ec8..409f81ca09f 100644 --- a/crates/ide/src/hover.rs +++ b/crates/ide/src/hover.rs @@ -568,8 +568,6 @@ mod tests { use crate::fixture; - use super::*; - fn check_hover_no_result(ra_fixture: &str) { let (analysis, position) = fixture::position(ra_fixture); assert!(analysis.hover(position, true, true).unwrap().is_none()); @@ -3813,11 +3811,14 @@ mod bar #[test] fn hover_keyword() { - let ra_fixture = r#"//- /main.rs crate:main deps:std -fn f() { retur$0n; }"#; - let fixture = format!("{}\n{}", ra_fixture, FamousDefs::FIXTURE); check( - &fixture, + r#" +//- /main.rs crate:main deps:std +fn f() { retur$0n; } +//- /libstd.rs crate:std +/// Docs for return_keyword +mod return_keyword {} +"#, expect![[r#" *return* @@ -3834,11 +3835,15 @@ fn hover_keyword() { #[test] fn hover_builtin() { - let ra_fixture = r#"//- /main.rs crate:main deps:std -cosnt _: &str$0 = ""; }"#; - let fixture = format!("{}\n{}", ra_fixture, FamousDefs::FIXTURE); check( - &fixture, + r#" +//- /main.rs crate:main deps:std +cosnt _: &str$0 = ""; } + +//- /libstd.rs crate:std +/// Docs for prim_str +mod prim_str {} +"#, expect![[r#" *str* diff --git a/crates/ide_db/src/helpers.rs b/crates/ide_db/src/helpers.rs index 00900cdc222..d96028cbcdf 100644 --- a/crates/ide_db/src/helpers.rs +++ b/crates/ide_db/src/helpers.rs @@ -74,12 +74,19 @@ pub fn visit_file_defs( /// somewhat similar to the known paths infra inside hir, but it different; We /// want to make sure that IDE specific paths don't become interesting inside /// the compiler itself as well. +/// +/// Note that, by default, rust-analyzer tests **do not** include core or std +/// libraries. If you are writing tests for functionality using [`FamousDefs`], +/// you'd want to include [minicore](test_utils::MiniCore) declaration at the +/// start of your tests: +/// +/// ``` +/// //- minicore: iterator, ord, derive +/// ``` pub struct FamousDefs<'a, 'b>(pub &'a Semantics<'b, RootDatabase>, pub Option); #[allow(non_snake_case)] impl FamousDefs<'_, '_> { - pub const FIXTURE: &'static str = include_str!("helpers/famous_defs_fixture.rs"); - pub fn std(&self) -> Option { self.find_crate("std") } diff --git a/crates/ide_db/src/helpers/famous_defs_fixture.rs b/crates/ide_db/src/helpers/famous_defs_fixture.rs deleted file mode 100644 index 6310fc0e1bf..00000000000 --- a/crates/ide_db/src/helpers/famous_defs_fixture.rs +++ /dev/null @@ -1,26 +0,0 @@ -//- /libcore.rs crate:core -//! Signatures of traits, types and functions from the core lib for use in tests. -pub mod prelude { - pub mod rust_2018 { - pub use crate::{ - cmp::Ord, - convert::{From, Into}, - default::Default, - iter::{IntoIterator, Iterator}, - ops::{Fn, FnMut, FnOnce}, - option::Option::{self, *}, - }; - } -} -#[prelude_import] -pub use prelude::rust_2018::*; -//- /libstd.rs crate:std deps:core -//! Signatures of traits, types and functions from the std lib for use in tests. - -/// Docs for return_keyword -mod return_keyword {} - -/// Docs for prim_str -mod prim_str {} - -pub use core::ops; -- 2.44.0