diff options
| author | Mazdak Farrokhzad <twingoow@gmail.com> | 2019-08-17 03:02:56 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-08-17 03:02:56 +0200 |
| commit | bf04edee2fac9a364c6683921ece8c6c0678e1ec (patch) | |
| tree | e9081bb86551c7d9606fd7e114adbc26b2ff595d /src/libsyntax/parse | |
| parent | 7f3c67d4e0c4d8237899c6aa99a174547ff85b09 (diff) | |
| parent | 20661f18df695058224427fb84d21a0eeec8c657 (diff) | |
| download | rust-bf04edee2fac9a364c6683921ece8c6c0678e1ec.tar.gz rust-bf04edee2fac9a364c6683921ece8c6c0678e1ec.zip | |
Rollup merge of #63545 - Centril:gate-yield-preexp, r=oli-obk
Feature gate 'yield $expr?' pre-expansion Also improve the overall ergonomics of pre-expansion gating in general. r? @Zoxc
Diffstat (limited to 'src/libsyntax/parse')
| -rw-r--r-- | src/libsyntax/parse/mod.rs | 3 | ||||
| -rw-r--r-- | src/libsyntax/parse/parser/expr.rs | 3 |
2 files changed, 6 insertions, 0 deletions
diff --git a/src/libsyntax/parse/mod.rs b/src/libsyntax/parse/mod.rs index 26f78b9c5c7..9088f929372 100644 --- a/src/libsyntax/parse/mod.rs +++ b/src/libsyntax/parse/mod.rs @@ -63,6 +63,8 @@ pub struct ParseSess { pub let_chains_spans: Lock<Vec<Span>>, // Places where `async || ..` exprs were used and should be feature gated. pub async_closure_spans: Lock<Vec<Span>>, + // Places where `yield e?` exprs were used and should be feature gated. + pub yield_spans: Lock<Vec<Span>>, pub injected_crate_name: Once<Symbol>, } @@ -92,6 +94,7 @@ impl ParseSess { param_attr_spans: Lock::new(Vec::new()), let_chains_spans: Lock::new(Vec::new()), async_closure_spans: Lock::new(Vec::new()), + yield_spans: Lock::new(Vec::new()), injected_crate_name: Once::new(), } } diff --git a/src/libsyntax/parse/parser/expr.rs b/src/libsyntax/parse/parser/expr.rs index f4b6a926734..ccc6bd15067 100644 --- a/src/libsyntax/parse/parser/expr.rs +++ b/src/libsyntax/parse/parser/expr.rs @@ -997,6 +997,9 @@ impl<'a> Parser<'a> { } else { ex = ExprKind::Yield(None); } + + let span = lo.to(hi); + self.sess.yield_spans.borrow_mut().push(span); } else if self.eat_keyword(kw::Let) { return self.parse_let_expr(attrs); } else if is_span_rust_2018 && self.eat_keyword(kw::Await) { |
