Skip to content

Commit 6ddd5f9

Browse files
committed
---
yaml --- r: 23238 b: refs/heads/master c: 6d68658 h: refs/heads/master v: v3
1 parent 8e64972 commit 6ddd5f9

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 9f01acacf94b119da674e8f70b828cb4a5fa6485
2+
refs/heads/master: 6d68658b9a9705d2e4c517d12705a2f64f20e378
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: cd6f24f9d14ac90d167386a56e7a6ac1f0318195
55
refs/heads/try: ffbe0e0e00374358b789b0037bcb3a577cd218be

trunk/src/libsyntax/ext/auto_serialize.rs

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -885,7 +885,7 @@ fn deser_enum(cx: ext_ctxt, tps: deser_tps_map, e_name: ast::ident,
885885
e_span: span, variants: ~[ast::variant],
886886
-d: @ast::expr) -> @ast::expr {
887887
let ext_cx = cx;
888-
let arms: ~[ast::arm] = do vec::from_fn(vec::len(variants)) |vidx| {
888+
let mut arms: ~[ast::arm] = do vec::from_fn(vec::len(variants)) |vidx| {
889889
let variant = variants[vidx];
890890
let v_span = variant.span;
891891
let v_name = variant.node.name;
@@ -925,10 +925,19 @@ fn deser_enum(cx: ext_ctxt, tps: deser_tps_map, e_name: ast::ident,
925925
body: cx.expr_blk(body)}
926926
};
927927

928+
let impossible_case = {pats: ~[@{id: cx.next_id(),
929+
node: ast::pat_wild,
930+
span: e_span}],
931+
guard: none,
932+
// FIXME #3198: proper error message
933+
body: cx.expr_blk(cx.expr(e_span,
934+
ast::expr_fail(none)))};
935+
arms += ~[impossible_case];
936+
928937
// Generate code like:
929938
let e_name = cx.lit_str(e_span, e_name);
930939
let alt_expr = cx.expr(e_span,
931-
ast::expr_match(#ast{__i}, arms, ast::alt_check));
940+
ast::expr_match(#ast{__i}, arms, ast::alt_exhaustive));
932941
let var_lambda = #ast{ |__i| $(alt_expr) };
933942
let read_var = #ast{ $(cx.clone(d)).read_enum_variant($(var_lambda)) };
934943
let read_lambda = cx.lambda(cx.expr_blk(read_var));

0 commit comments

Comments
 (0)