diff options
| author | bors <bors@rust-lang.org> | 2013-12-11 01:06:21 -0800 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2013-12-11 01:06:21 -0800 |
| commit | fff03a5fc74f8e9430cc330907122ccd3782866d (patch) | |
| tree | 59b4f7086e43c8075488b00318cdc24ec5999345 | |
| parent | b8516de48f3f535f3de888652bed1dca4e489348 (diff) | |
| parent | bd36b06f555a552b7a66fbc3bd749eb7226be4fa (diff) | |
auto merge of #10808 : kballard/rust/use-braces, r=alexcrichton
This fixes #10806.
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 15 | ||||
| -rw-r--r-- | src/libsyntax/print/pprust.rs | 8 | ||||
| -rw-r--r-- | src/test/run-pass/issue-10806.rs | 45 |
3 files changed, 66 insertions, 2 deletions
diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 9ebcfaae7c5..4270a4d0dc5 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -4828,6 +4828,21 @@ impl Parser { fn parse_view_path(&self) -> @view_path { let lo = self.span.lo; + if *self.token == token::LBRACE { + // use {foo,bar} + let idents = self.parse_unspanned_seq( + &token::LBRACE, &token::RBRACE, + seq_sep_trailing_allowed(token::COMMA), + |p| p.parse_path_list_ident()); + let path = ast::Path { + span: mk_sp(lo, self.span.hi), + global: false, + segments: ~[] + }; + return @spanned(lo, self.span.hi, + view_path_list(path, idents, ast::DUMMY_NODE_ID)); + } + let first_ident = self.parse_ident(); let mut path = ~[first_ident]; debug!("parsed view_path: {}", self.id_to_str(first_ident)); diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index ea382e1cefe..19133fad9ee 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -1935,8 +1935,12 @@ pub fn print_view_path(s: @ps, vp: &ast::view_path) { } ast::view_path_list(ref path, ref idents, _) => { - print_path(s, path, false); - word(s.s, "::{"); + if path.segments.is_empty() { + word(s.s, "{"); + } else { + print_path(s, path, false); + word(s.s, "::{"); + } commasep(s, inconsistent, (*idents), |s, w| { print_ident(s, w.node.name); }); diff --git a/src/test/run-pass/issue-10806.rs b/src/test/run-pass/issue-10806.rs new file mode 100644 index 00000000000..3ee3f30e00f --- /dev/null +++ b/src/test/run-pass/issue-10806.rs @@ -0,0 +1,45 @@ +// Copyright 2013 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. + +// xfail-fast + +pub fn foo() -> int { + 3 +} +pub fn bar() -> int { + 4 +} + +pub mod baz { + use {foo, bar}; + pub fn quux() -> int { + foo() + bar() + } +} + +pub mod grault { + use {foo}; + pub fn garply() -> int { + foo() + } +} + +pub mod waldo { + use {}; + pub fn plugh() -> int { + 0 + } +} + +fn main() { + let _x = baz::quux(); + let _y = grault::garply(); + let _z = waldo::plugh(); +} |
