diff options
| author | bors <bors@rust-lang.org> | 2014-08-12 20:06:30 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-08-12 20:06:30 +0000 |
| commit | 4bb4a43917bf702fb2c6a614786aa1abe6c1014c (patch) | |
| tree | a2d4699c245af512a0e647afefeb0209e846321f /src/libsyntax/parse | |
| parent | e2273d945640442224a09e532865e4a58257a851 (diff) | |
| parent | 857ba988f189c9a2ebc7d30b1b7b6ec018908aa6 (diff) | |
| download | rust-4bb4a43917bf702fb2c6a614786aa1abe6c1014c.tar.gz rust-4bb4a43917bf702fb2c6a614786aa1abe6c1014c.zip | |
auto merge of #16454 : pcwalton/rust/types-in-path-patterns, r=brson
patterns.
This breaks code like:
fn main() {
match Some("foo") {
None::<int> => {}
Some(_) => {}
}
}
Change this code to not contain a type error. For example:
fn main() {
match Some("foo") {
None::<&str> => {}
Some(_) => {}
}
}
Closes #16353.
[breaking-change]
r? @huonw
Diffstat (limited to 'src/libsyntax/parse')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 7ea000d3aac..08d96f5b008 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -3157,7 +3157,16 @@ impl<'a> Parser<'a> { } }, _ => { - if !enum_path.global && enum_path.segments.len() == 1 { + if !enum_path.global && + enum_path.segments.len() == 1 && + enum_path.segments + .get(0) + .lifetimes + .len() == 0 && + enum_path.segments + .get(0) + .types + .len() == 0 { // it could still be either an enum // or an identifier pattern, resolve // will sort it out: |
