X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=src%2Flibrustc_front%2Flowering.rs;h=bd5f7cf3c626eba2c81dba90444a1e7f9f1198fb;hb=ea47c2b6b349d7f252a6a734ced8204e6ef70546;hp=4ee5fa2c1e9b5389c894dcfd4249f1e8f61e28a7;hpb=3034541129d6f64b2c2cf1df6542a7e98bf0d3c7;p=rust.git diff --git a/src/librustc_front/lowering.rs b/src/librustc_front/lowering.rs index 4ee5fa2c1e9..bd5f7cf3c62 100644 --- a/src/librustc_front/lowering.rs +++ b/src/librustc_front/lowering.rs @@ -267,14 +267,13 @@ pub fn lower_variant(_lctx: &LoweringContext, v: &Variant) -> P { id: v.node.id, name: v.node.name.name, attrs: v.node.attrs.clone(), - kind: match v.node.kind { - TupleVariantKind(ref variant_args) => { - hir::TupleVariantKind(variant_args.iter() - .map(|ref x| lower_variant_arg(_lctx, x)) - .collect()) - } - StructVariantKind(ref struct_def) => { - hir::StructVariantKind(lower_struct_def(_lctx, struct_def)) + kind: { + if v.node.def.ctor_id.is_none() { + hir::StructVariantKind(lower_struct_def(_lctx, &v.node.def)) + } else { + hir::TupleVariantKind(v.node.def.fields.iter().map(|ref field| { + hir::VariantArg { id: field.node.id, ty: lower_ty(_lctx, &field.node.ty) } + }).collect()) } }, disr_expr: v.node.disr_expr.as_ref().map(|e| lower_expr(_lctx, e)), @@ -567,13 +566,6 @@ fn lower_bounds(_lctx: &LoweringContext, bounds: &TyParamBounds) -> hir::TyParam bounds.iter().map(|bound| lower_ty_param_bound(_lctx, bound)).collect() } -fn lower_variant_arg(_lctx: &LoweringContext, va: &VariantArg) -> hir::VariantArg { - hir::VariantArg { - id: va.id, - ty: lower_ty(_lctx, &va.ty), - } -} - pub fn lower_block(_lctx: &LoweringContext, b: &Block) -> P { P(hir::Block { id: b.id, @@ -1422,7 +1414,11 @@ pub fn lower_expr(lctx: &LoweringContext, e: &Expr) -> P { vec![head]) }; - let match_expr = expr_match(lctx, e.span, into_iter_expr, vec![iter_arm]); + let match_expr = expr_match(lctx, + e.span, + into_iter_expr, + vec![iter_arm], + hir::MatchSource::ForLoopDesugar); // `{ let result = ...; result }` let result_ident = lctx.str_to_ident("result"); @@ -1574,11 +1570,12 @@ fn expr_path(lctx: &LoweringContext, path: hir::Path) -> P { fn expr_match(lctx: &LoweringContext, span: Span, arg: P, - arms: Vec) + arms: Vec, + source: hir::MatchSource) -> P { expr(lctx, span, - hir::ExprMatch(arg, arms, hir::MatchSource::Normal)) + hir::ExprMatch(arg, arms, source)) } fn expr_block(lctx: &LoweringContext, b: P) -> P {