diff options
| author | Yuki Okushi <huyuumi.dev@gmail.com> | 2020-08-10 09:07:56 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-08-10 09:07:56 +0900 |
| commit | d8ac403fd1c68660b6898777546cc191616cd48d (patch) | |
| tree | 042ea91c842c587d810e93fc70db2f8d5bb4ac9b /src/librustc_parse/parser | |
| parent | 968740a3a34f245ca95eeb61f089fa2d09b1b0cc (diff) | |
| parent | 4dbe0ac9287d723ae9d39e3c2b90930813eed4a3 (diff) | |
| download | rust-d8ac403fd1c68660b6898777546cc191616cd48d.tar.gz rust-d8ac403fd1c68660b6898777546cc191616cd48d.zip | |
Rollup merge of #75320 - estebank:js-for-i-of-x, r=davidtwco
Detect likely `for foo of bar` JS syntax Fix #75311.
Diffstat (limited to 'src/librustc_parse/parser')
| -rw-r--r-- | src/librustc_parse/parser/expr.rs | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/src/librustc_parse/parser/expr.rs b/src/librustc_parse/parser/expr.rs index 3aec300d86d..55a134ae091 100644 --- a/src/librustc_parse/parser/expr.rs +++ b/src/librustc_parse/parser/expr.rs @@ -1733,13 +1733,20 @@ impl<'a> Parser<'a> { Ok(self.mk_expr(lo.to(self.prev_token.span), kind, attrs)) } - fn error_missing_in_for_loop(&self) { - let in_span = self.prev_token.span.between(self.token.span); - self.struct_span_err(in_span, "missing `in` in `for` loop") + fn error_missing_in_for_loop(&mut self) { + let (span, msg, sugg) = if self.token.is_ident_named(sym::of) { + // Possibly using JS syntax (#75311). + let span = self.token.span; + self.bump(); + (span, "try using `in` here instead", "in") + } else { + (self.prev_token.span.between(self.token.span), "try adding `in` here", " in ") + }; + self.struct_span_err(span, "missing `in` in `for` loop") .span_suggestion_short( - in_span, - "try adding `in` here", - " in ".into(), + span, + msg, + sugg.into(), // Has been misleading, at least in the past (closed Issue #48492). Applicability::MaybeIncorrect, ) |
