mirror of
https://github.com/rust-lang/rust-analyzer
synced 2024-12-27 21:43:37 +00:00
Merge #10747
10747: fix: Remove faulty logic for ascending test attributes for runnables r=Veykril a=Veykril Fixes https://github.com/rust-analyzer/rust-analyzer/issues/10744 - This logic is currently not required as we do not expand test/bench anymore for the time being - The implementation of this was flawed to begin with as it just skipped out of macro expansions instead of ascending the trees inside expansions bors r+ Co-authored-by: Lukas Wirth <lukastw97@gmail.com>
This commit is contained in:
commit
d83b76d834
2 changed files with 2 additions and 24 deletions
|
@ -699,23 +699,6 @@ impl<N: AstNode> InFile<N> {
|
||||||
pub fn syntax(&self) -> InFile<&SyntaxNode> {
|
pub fn syntax(&self) -> InFile<&SyntaxNode> {
|
||||||
self.with_value(self.value.syntax())
|
self.with_value(self.value.syntax())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn nodes_with_attributes<'db>(
|
|
||||||
self,
|
|
||||||
db: &'db dyn db::AstDatabase,
|
|
||||||
) -> impl Iterator<Item = InFile<N>> + 'db
|
|
||||||
where
|
|
||||||
N: 'db,
|
|
||||||
{
|
|
||||||
iter::successors(Some(self), move |node| {
|
|
||||||
let InFile { file_id, value } = node.file_id.call_node(db)?;
|
|
||||||
N::cast(value).map(|n| InFile::new(file_id, n))
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn node_with_attributes(self, db: &dyn db::AstDatabase) -> InFile<N> {
|
|
||||||
self.nodes_with_attributes(db).last().unwrap()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// In Rust, macros expand token trees to token trees. When we want to turn a
|
/// In Rust, macros expand token trees to token trees. When we want to turn a
|
||||||
|
|
|
@ -236,9 +236,7 @@ fn find_related_tests(
|
||||||
.filter_map(|token| token.ancestors().find_map(ast::Fn::cast))
|
.filter_map(|token| token.ancestors().find_map(ast::Fn::cast))
|
||||||
.map(|f| hir::InFile::new(sema.hir_file_for(f.syntax()), f));
|
.map(|f| hir::InFile::new(sema.hir_file_for(f.syntax()), f));
|
||||||
|
|
||||||
for fn_def in functions {
|
for InFile { value: ref fn_def, .. } in functions {
|
||||||
// #[test/bench] expands to just the item causing us to lose the attribute, so recover them by going out of the attribute
|
|
||||||
let InFile { value: fn_def, .. } = &fn_def.node_with_attributes(sema.db);
|
|
||||||
if let Some(runnable) = as_test_runnable(sema, fn_def) {
|
if let Some(runnable) = as_test_runnable(sema, fn_def) {
|
||||||
// direct test
|
// direct test
|
||||||
tests.insert(runnable);
|
tests.insert(runnable);
|
||||||
|
@ -294,8 +292,7 @@ fn parent_test_module(sema: &Semantics<RootDatabase>, fn_def: &ast::Fn) -> Optio
|
||||||
}
|
}
|
||||||
|
|
||||||
pub(crate) fn runnable_fn(sema: &Semantics<RootDatabase>, def: hir::Function) -> Option<Runnable> {
|
pub(crate) fn runnable_fn(sema: &Semantics<RootDatabase>, def: hir::Function) -> Option<Runnable> {
|
||||||
// #[test/bench] expands to just the item causing us to lose the attribute, so recover them by going out of the attribute
|
let func = def.source(sema.db)?;
|
||||||
let func = def.source(sema.db)?.node_with_attributes(sema.db);
|
|
||||||
let name_string = def.name(sema.db).to_string();
|
let name_string = def.name(sema.db).to_string();
|
||||||
|
|
||||||
let root = def.module(sema.db).krate().root_module(sema.db);
|
let root = def.module(sema.db).krate().root_module(sema.db);
|
||||||
|
@ -504,8 +501,6 @@ fn has_test_function_or_multiple_test_submodules(
|
||||||
match item {
|
match item {
|
||||||
hir::ModuleDef::Function(f) => {
|
hir::ModuleDef::Function(f) => {
|
||||||
if let Some(it) = f.source(sema.db) {
|
if let Some(it) = f.source(sema.db) {
|
||||||
// #[test/bench] expands to just the item causing us to lose the attribute, so recover them by going out of the attribute
|
|
||||||
let it = it.node_with_attributes(sema.db);
|
|
||||||
if test_related_attribute(&it.value).is_some() {
|
if test_related_attribute(&it.value).is_some() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue