diff options
| author | Erick Tryzelaar <erick.tryzelaar@gmail.com> | 2016-06-17 10:05:19 +0100 |
|---|---|---|
| committer | Erick Tryzelaar <erick.tryzelaar@gmail.com> | 2016-06-17 10:05:19 +0100 |
| commit | 9de2de1d217c1af856d8f323d2e36a19da5ff8bb (patch) | |
| tree | f41a7133560844d37618dda2a0ea716a33f710a0 /src | |
| parent | be203ac258365a2fb85a40314708d26112c40381 (diff) | |
| download | rust-9de2de1d217c1af856d8f323d2e36a19da5ff8bb.tar.gz rust-9de2de1d217c1af856d8f323d2e36a19da5ff8bb.zip | |
Pretty-print attributes on tuple structs and add tests
This adds support to the pretty printer to print attributes added to tuple struct elements. Furthermore, it adds a test that makes sure we will print attributes on all variant data types.
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc/hir/print.rs | 3 | ||||
| -rw-r--r-- | src/libsyntax/print/pprust.rs | 3 | ||||
| -rw-r--r-- | src/test/pretty/attr-variant-data.rs | 51 |
3 files changed, 55 insertions, 2 deletions
diff --git a/src/librustc/hir/print.rs b/src/librustc/hir/print.rs index b6b7aa6ce7d..6340f9e7472 100644 --- a/src/librustc/hir/print.rs +++ b/src/librustc/hir/print.rs @@ -911,8 +911,9 @@ impl<'a> State<'a> { if struct_def.is_tuple() { self.popen()?; self.commasep(Inconsistent, struct_def.fields(), |s, field| { - s.print_visibility(&field.vis)?; s.maybe_print_comment(field.span.lo)?; + s.print_outer_attributes(&field.attrs)?; + s.print_visibility(&field.vis)?; s.print_type(&field.ty) })?; self.pclose()?; diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index 0c90e102f34..34bb83711f2 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -1403,8 +1403,9 @@ impl<'a> State<'a> { try!(self.commasep( Inconsistent, struct_def.fields(), |s, field| { - try!(s.print_visibility(&field.vis)); try!(s.maybe_print_comment(field.span.lo)); + try!(s.print_outer_attributes(&field.attrs)); + try!(s.print_visibility(&field.vis)); s.print_type(&field.ty) } )); diff --git a/src/test/pretty/attr-variant-data.rs b/src/test/pretty/attr-variant-data.rs new file mode 100644 index 00000000000..1ffacaa9f5a --- /dev/null +++ b/src/test/pretty/attr-variant-data.rs @@ -0,0 +1,51 @@ +// Copyright 2012 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 +// Testing that both the inner item and next outer item are +// preserved, and that the first outer item parsed in main is not +// accidentally carried over to each inner function + +#![feature(custom_attribute)] +#![feature(custom_derive)] + +#[derive(Serialize, Deserialize)] +struct X; + +#[derive(Serialize, Deserialize)] +struct WithRef<'a, T: 'a> { + #[serde(skip_deserializing)] + t: Option<&'a T>, + #[serde(serialize_with = "ser_x", deserialize_with = "de_x")] + x: X, +} + +#[derive(Serialize, Deserialize)] +enum EnumWith<T> { + Unit, + Newtype( + #[serde(serialize_with = "ser_x", deserialize_with = "de_x")] + X), + Tuple(T, + #[serde(serialize_with = "ser_x", deserialize_with = "de_x")] + X), + Struct { + t: T, + #[serde(serialize_with = "ser_x", deserialize_with = "de_x")] + x: X, + }, +} + +#[derive(Serialize, Deserialize)] +struct Tuple<T>(T, + #[serde(serialize_with = "ser_x", deserialize_with = "de_x")] + X); + +fn main() { } |
