Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix mod from inline mod in non-mod-rs. #55108

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion src/libsyntax/parse/lexer/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1869,7 +1869,6 @@ mod tests {
missing_fragment_specifiers: Lock::new(FxHashSet::default()),
raw_identifier_spans: Lock::new(Vec::new()),
registered_diagnostics: Lock::new(ErrorMap::new()),
non_modrs_mods: Lock::new(vec![]),
buffered_lints: Lock::new(vec![]),
}
}
Expand Down
4 changes: 0 additions & 4 deletions src/libsyntax/parse/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,9 +52,6 @@ pub struct ParseSess {
pub raw_identifier_spans: Lock<Vec<Span>>,
/// The registered diagnostics codes
crate registered_diagnostics: Lock<ErrorMap>,
// Spans where a `mod foo;` statement was included in a non-mod.rs file.
// These are used to issue errors if the non_modrs_mods feature is not enabled.
pub non_modrs_mods: Lock<Vec<(ast::Ident, Span)>>,
/// Used to determine and report recursive mod inclusions
included_mod_stack: Lock<Vec<PathBuf>>,
code_map: Lrc<SourceMap>,
Expand All @@ -81,7 +78,6 @@ impl ParseSess {
registered_diagnostics: Lock::new(ErrorMap::new()),
included_mod_stack: Lock::new(vec![]),
code_map,
non_modrs_mods: Lock::new(vec![]),
buffered_lints: Lock::new(vec![]),
}
}
Expand Down
15 changes: 5 additions & 10 deletions src/libsyntax/parse/parser.rs
Original file line number Diff line number Diff line change
Expand Up @@ -6426,6 +6426,10 @@ impl<'a> Parser<'a> {
self.directory.path.to_mut().push(&path.as_str());
self.directory.ownership = DirectoryOwnership::Owned { relative: None };
} else {
if let DirectoryOwnership::Owned{ relative: Some(id) } = self.directory.ownership {
self.directory.path.to_mut().push(id.as_str());
self.directory.ownership = DirectoryOwnership::Owned { relative: None };
}
self.directory.path.to_mut().push(&id.as_str());
}
}
Expand Down Expand Up @@ -6533,16 +6537,7 @@ impl<'a> Parser<'a> {
}

let relative = match self.directory.ownership {
DirectoryOwnership::Owned { relative } => {
// Push the usage onto the list of non-mod.rs mod uses.
// This is used later for feature-gate error reporting.
if let Some(cur_file_ident) = relative {
self.sess
.non_modrs_mods.borrow_mut()
.push((cur_file_ident, id_sp));
}
relative
},
DirectoryOwnership::Owned { relative } => relative,
DirectoryOwnership::UnownedViaBlock |
DirectoryOwnership::UnownedViaMod(_) => None,
};
Expand Down
5 changes: 5 additions & 0 deletions src/test/run-pass/non_modrs_mods/foors_mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,8 @@

pub mod inner_modrs_mod;
pub mod inner_foors_mod;
pub mod block {
pub mod block_inner {
pub mod block_inner_inner;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
pub fn foo() {}
15 changes: 15 additions & 0 deletions src/test/run-pass/non_modrs_mods/non_modrs_mods.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// run-pass
//
// ignore-pretty issue #37195
pub mod modrs_mod;
pub mod foors_mod;
#[path = "some_crazy_attr_mod_dir/arbitrary_name.rs"]
pub mod attr_mod;
pub fn main() {
modrs_mod::inner_modrs_mod::innest::foo();
modrs_mod::inner_foors_mod::innest::foo();
foors_mod::inner_modrs_mod::innest::foo();
foors_mod::inner_foors_mod::innest::foo();
foors_mod::block::block_inner::block_inner_inner::foo();
attr_mod::inner_modrs_mod::innest::foo();
}
5 changes: 5 additions & 0 deletions src/test/ui/missing_non_modrs_mod/foo_inline.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
// ignore-test this is just a helper for the real test in this dir

mod inline {
mod missing;
}
2 changes: 0 additions & 2 deletions src/test/ui/missing_non_modrs_mod/missing_non_modrs_mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,5 @@
// option. This file may not be copied, modified, or distributed
// except according to those terms.

// ignore-windows

mod foo;
fn main() {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
mod foo_inline;
fn main() {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
error[E0583]: file not found for module `missing`
--> $DIR/foo_inline.rs:4:9
|
LL | mod missing;
| ^^^^^^^
|
= help: name the file either missing.rs or missing/mod.rs inside the directory "$DIR/foo_inline/inline"

error: aborting due to previous error

For more information about this error, try `rustc --explain E0583`.
14 changes: 0 additions & 14 deletions src/test/ui/non_modrs_mods/foors_mod.rs

This file was deleted.

Empty file.
11 changes: 0 additions & 11 deletions src/test/ui/non_modrs_mods/foors_mod/inner_foors_mod.rs

This file was deleted.

11 changes: 0 additions & 11 deletions src/test/ui/non_modrs_mods/foors_mod/inner_foors_mod/innest.rs

This file was deleted.

11 changes: 0 additions & 11 deletions src/test/ui/non_modrs_mods/foors_mod/inner_modrs_mod/innest.rs

This file was deleted.

11 changes: 0 additions & 11 deletions src/test/ui/non_modrs_mods/foors_mod/inner_modrs_mod/mod.rs

This file was deleted.

Empty file.
11 changes: 0 additions & 11 deletions src/test/ui/non_modrs_mods/modrs_mod/inner_foors_mod.rs

This file was deleted.

11 changes: 0 additions & 11 deletions src/test/ui/non_modrs_mods/modrs_mod/inner_foors_mod/innest.rs

This file was deleted.

11 changes: 0 additions & 11 deletions src/test/ui/non_modrs_mods/modrs_mod/inner_modrs_mod/innest.rs

This file was deleted.

11 changes: 0 additions & 11 deletions src/test/ui/non_modrs_mods/modrs_mod/inner_modrs_mod/mod.rs

This file was deleted.

12 changes: 0 additions & 12 deletions src/test/ui/non_modrs_mods/modrs_mod/mod.rs

This file was deleted.

This file was deleted.

Empty file.

This file was deleted.

This file was deleted.