diff options
| author | kennytm <kennytm@gmail.com> | 2018-03-03 06:05:54 +0800 |
|---|---|---|
| committer | kennytm <kennytm@gmail.com> | 2018-03-15 16:58:03 +0800 |
| commit | 6399d16cfde37b06f6b82cdafa623e36385d7252 (patch) | |
| tree | 084c6934333110a4d2d197ac77a0851a68fed3c1 /src/librustc/hir | |
| parent | a4d80336c96d7f47b0ef025fa141a9c96abcafbd (diff) | |
| download | rust-6399d16cfde37b06f6b82cdafa623e36385d7252.tar.gz rust-6399d16cfde37b06f6b82cdafa623e36385d7252.zip | |
Disallow &a..=b and box a..=b in pattern.
They are disallowed because they have different precedence than expressions. I assume parenthesis in pattern will be soon stabilized and thus write that as suggestion directly.
Diffstat (limited to 'src/librustc/hir')
| -rw-r--r-- | src/librustc/hir/print.rs | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/librustc/hir/print.rs b/src/librustc/hir/print.rs index d91aa3a3851..9e755f366a7 100644 --- a/src/librustc/hir/print.rs +++ b/src/librustc/hir/print.rs @@ -1810,15 +1810,35 @@ impl<'a> State<'a> { self.pclose()?; } PatKind::Box(ref inner) => { + let is_range_inner = match inner.node { + PatKind::Range(..) => true, + _ => false, + }; self.s.word("box ")?; + if is_range_inner { + self.popen()?; + } self.print_pat(&inner)?; + if is_range_inner { + self.pclose()?; + } } PatKind::Ref(ref inner, mutbl) => { + let is_range_inner = match inner.node { + PatKind::Range(..) => true, + _ => false, + }; self.s.word("&")?; if mutbl == hir::MutMutable { self.s.word("mut ")?; } + if is_range_inner { + self.popen()?; + } self.print_pat(&inner)?; + if is_range_inner { + self.pclose()?; + } } PatKind::Lit(ref e) => self.print_expr(&e)?, PatKind::Range(ref begin, ref end, ref end_kind) => { |
