diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2024-02-08 20:34:59 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-08 20:34:59 +0100 |
| commit | 3e523f6d3c252f17a315db68ecc9b962858b45fa (patch) | |
| tree | ec80663feb028ecf1331fc10d332498114bc9ddc | |
| parent | 949e55299de22071f4026d1d6b782b715fcf41f4 (diff) | |
| parent | da4ec6ffa73fff5435e43de70c082adf895e9a59 (diff) | |
| download | rust-3e523f6d3c252f17a315db68ecc9b962858b45fa.tar.gz rust-3e523f6d3c252f17a315db68ecc9b962858b45fa.zip | |
Rollup merge of #120778 - zetanumbers:refactor_try_instance_mir, r=compiler-errors
Deduplicate `tcx.instance_mir(instance)` calls in `try_instance_mir`
| -rw-r--r-- | compiler/rustc_mir_transform/src/inline.rs | 25 |
1 files changed, 10 insertions, 15 deletions
diff --git a/compiler/rustc_mir_transform/src/inline.rs b/compiler/rustc_mir_transform/src/inline.rs index e77553a03d6..be19bd8349e 100644 --- a/compiler/rustc_mir_transform/src/inline.rs +++ b/compiler/rustc_mir_transform/src/inline.rs @@ -1027,21 +1027,16 @@ fn try_instance_mir<'tcx>( tcx: TyCtxt<'tcx>, instance: InstanceDef<'tcx>, ) -> Result<&'tcx Body<'tcx>, &'static str> { - match instance { - ty::InstanceDef::DropGlue(_, Some(ty)) => match ty.kind() { - ty::Adt(def, args) => { - let fields = def.all_fields(); - for field in fields { - let field_ty = field.ty(tcx, args); - if field_ty.has_param() && field_ty.has_projections() { - return Err("cannot build drop shim for polymorphic type"); - } - } - - Ok(tcx.instance_mir(instance)) + if let ty::InstanceDef::DropGlue(_, Some(ty)) = instance + && let ty::Adt(def, args) = ty.kind() + { + let fields = def.all_fields(); + for field in fields { + let field_ty = field.ty(tcx, args); + if field_ty.has_param() && field_ty.has_projections() { + return Err("cannot build drop shim for polymorphic type"); } - _ => Ok(tcx.instance_mir(instance)), - }, - _ => Ok(tcx.instance_mir(instance)), + } } + Ok(tcx.instance_mir(instance)) } |
