8206: Ignore main functions not in root module r=Veykril a=ivan770

Closes #8195

Co-authored-by: ivan770 <leshenko.ivan770@gmail.com>
This commit is contained in:
bors[bot] 2021-03-26 15:00:58 +00:00 committed by GitHub
commit 20e32fc946
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -226,7 +226,9 @@ pub(crate) fn runnable_fn(sema: &Semantics<RootDatabase>, def: hir::Function) ->
let func = def.source(sema.db)?;
let name_string = def.name(sema.db).to_string();
let kind = if name_string == "main" {
let root = def.krate(sema.db)?.root_module(sema.db);
let kind = if name_string == "main" && def.module(sema.db) == root {
RunnableKind::Bin
} else {
let canonical_path = {
@ -444,6 +446,10 @@ fn test_foo() {}
#[bench]
fn bench() {}
mod not_a_root {
fn main() {}
}
"#,
&[&BIN, &TEST, &TEST, &BENCH],
expect![[r#"