diff options
| author | bors <bors@rust-lang.org> | 2021-02-27 07:52:11 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-02-27 07:52:11 +0000 |
| commit | 8e863eb59a10fb0900d7377524a0dc7bf44b9ae3 (patch) | |
| tree | 3e21f786845776476c5960608e53edec8efbe82a /compiler/rustc_parse/src/parser | |
| parent | 0846043440b480e4bbf36ac19db3948f0c835bb1 (diff) | |
| parent | fb5fec017b2f24b88c1f51980f7d81a02e7468d9 (diff) | |
| download | rust-8e863eb59a10fb0900d7377524a0dc7bf44b9ae3.tar.gz rust-8e863eb59a10fb0900d7377524a0dc7bf44b9ae3.zip | |
Auto merge of #82448 - Aaron1011:merge-hastokens-hasattrs, r=petrochenkov
Combine HasAttrs and HasTokens into AstLike When token-based attribute handling is implemeneted in #80689, we will need to access tokens from `HasAttrs` (to perform cfg-stripping), and we will to access attributes from `HasTokens` (to construct a `PreexpTokenStream`). This PR merges the `HasAttrs` and `HasTokens` traits into a new `AstLike` trait. The previous `HasAttrs` impls from `Vec<Attribute>` and `AttrVec` are removed - they aren't attribute targets, so the impls never really made sense.
Diffstat (limited to 'compiler/rustc_parse/src/parser')
| -rw-r--r-- | compiler/rustc_parse/src/parser/attr_wrapper.rs | 4 | ||||
| -rw-r--r-- | compiler/rustc_parse/src/parser/mod.rs | 4 | ||||
| -rw-r--r-- | compiler/rustc_parse/src/parser/stmt.rs | 2 |
3 files changed, 5 insertions, 5 deletions
diff --git a/compiler/rustc_parse/src/parser/attr_wrapper.rs b/compiler/rustc_parse/src/parser/attr_wrapper.rs index aea7c6b42cf..f45d8d6c7a0 100644 --- a/compiler/rustc_parse/src/parser/attr_wrapper.rs +++ b/compiler/rustc_parse/src/parser/attr_wrapper.rs @@ -3,7 +3,7 @@ use super::{ForceCollect, Parser, TokenCursor, TrailingToken}; use rustc_ast::token::{self, Token, TokenKind}; use rustc_ast::tokenstream::{CreateTokenStream, TokenStream, TokenTree, TreeAndSpacing}; use rustc_ast::tokenstream::{DelimSpan, LazyTokenStream, Spacing}; -use rustc_ast::HasTokens; +use rustc_ast::AstLike; use rustc_ast::{self as ast}; use rustc_errors::PResult; use rustc_span::{Span, DUMMY_SP}; @@ -59,7 +59,7 @@ impl<'a> Parser<'a> { /// This restriction shouldn't be an issue in practice, /// since this function is used to record the tokens for /// a parsed AST item, which always has matching delimiters. - pub fn collect_tokens_trailing_token<R: HasTokens>( + pub fn collect_tokens_trailing_token<R: AstLike>( &mut self, attrs: AttrWrapper, force_collect: ForceCollect, diff --git a/compiler/rustc_parse/src/parser/mod.rs b/compiler/rustc_parse/src/parser/mod.rs index 8a097bf481d..4cc2224d27e 100644 --- a/compiler/rustc_parse/src/parser/mod.rs +++ b/compiler/rustc_parse/src/parser/mod.rs @@ -22,7 +22,7 @@ use rustc_ast::token::{self, DelimToken, Token, TokenKind}; use rustc_ast::tokenstream::{self, DelimSpan, Spacing}; use rustc_ast::tokenstream::{TokenStream, TokenTree, TreeAndSpacing}; use rustc_ast::DUMMY_NODE_ID; -use rustc_ast::{self as ast, AnonConst, AttrStyle, AttrVec, Const, CrateSugar, Extern, HasTokens}; +use rustc_ast::{self as ast, AnonConst, AstLike, AttrStyle, AttrVec, Const, CrateSugar, Extern}; use rustc_ast::{Async, Expr, ExprKind, MacArgs, MacDelimiter, Mutability, StrLit, Unsafe}; use rustc_ast::{Visibility, VisibilityKind}; use rustc_ast_pretty::pprust; @@ -1228,7 +1228,7 @@ impl<'a> Parser<'a> { } } - pub fn collect_tokens_no_attrs<R: HasTokens>( + pub fn collect_tokens_no_attrs<R: AstLike>( &mut self, f: impl FnOnce(&mut Self) -> PResult<'a, R>, ) -> PResult<'a, R> { diff --git a/compiler/rustc_parse/src/parser/stmt.rs b/compiler/rustc_parse/src/parser/stmt.rs index bb2c7e98861..07746f2390d 100644 --- a/compiler/rustc_parse/src/parser/stmt.rs +++ b/compiler/rustc_parse/src/parser/stmt.rs @@ -8,10 +8,10 @@ use super::{AttrWrapper, BlockMode, ForceCollect, Parser, Restrictions, SemiColo use crate::maybe_whole; use rustc_ast as ast; -use rustc_ast::attr::HasAttrs; use rustc_ast::ptr::P; use rustc_ast::token::{self, TokenKind}; use rustc_ast::util::classify; +use rustc_ast::AstLike; use rustc_ast::{AttrStyle, AttrVec, Attribute, MacCall, MacCallStmt, MacStmtStyle}; use rustc_ast::{Block, BlockCheckMode, Expr, ExprKind, Local, Stmt, StmtKind, DUMMY_NODE_ID}; use rustc_errors::{Applicability, PResult}; |
