diff options
| author | Taylor Cramer <cramertj@google.com> | 2017-11-27 18:14:24 -0800 |
|---|---|---|
| committer | Taylor Cramer <cramertj@google.com> | 2017-12-19 14:58:51 -0800 |
| commit | 07f51fb8684e1ea0a3859234d360814093d891bd (patch) | |
| tree | 2ba4570ab672999453ebbf0d15610392a086d044 /src/libsyntax/ext | |
| parent | b39c4bc12358078f77ddd01288b24252f757f37d (diff) | |
| download | rust-07f51fb8684e1ea0a3859234d360814093d891bd.tar.gz rust-07f51fb8684e1ea0a3859234d360814093d891bd.zip | |
Implement non-mod.rs mod statements
Diffstat (limited to 'src/libsyntax/ext')
| -rw-r--r-- | src/libsyntax/ext/base.rs | 2 | ||||
| -rw-r--r-- | src/libsyntax/ext/expand.rs | 10 | ||||
| -rw-r--r-- | src/libsyntax/ext/source_util.rs | 2 |
3 files changed, 9 insertions, 5 deletions
diff --git a/src/libsyntax/ext/base.rs b/src/libsyntax/ext/base.rs index 0eb4ec23d08..d53335f5be7 100644 --- a/src/libsyntax/ext/base.rs +++ b/src/libsyntax/ext/base.rs @@ -687,7 +687,7 @@ impl<'a> ExtCtxt<'a> { mark: Mark::root(), depth: 0, module: Rc::new(ModuleData { mod_path: Vec::new(), directory: PathBuf::new() }), - directory_ownership: DirectoryOwnership::Owned, + directory_ownership: DirectoryOwnership::Owned { relative: None }, }, expansions: HashMap::new(), } diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index f2346ed19de..07ea6a09086 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -976,7 +976,8 @@ impl<'a, 'b> Folder for InvocationCollector<'a, 'b> { if inline_module { if let Some(path) = attr::first_attr_value_str_by_name(&item.attrs, "path") { - self.cx.current_expansion.directory_ownership = DirectoryOwnership::Owned; + self.cx.current_expansion.directory_ownership = + DirectoryOwnership::Owned { relative: None }; module.directory.push(&*path.as_str()); } else { module.directory.push(&*item.ident.name.as_str()); @@ -988,8 +989,11 @@ impl<'a, 'b> Folder for InvocationCollector<'a, 'b> { other => PathBuf::from(other.to_string()), }; let directory_ownership = match path.file_name().unwrap().to_str() { - Some("mod.rs") => DirectoryOwnership::Owned, - _ => DirectoryOwnership::UnownedViaMod(false), + Some("mod.rs") => DirectoryOwnership::Owned { relative: None }, + Some(_) => DirectoryOwnership::Owned { + relative: Some(item.ident), + }, + None => DirectoryOwnership::UnownedViaMod(false), }; path.pop(); module.directory = path; diff --git a/src/libsyntax/ext/source_util.rs b/src/libsyntax/ext/source_util.rs index 2a80686aa0f..4da485fc9a4 100644 --- a/src/libsyntax/ext/source_util.rs +++ b/src/libsyntax/ext/source_util.rs @@ -100,7 +100,7 @@ pub fn expand_include<'cx>(cx: &'cx mut ExtCtxt, sp: Span, tts: &[tokenstream::T }; // The file will be added to the code map by the parser let path = res_rel_file(cx, sp, file); - let directory_ownership = DirectoryOwnership::Owned; + let directory_ownership = DirectoryOwnership::Owned { relative: None }; let p = parse::new_sub_parser_from_file(cx.parse_sess(), &path, directory_ownership, None, sp); struct ExpandResult<'a> { |
