diff options
| author | Jakub Wieczorek <jakub@jakub.cc> | 2014-07-21 18:47:24 +0200 |
|---|---|---|
| committer | Jakub Wieczorek <jakub@jakub.cc> | 2014-07-23 22:15:11 +0200 |
| commit | ad30579ef8a40695f30d348331a0d919be2f52ee (patch) | |
| tree | 9201ae120783d52cd095c5648e3b4b22e5d8f732 /src | |
| parent | 826b8358134f909f0b8aeb4c1d67a3fdda50b4b0 (diff) | |
| download | rust-ad30579ef8a40695f30d348331a0d919be2f52ee.tar.gz rust-ad30579ef8a40695f30d348331a0d919be2f52ee.zip | |
Parser: Global single-segment paths should be represented as PatEnum
Fixed #15774.
Diffstat (limited to 'src')
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 2 | ||||
| -rw-r--r-- | src/test/run-pass/issue-15774.rs | 32 |
2 files changed, 33 insertions, 1 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 73de47e7b12..bfc01afd457 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -3101,7 +3101,7 @@ impl<'a> Parser<'a> { } }, _ => { - if enum_path.segments.len() == 1 { + if !enum_path.global && enum_path.segments.len() == 1 { // it could still be either an enum // or an identifier pattern, resolve // will sort it out: diff --git a/src/test/run-pass/issue-15774.rs b/src/test/run-pass/issue-15774.rs new file mode 100644 index 00000000000..0a70c3e1bcd --- /dev/null +++ b/src/test/run-pass/issue-15774.rs @@ -0,0 +1,32 @@ +// Copyright 2014 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#![deny(warnings)] +#![allow(unused_imports)] + +enum Foo { A } +mod bar { + pub fn normal(x: ::Foo) { + use A; + match x { + A => {} + } + } + pub fn wrong(x: ::Foo) { + match x { + ::A => {} + } + } +} + +pub fn main() { + bar::normal(A); + bar::wrong(A); +} |
