diff options
| author | bors <bors@rust-lang.org> | 2018-09-11 23:28:39 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2018-09-11 23:28:39 +0000 |
| commit | 58063894d21c76ab5bc32bda30eee66703e0fdfb (patch) | |
| tree | 834f7c003db882543320e632c7754ef2016e42eb /src/libsyntax | |
| parent | 2f1547c0aa5957b42cc768c00119c6eb7b4262d3 (diff) | |
| parent | de153d61f5a4ef8681fc64fc55de2bcfe449c8c4 (diff) | |
| download | rust-58063894d21c76ab5bc32bda30eee66703e0fdfb.tar.gz rust-58063894d21c76ab5bc32bda30eee66703e0fdfb.zip | |
Auto merge of #53913 - petrochenkov:biattr4, r=alexcrichton
resolve: Future proof resolutions for potentially built-in attributes This is not full "pass all attributes through name resolution", but a more conservative solution. If built-in attribute is ambiguous with any other macro in scope, then an error is reported. What complications arise with the full solution - https://github.com/rust-lang/rust/pull/53913#issuecomment-418204136. cc https://github.com/rust-lang/rust/pull/50911#issuecomment-411605393 cc https://github.com/rust-lang/rust/issues/52269 Closes https://github.com/rust-lang/rust/issues/53531
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/ext/base.rs | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/src/libsyntax/ext/base.rs b/src/libsyntax/ext/base.rs index 1ea71009766..07c3e578e5b 100644 --- a/src/libsyntax/ext/base.rs +++ b/src/libsyntax/ext/base.rs @@ -727,10 +727,9 @@ pub trait Resolver { fn find_legacy_attr_invoc(&mut self, attrs: &mut Vec<Attribute>, allow_derive: bool) -> Option<Attribute>; - fn resolve_macro_invocation(&mut self, invoc: &Invocation, scope: Mark, force: bool) + fn resolve_macro_invocation(&mut self, invoc: &Invocation, invoc_id: Mark, force: bool) -> Result<Option<Lrc<SyntaxExtension>>, Determinacy>; - - fn resolve_macro_path(&mut self, path: &ast::Path, kind: MacroKind, scope: Mark, + fn resolve_macro_path(&mut self, path: &ast::Path, kind: MacroKind, invoc_id: Mark, derives_in_scope: &[ast::Path], force: bool) -> Result<Lrc<SyntaxExtension>, Determinacy>; @@ -764,11 +763,11 @@ impl Resolver for DummyResolver { fn resolve_imports(&mut self) {} fn find_legacy_attr_invoc(&mut self, _attrs: &mut Vec<Attribute>, _allow_derive: bool) -> Option<Attribute> { None } - fn resolve_macro_invocation(&mut self, _invoc: &Invocation, _scope: Mark, _force: bool) + fn resolve_macro_invocation(&mut self, _invoc: &Invocation, _invoc_id: Mark, _force: bool) -> Result<Option<Lrc<SyntaxExtension>>, Determinacy> { Err(Determinacy::Determined) } - fn resolve_macro_path(&mut self, _path: &ast::Path, _kind: MacroKind, _scope: Mark, + fn resolve_macro_path(&mut self, _path: &ast::Path, _kind: MacroKind, _invoc_id: Mark, _derives_in_scope: &[ast::Path], _force: bool) -> Result<Lrc<SyntaxExtension>, Determinacy> { Err(Determinacy::Determined) |
