提交 7d556e18 编写于 作者: B Brian Anderson

Fix deriving for single-variant enums

上级 6e38e334
......@@ -698,26 +698,30 @@ fn expand_deriving_eq_enum_method(cx: ext_ctxt,
};
other_arms.push(move matching_arm);
// Create the nonmatching pattern.
let nonmatching_pat = @{
id: cx.next_id(),
node: pat_wild,
span: span
};
// Create the nonmatching pattern body.
let nonmatching_expr = build::mk_bool(cx, span, !is_eq);
let nonmatching_body_block = build::mk_simple_block(cx,
span,
nonmatching_expr);
// Create the nonmatching arm.
let nonmatching_arm = {
pats: ~[ nonmatching_pat ],
guard: None,
body: move nonmatching_body_block
};
other_arms.push(move nonmatching_arm);
// Maybe generate a non-matching case. If there is only one
// variant then there will always be a match.
if enum_definition.variants.len() > 1 {
// Create the nonmatching pattern.
let nonmatching_pat = @{
id: cx.next_id(),
node: pat_wild,
span: span
};
// Create the nonmatching pattern body.
let nonmatching_expr = build::mk_bool(cx, span, !is_eq);
let nonmatching_body_block = build::mk_simple_block(cx,
span,
nonmatching_expr);
// Create the nonmatching arm.
let nonmatching_arm = {
pats: ~[ nonmatching_pat ],
guard: None,
body: move nonmatching_body_block
};
other_arms.push(move nonmatching_arm);
}
// Create the self pattern.
let self_pat = create_enum_variant_pattern(cx,
......
type task_id = int;
#[deriving_eq]
pub enum Task {
TaskHandle(task_id)
}
fn main() { }
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册