Auto merge of #86190 - asquared31415:extern-main-86110-fix, r=varkor

Fix ICE when `main` is declared in an `extern` block

Changes in #84401 to implement `imported_main` changed how the crate entry point is found, and a declared `main` in an `extern` block was detected erroneously.  This was causing the ICE described in #86110.

This PR adds a check for this case and emits an error instead.  Previously a `main` declaration in an `extern` block was not detected as an entry point at all, so emitting an error shouldn't break anything that worked previously.  In 1.52.1 stable this is demonstrated, with a `` `main` function not found`` error.

Fixes #86110
This commit is contained in:
bors
2021-07-01 06:39:37 +00:00
5 changed files with 32 additions and 2 deletions

View File

@@ -128,7 +128,7 @@ pub struct ResolverOutputs {
pub main_def: Option<MainDefinition>,
}
#[derive(Clone, Copy)]
#[derive(Clone, Copy, Debug)]
pub struct MainDefinition {
pub res: Res<ast::NodeId>,
pub is_import: bool,