diff options
| author | Patrick Walton <pcwalton@mimiga.net> | 2012-07-18 09:31:53 -0700 |
|---|---|---|
| committer | Patrick Walton <pcwalton@mimiga.net> | 2012-07-18 16:05:17 -0700 |
| commit | 3ac5b4a86fa37d2b2c17ef5ffdb6e521630ea4ac (patch) | |
| tree | 0613184ab1f468f2a1b776c1d4c6df4ac15d69db /src/rustc/metadata | |
| parent | 1528256fdc26199dd58b390e42e2d0dc53b9703d (diff) | |
| download | rust-3ac5b4a86fa37d2b2c17ef5ffdb6e521630ea4ac.tar.gz rust-3ac5b4a86fa37d2b2c17ef5ffdb6e521630ea4ac.zip | |
syntax: Parse multiple trait refs in a single implementation
Diffstat (limited to 'src/rustc/metadata')
| -rw-r--r-- | src/rustc/metadata/encoder.rs | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/src/rustc/metadata/encoder.rs b/src/rustc/metadata/encoder.rs index 4df1e0aa513..e11008f4d6f 100644 --- a/src/rustc/metadata/encoder.rs +++ b/src/rustc/metadata/encoder.rs @@ -410,14 +410,7 @@ fn encode_info_for_mod(ecx: @encode_ctxt, ebml_w: ebml::writer, md: _mod, ref, we need to map it to its parent class */ ebml_w.wr_str(def_to_str(local_def(it.id))); } - some(ast_map::node_item(@{node: item_impl(_, - some(ifce),_,_),_},_)) { - ebml_w.wr_str(def_to_str(did)); - } - some(_) { - ebml_w.wr_str(def_to_str(did)); - } - none { + _ { // Must be a re-export, then! // ...or an iface ref ebml_w.wr_str(def_to_str(did)); @@ -715,7 +708,7 @@ fn encode_info_for_item(ecx: @encode_ctxt, ebml_w: ebml::writer, item: @item, encode_index(ebml_w, bkts, write_int); ebml_w.end_tag(); } - item_impl(tps, ifce, _, methods) { + item_impl(tps, traits, _, methods) { add_to_index(); ebml_w.start_tag(tag_items_data_item); encode_def_id(ebml_w, local_def(item.id)); @@ -729,9 +722,12 @@ fn encode_info_for_item(ecx: @encode_ctxt, ebml_w: ebml::writer, item: @item, ebml_w.writer.write(str::bytes(def_to_str(local_def(m.id)))); ebml_w.end_tag(); } - do option::iter(ifce) |t| { - encode_trait_ref(ebml_w, ecx, t) - }; + if traits.len() > 1 { + fail ~"multiple traits!!"; + } + for traits.each |associated_trait| { + encode_trait_ref(ebml_w, ecx, associated_trait) + } encode_path(ebml_w, path, ast_map::path_name(item.ident)); ebml_w.end_tag(); |
