diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2015-01-26 14:39:58 -0500 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2015-01-30 05:57:57 -0500 |
| commit | a962bdb3daa45da703b8a25fd76e6eebeb97635e (patch) | |
| tree | 416868d0ca409e4b6bbd5c0bfdbd23ec336aeb4e /src/librustc/metadata | |
| parent | 80c793c1d360570837d897a713a64b450f50f028 (diff) | |
| download | rust-a962bdb3daa45da703b8a25fd76e6eebeb97635e.tar.gz rust-a962bdb3daa45da703b8a25fd76e6eebeb97635e.zip | |
Use `#[rustc_paren_sugar]` as a more extensible way of deciding when
paren sugar is legal.
Diffstat (limited to 'src/librustc/metadata')
| -rw-r--r-- | src/librustc/metadata/common.rs | 2 | ||||
| -rw-r--r-- | src/librustc/metadata/decoder.rs | 7 | ||||
| -rw-r--r-- | src/librustc/metadata/encoder.rs | 6 |
3 files changed, 15 insertions, 0 deletions
diff --git a/src/librustc/metadata/common.rs b/src/librustc/metadata/common.rs index 6c1a8a6f54b..242ab630a20 100644 --- a/src/librustc/metadata/common.rs +++ b/src/librustc/metadata/common.rs @@ -265,3 +265,5 @@ pub const tag_polarity: uint = 0xb4; pub const tag_macro_defs: uint = 0xb5; pub const tag_macro_def: uint = 0xb6; pub const tag_macro_def_body: uint = 0xb7; + +pub const tag_paren_sugar: uint = 0xb8; diff --git a/src/librustc/metadata/decoder.rs b/src/librustc/metadata/decoder.rs index 933fd873aeb..93ca42e9a28 100644 --- a/src/librustc/metadata/decoder.rs +++ b/src/librustc/metadata/decoder.rs @@ -371,6 +371,11 @@ fn parse_unsafety(item_doc: rbml::Doc) -> ast::Unsafety { } } +fn parse_paren_sugar(item_doc: rbml::Doc) -> bool { + let paren_sugar_doc = reader::get_doc(item_doc, tag_paren_sugar); + reader::doc_as_u8(paren_sugar_doc) != 0 +} + fn parse_polarity(item_doc: rbml::Doc) -> ast::ImplPolarity { let polarity_doc = reader::get_doc(item_doc, tag_polarity); if reader::doc_as_u8(polarity_doc) != 0 { @@ -400,8 +405,10 @@ pub fn get_trait_def<'tcx>(cdata: Cmd, let bounds = trait_def_bounds(item_doc, tcx, cdata); let unsafety = parse_unsafety(item_doc); let associated_type_names = parse_associated_type_names(item_doc); + let paren_sugar = parse_paren_sugar(item_doc); ty::TraitDef { + paren_sugar: paren_sugar, unsafety: unsafety, generics: generics, bounds: bounds, diff --git a/src/librustc/metadata/encoder.rs b/src/librustc/metadata/encoder.rs index 13dc9397afc..6767f77de84 100644 --- a/src/librustc/metadata/encoder.rs +++ b/src/librustc/metadata/encoder.rs @@ -1317,6 +1317,7 @@ fn encode_info_for_item(ecx: &EncodeContext, encode_item_variances(rbml_w, ecx, item.id); let trait_def = ty::lookup_trait_def(tcx, def_id); encode_unsafety(rbml_w, trait_def.unsafety); + encode_paren_sugar(rbml_w, trait_def.paren_sugar); encode_associated_type_names(rbml_w, trait_def.associated_type_names.as_slice()); encode_generics(rbml_w, ecx, &trait_def.generics, tag_item_generics); encode_trait_ref(rbml_w, ecx, &*trait_def.trait_ref, tag_item_trait_ref); @@ -1697,6 +1698,11 @@ fn encode_unsafety(rbml_w: &mut Encoder, unsafety: ast::Unsafety) { rbml_w.wr_tagged_u8(tag_unsafety, byte); } +fn encode_paren_sugar(rbml_w: &mut Encoder, paren_sugar: bool) { + let byte: u8 = if paren_sugar {1} else {0}; + rbml_w.wr_tagged_u8(tag_paren_sugar, byte); +} + fn encode_associated_type_names(rbml_w: &mut Encoder, names: &[ast::Name]) { rbml_w.start_tag(tag_associated_type_names); for &name in names.iter() { |
