rollup merge of #18362 : kevinmehall/pprint-struct-pat-shorthand
This commit is contained in:
commit
20b9897c58
@ -421,7 +421,7 @@ fn construct_witness(cx: &MatchCheckCtxt, ctor: &Constructor,
|
||||
node: FieldPat {
|
||||
ident: Ident::new(field.name),
|
||||
pat: pat,
|
||||
is_shorthand: true,
|
||||
is_shorthand: false,
|
||||
}
|
||||
}).collect();
|
||||
let has_more_fields = field_pats.len() < pats_len;
|
||||
|
@ -341,7 +341,7 @@ pub fn const_expr_to_pat(tcx: &ty::ctxt, expr: &Expr) -> P<Pat> {
|
||||
node: FieldPat {
|
||||
ident: field.ident.node,
|
||||
pat: const_expr_to_pat(tcx, &*field.expr),
|
||||
is_shorthand: true,
|
||||
is_shorthand: false,
|
||||
},
|
||||
}).collect();
|
||||
PatStruct(path.clone(), field_pats, false)
|
||||
|
@ -1250,7 +1250,7 @@ fn create_struct_pattern(&self,
|
||||
// id is guaranteed to be Some
|
||||
codemap::Spanned {
|
||||
span: pat.span,
|
||||
node: ast::FieldPat { ident: id.unwrap(), pat: pat, is_shorthand: true },
|
||||
node: ast::FieldPat { ident: id.unwrap(), pat: pat, is_shorthand: false },
|
||||
}
|
||||
}).collect();
|
||||
cx.pat_struct(self.span, matching_path, field_pats)
|
||||
|
@ -1997,8 +1997,10 @@ pub fn print_pat(&mut self, pat: &ast::Pat) -> IoResult<()> {
|
||||
Consistent, fields.as_slice(),
|
||||
|s, f| {
|
||||
try!(s.cbox(indent_unit));
|
||||
try!(s.print_ident(f.node.ident));
|
||||
try!(s.word_nbsp(":"));
|
||||
if !f.node.is_shorthand {
|
||||
try!(s.print_ident(f.node.ident));
|
||||
try!(s.word_nbsp(":"));
|
||||
}
|
||||
try!(s.print_pat(&*f.node.pat));
|
||||
s.end()
|
||||
},
|
||||
|
15
src/test/pretty/struct-pattern.rs
Normal file
15
src/test/pretty/struct-pattern.rs
Normal file
@ -0,0 +1,15 @@
|
||||
// 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.
|
||||
|
||||
// pp-exact
|
||||
// pretty-compare-only
|
||||
// Testing that shorthand struct patterns are preserved
|
||||
|
||||
fn main() { let Foo { a, ref b, mut c, x: y, z: z } = foo; }
|
Loading…
Reference in New Issue
Block a user