Syntactically permit unsafety on mods
This commit is contained in:
parent
25b2f48612
commit
fd4dd00dde
17 changed files with 284 additions and 37 deletions
|
@ -1,4 +1,4 @@
|
|||
use rustc_ast::{token, Attribute, Mod};
|
||||
use rustc_ast::{token, Attribute, Mod, Unsafe};
|
||||
use rustc_errors::{struct_span_err, PResult};
|
||||
use rustc_parse::new_parser_from_file;
|
||||
use rustc_session::parse::ParseSess;
|
||||
|
@ -42,6 +42,7 @@ crate fn parse_external_mod(
|
|||
sess: &Session,
|
||||
id: Ident,
|
||||
span: Span, // The span to blame on errors.
|
||||
unsafety: Unsafe,
|
||||
Directory { mut ownership, path }: Directory,
|
||||
attrs: &mut Vec<Attribute>,
|
||||
pop_mod_stack: &mut bool,
|
||||
|
@ -60,13 +61,16 @@ crate fn parse_external_mod(
|
|||
drop(included_mod_stack);
|
||||
|
||||
// Actually parse the external file as a module.
|
||||
let mut module =
|
||||
new_parser_from_file(&sess.parse_sess, &mp.path, Some(span)).parse_mod(&token::Eof)?;
|
||||
let mut parser = new_parser_from_file(&sess.parse_sess, &mp.path, Some(span));
|
||||
let mut module = parser.parse_mod(&token::Eof, unsafety)?;
|
||||
module.0.inline = false;
|
||||
module
|
||||
};
|
||||
// (1) ...instead, we return a dummy module.
|
||||
let (module, mut new_attrs) = result.map_err(|mut err| err.emit()).unwrap_or_default();
|
||||
let (module, mut new_attrs) = result.map_err(|mut err| err.emit()).unwrap_or_else(|_| {
|
||||
let module = Mod { inner: Span::default(), unsafety, items: Vec::new(), inline: false };
|
||||
(module, Vec::new())
|
||||
});
|
||||
attrs.append(&mut new_attrs);
|
||||
|
||||
// Extract the directory path for submodules of `module`.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue