diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2020-01-30 05:31:04 +0100 |
|---|---|---|
| committer | Mazdak Farrokhzad <twingoow@gmail.com> | 2020-02-13 10:39:24 +0100 |
| commit | c30f068dc8b2ef58678b9846ba834dd6dea3fe44 (patch) | |
| tree | 82e59f521573df949dda750e7f1aa31588205b7d /src/libsyntax | |
| parent | e839b2ec849246ec5efe5069c8d874dbef289462 (diff) | |
| download | rust-c30f068dc8b2ef58678b9846ba834dd6dea3fe44.tar.gz rust-c30f068dc8b2ef58678b9846ba834dd6dea3fe44.zip | |
IsAsync -> enum Async { Yes { span: Span, .. }, No }
use new span for better diagnostics.
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/ast.rs | 26 | ||||
| -rw-r--r-- | src/libsyntax/mut_visit.rs | 10 |
2 files changed, 18 insertions, 18 deletions
diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index a7142dfda85..72430fa9c17 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -34,7 +34,7 @@ use rustc_data_structures::thin_vec::ThinVec; use rustc_index::vec::Idx; use rustc_macros::HashStable_Generic; use rustc_serialize::{self, Decoder, Encoder}; -use rustc_span::source_map::{dummy_spanned, respan, Spanned}; +use rustc_span::source_map::{respan, Spanned}; use rustc_span::symbol::{kw, sym, Symbol}; use rustc_span::{Span, DUMMY_SP}; @@ -1198,14 +1198,14 @@ pub enum ExprKind { /// A closure (e.g., `move |a, b, c| a + b + c`). /// /// The final span is the span of the argument block `|...|`. - Closure(CaptureBy, IsAsync, Movability, P<FnDecl>, P<Expr>, Span), + Closure(CaptureBy, Async, Movability, P<FnDecl>, P<Expr>, Span), /// A block (`'label: { ... }`). Block(P<Block>, Option<Label>), /// An async block (`async move { ... }`). /// /// The `NodeId` is the `NodeId` for the closure that results from /// desugaring an async block, just like the NodeId field in the - /// `IsAsync` enum. This is necessary in order to create a def for the + /// `Async::Yes` variant. This is necessary in order to create a def for the /// closure which can be used as a parent of any child defs. Defs /// created during lowering cannot be made the parent of any other /// preexisting defs. @@ -2109,21 +2109,21 @@ pub enum Unsafe { } #[derive(Copy, Clone, RustcEncodable, RustcDecodable, Debug)] -pub enum IsAsync { - Async { closure_id: NodeId, return_impl_trait_id: NodeId }, - NotAsync, +pub enum Async { + Yes { span: Span, closure_id: NodeId, return_impl_trait_id: NodeId }, + No, } -impl IsAsync { +impl Async { pub fn is_async(self) -> bool { - if let IsAsync::Async { .. } = self { true } else { false } + if let Async::Yes { .. } = self { true } else { false } } /// In ths case this is an `async` return, the `NodeId` for the generated `impl Trait` item. pub fn opt_return_id(self) -> Option<NodeId> { match self { - IsAsync::Async { return_impl_trait_id, .. } => Some(return_impl_trait_id), - IsAsync::NotAsync => None, + Async::Yes { return_impl_trait_id, .. } => Some(return_impl_trait_id), + Async::No => None, } } } @@ -2496,7 +2496,7 @@ impl Extern { #[derive(Clone, Copy, RustcEncodable, RustcDecodable, Debug)] pub struct FnHeader { pub unsafety: Unsafe, - pub asyncness: Spanned<IsAsync>, + pub asyncness: Async, pub constness: Const, pub ext: Extern, } @@ -2506,7 +2506,7 @@ impl FnHeader { pub fn has_qualifiers(&self) -> bool { let Self { unsafety, asyncness, constness, ext } = self; matches!(unsafety, Unsafe::Yes(_)) - || asyncness.node.is_async() + || asyncness.is_async() || matches!(constness, Const::Yes(_)) || !matches!(ext, Extern::None) } @@ -2516,7 +2516,7 @@ impl Default for FnHeader { fn default() -> FnHeader { FnHeader { unsafety: Unsafe::No, - asyncness: dummy_spanned(IsAsync::NotAsync), + asyncness: Async::No, constness: Const::No, ext: Extern::None, } diff --git a/src/libsyntax/mut_visit.rs b/src/libsyntax/mut_visit.rs index 8517f223f92..e0180d45193 100644 --- a/src/libsyntax/mut_visit.rs +++ b/src/libsyntax/mut_visit.rs @@ -114,7 +114,7 @@ pub trait MutVisitor: Sized { noop_visit_fn_decl(d, self); } - fn visit_asyncness(&mut self, a: &mut IsAsync) { + fn visit_asyncness(&mut self, a: &mut Async) { noop_visit_asyncness(a, self); } @@ -728,13 +728,13 @@ pub fn noop_visit_interpolated<T: MutVisitor>(nt: &mut token::Nonterminal, vis: } } -pub fn noop_visit_asyncness<T: MutVisitor>(asyncness: &mut IsAsync, vis: &mut T) { +pub fn noop_visit_asyncness<T: MutVisitor>(asyncness: &mut Async, vis: &mut T) { match asyncness { - IsAsync::Async { closure_id, return_impl_trait_id } => { + Async::Yes { span: _, closure_id, return_impl_trait_id } => { vis.visit_id(closure_id); vis.visit_id(return_impl_trait_id); } - IsAsync::NotAsync => {} + Async::No => {} } } @@ -980,7 +980,7 @@ pub fn noop_flat_map_assoc_item<T: MutVisitor>( pub fn noop_visit_fn_header<T: MutVisitor>(header: &mut FnHeader, vis: &mut T) { let FnHeader { unsafety: _, asyncness, constness: _, ext: _ } = header; - vis.visit_asyncness(&mut asyncness.node); + vis.visit_asyncness(asyncness); } pub fn noop_visit_mod<T: MutVisitor>(Mod { inner, items, inline: _ }: &mut Mod, vis: &mut T) { |
