diff options
| author | bors <bors@rust-lang.org> | 2015-01-16 16:21:06 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2015-01-16 16:21:06 +0000 |
| commit | 210f0dcf007104240b2e286ed0b80cb4a61d7bae (patch) | |
| tree | b689b3ef6381f71e2a5de664bb3cefc340b2c6b7 /src/libsyntax/ext | |
| parent | ee2bfae011e368e224d6d4f4c9fad13606ee99da (diff) | |
| parent | 716effa34900781ddb201fbd50ee679a4964cb25 (diff) | |
| download | rust-210f0dcf007104240b2e286ed0b80cb4a61d7bae.tar.gz rust-210f0dcf007104240b2e286ed0b80cb4a61d7bae.zip | |
auto merge of #21162 : apasel422/rust/issue-16530, r=huonw
This fixes #16530 by hashing nullary structs [the same way as the empty tuple] (https://github.com/rust-lang/rust/blob/master/src/libcore/hash/mod.rs#L185). Other approaches are possible, but this was the simplest.
Diffstat (limited to 'src/libsyntax/ext')
| -rw-r--r-- | src/libsyntax/ext/deriving/hash.rs | 8 |
1 files changed, 2 insertions, 6 deletions
diff --git a/src/libsyntax/ext/deriving/hash.rs b/src/libsyntax/ext/deriving/hash.rs index 889a212a287..08336be87d1 100644 --- a/src/libsyntax/ext/deriving/hash.rs +++ b/src/libsyntax/ext/deriving/hash.rs @@ -63,7 +63,7 @@ pub fn expand_deriving_hash<F>(cx: &mut ExtCtxt, fn hash_substructure(cx: &mut ExtCtxt, trait_span: Span, substr: &Substructure) -> P<Expr> { let state_expr = match substr.nonself_args { [ref state_expr] => state_expr, - _ => cx.span_bug(trait_span, "incorrect number of arguments in `deriving(Hash)`") + _ => cx.span_bug(trait_span, "incorrect number of arguments in `derive(Hash)`") }; let call_hash = |&: span, thing_expr| { let hash_path = { @@ -96,16 +96,12 @@ fn hash_substructure(cx: &mut ExtCtxt, trait_span: Span, substr: &Substructure) fs } - _ => cx.span_bug(trait_span, "impossible substructure in `deriving(Hash)`") + _ => cx.span_bug(trait_span, "impossible substructure in `derive(Hash)`") }; for &FieldInfo { ref self_, span, .. } in fields.iter() { stmts.push(call_hash(span, self_.clone())); } - if stmts.len() == 0 { - cx.span_bug(trait_span, "#[derive(Hash)] needs at least one field"); - } - cx.expr_block(cx.block(trait_span, stmts, None)) } |
