Remove cross-crate marks

They create quite a bit of friction. Really, we should just move the
tests to the same crate, rather than paper over existing split.
This commit is contained in:
Aleksey Kladov 2020-05-20 11:54:57 +02:00
parent d18d1c0594
commit 5258c817f7
7 changed files with 4 additions and 45 deletions

View file

@ -93,7 +93,7 @@ pub(crate) fn reference_definition(
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use test_utils::{assert_eq_text, covers}; use test_utils::assert_eq_text;
use crate::mock_analysis::analysis_and_position; use crate::mock_analysis::analysis_and_position;
@ -208,7 +208,6 @@ mod tests {
#[test] #[test]
fn goto_def_for_macros() { fn goto_def_for_macros() {
covers!(ra_ide_db::goto_def_for_macros);
check_goto( check_goto(
" "
//- /lib.rs //- /lib.rs
@ -225,7 +224,6 @@ mod tests {
#[test] #[test]
fn goto_def_for_macros_from_other_crates() { fn goto_def_for_macros_from_other_crates() {
covers!(ra_ide_db::goto_def_for_macros);
check_goto( check_goto(
" "
//- /lib.rs //- /lib.rs
@ -245,7 +243,6 @@ mod tests {
#[test] #[test]
fn goto_def_for_use_alias() { fn goto_def_for_use_alias() {
covers!(ra_ide_db::goto_def_for_use_alias);
check_goto( check_goto(
" "
//- /lib.rs //- /lib.rs
@ -370,7 +367,6 @@ mod tests {
#[test] #[test]
fn goto_def_for_methods() { fn goto_def_for_methods() {
covers!(ra_ide_db::goto_def_for_methods);
check_goto( check_goto(
" "
//- /lib.rs //- /lib.rs
@ -390,7 +386,6 @@ mod tests {
#[test] #[test]
fn goto_def_for_fields() { fn goto_def_for_fields() {
covers!(ra_ide_db::goto_def_for_fields);
check_goto( check_goto(
r" r"
//- /lib.rs //- /lib.rs
@ -409,7 +404,6 @@ mod tests {
#[test] #[test]
fn goto_def_for_record_fields() { fn goto_def_for_record_fields() {
covers!(ra_ide_db::goto_def_for_record_fields);
check_goto( check_goto(
r" r"
//- /lib.rs //- /lib.rs
@ -430,7 +424,6 @@ mod tests {
#[test] #[test]
fn goto_def_for_record_pat_fields() { fn goto_def_for_record_pat_fields() {
covers!(ra_ide_db::goto_def_for_record_field_pats);
check_goto( check_goto(
r" r"
//- /lib.rs //- /lib.rs
@ -873,7 +866,6 @@ mod tests {
#[test] #[test]
fn goto_def_for_field_init_shorthand() { fn goto_def_for_field_init_shorthand() {
covers!(ra_ide_db::goto_def_for_field_init_shorthand);
check_goto( check_goto(
" "
//- /lib.rs //- /lib.rs

View file

@ -190,8 +190,6 @@ fn get_struct_def_name_for_struct_literal_search(
#[cfg(test)] #[cfg(test)]
mod tests { mod tests {
use test_utils::covers;
use crate::{ use crate::{
mock_analysis::{analysis_and_position, single_file_with_position, MockAnalysis}, mock_analysis::{analysis_and_position, single_file_with_position, MockAnalysis},
Declaration, Reference, ReferenceSearchResult, SearchScope, Declaration, Reference, ReferenceSearchResult, SearchScope,
@ -301,7 +299,6 @@ mod tests {
#[test] #[test]
fn search_filters_by_range() { fn search_filters_by_range() {
covers!(ra_ide_db::search_filters_by_range);
let code = r#" let code = r#"
fn foo() { fn foo() {
let spam<|> = 92; let spam<|> = 92;

View file

@ -14,7 +14,6 @@ use ra_syntax::{
ast::{self, AstNode}, ast::{self, AstNode},
match_ast, match_ast,
}; };
use test_utils::tested_by;
use crate::RootDatabase; use crate::RootDatabase;
@ -118,7 +117,6 @@ fn classify_name_inner(sema: &Semantics<RootDatabase>, name: &ast::Name) -> Opti
match_ast! { match_ast! {
match parent { match parent {
ast::Alias(it) => { ast::Alias(it) => {
tested_by!(goto_def_for_use_alias; force);
let use_tree = it.syntax().parent().and_then(ast::UseTree::cast)?; let use_tree = it.syntax().parent().and_then(ast::UseTree::cast)?;
let path = use_tree.path()?; let path = use_tree.path()?;
let path_segment = path.segment()?; let path_segment = path.segment()?;
@ -203,6 +201,8 @@ impl NameRefClass {
} }
} }
// Note: we don't have unit-tests for this rather important function.
// It is primarily exercised via goto definition tests in `ra_ide`.
pub fn classify_name_ref( pub fn classify_name_ref(
sema: &Semantics<RootDatabase>, sema: &Semantics<RootDatabase>,
name_ref: &ast::NameRef, name_ref: &ast::NameRef,
@ -212,22 +212,18 @@ pub fn classify_name_ref(
let parent = name_ref.syntax().parent()?; let parent = name_ref.syntax().parent()?;
if let Some(method_call) = ast::MethodCallExpr::cast(parent.clone()) { if let Some(method_call) = ast::MethodCallExpr::cast(parent.clone()) {
tested_by!(goto_def_for_methods; force);
if let Some(func) = sema.resolve_method_call(&method_call) { if let Some(func) = sema.resolve_method_call(&method_call) {
return Some(NameRefClass::Definition(Definition::ModuleDef(func.into()))); return Some(NameRefClass::Definition(Definition::ModuleDef(func.into())));
} }
} }
if let Some(field_expr) = ast::FieldExpr::cast(parent.clone()) { if let Some(field_expr) = ast::FieldExpr::cast(parent.clone()) {
tested_by!(goto_def_for_fields; force);
if let Some(field) = sema.resolve_field(&field_expr) { if let Some(field) = sema.resolve_field(&field_expr) {
return Some(NameRefClass::Definition(Definition::Field(field))); return Some(NameRefClass::Definition(Definition::Field(field)));
} }
} }
if let Some(record_field) = ast::RecordField::for_field_name(name_ref) { if let Some(record_field) = ast::RecordField::for_field_name(name_ref) {
tested_by!(goto_def_for_record_fields; force);
tested_by!(goto_def_for_field_init_shorthand; force);
if let Some((field, local)) = sema.resolve_record_field(&record_field) { if let Some((field, local)) = sema.resolve_record_field(&record_field) {
let field = Definition::Field(field); let field = Definition::Field(field);
let res = match local { let res = match local {
@ -239,7 +235,6 @@ pub fn classify_name_ref(
} }
if let Some(record_field_pat) = ast::RecordFieldPat::cast(parent.clone()) { if let Some(record_field_pat) = ast::RecordFieldPat::cast(parent.clone()) {
tested_by!(goto_def_for_record_field_pats; force);
if let Some(field) = sema.resolve_record_field_pat(&record_field_pat) { if let Some(field) = sema.resolve_record_field_pat(&record_field_pat) {
let field = Definition::Field(field); let field = Definition::Field(field);
return Some(NameRefClass::Definition(field)); return Some(NameRefClass::Definition(field));
@ -247,7 +242,6 @@ pub fn classify_name_ref(
} }
if let Some(macro_call) = parent.ancestors().find_map(ast::MacroCall::cast) { if let Some(macro_call) = parent.ancestors().find_map(ast::MacroCall::cast) {
tested_by!(goto_def_for_macros; force);
if let Some(macro_def) = sema.resolve_macro_call(&macro_call) { if let Some(macro_def) = sema.resolve_macro_call(&macro_call) {
return Some(NameRefClass::Definition(Definition::Macro(macro_def))); return Some(NameRefClass::Definition(Definition::Macro(macro_def)));
} }

View file

@ -2,7 +2,6 @@
//! //!
//! It is mainly a `HirDatabase` for semantic analysis, plus a `SymbolsDatabase`, for fuzzy search. //! It is mainly a `HirDatabase` for semantic analysis, plus a `SymbolsDatabase`, for fuzzy search.
pub mod marks;
pub mod line_index; pub mod line_index;
pub mod line_index_utils; pub mod line_index_utils;
pub mod symbol_index; pub mod symbol_index;

View file

@ -1,12 +0,0 @@
//! See test_utils/src/marks.rs
test_utils::marks![
goto_def_for_macros
goto_def_for_use_alias
goto_def_for_methods
goto_def_for_fields
goto_def_for_record_fields
goto_def_for_field_init_shorthand
goto_def_for_record_field_pats
search_filters_by_range
];

View file

@ -12,7 +12,6 @@ use ra_db::{FileId, FileRange, SourceDatabaseExt};
use ra_prof::profile; use ra_prof::profile;
use ra_syntax::{ast, match_ast, AstNode, TextRange, TextSize}; use ra_syntax::{ast, match_ast, AstNode, TextRange, TextSize};
use rustc_hash::FxHashMap; use rustc_hash::FxHashMap;
use test_utils::tested_by;
use crate::{ use crate::{
defs::{classify_name_ref, Definition, NameRefClass}, defs::{classify_name_ref, Definition, NameRefClass},
@ -209,7 +208,6 @@ impl Definition {
for (idx, _) in text.match_indices(pat) { for (idx, _) in text.match_indices(pat) {
let offset: TextSize = idx.try_into().unwrap(); let offset: TextSize = idx.try_into().unwrap();
if !search_range.contains_inclusive(offset) { if !search_range.contains_inclusive(offset) {
tested_by!(search_filters_by_range; force);
continue; continue;
} }

View file

@ -30,12 +30,6 @@ use std::sync::atomic::{AtomicUsize, Ordering};
#[macro_export] #[macro_export]
macro_rules! tested_by { macro_rules! tested_by {
($ident:ident; force) => {{
{
// sic! use call-site crate
crate::marks::$ident.fetch_add(1, std::sync::atomic::Ordering::SeqCst);
}
}};
($ident:ident) => {{ ($ident:ident) => {{
#[cfg(test)] #[cfg(test)]
{ {
@ -49,10 +43,7 @@ macro_rules! tested_by {
macro_rules! covers { macro_rules! covers {
// sic! use call-site crate // sic! use call-site crate
($ident:ident) => { ($ident:ident) => {
$crate::covers!(crate::$ident) let _checker = $crate::marks::MarkChecker::new(&crate::marks::$ident);
};
($krate:ident :: $ident:ident) => {
let _checker = $crate::marks::MarkChecker::new(&$krate::marks::$ident);
}; };
} }