diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2024-10-27 19:49:07 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-27 19:49:07 +0100 |
| commit | 574a8ba6af1fc375abafee8f178573c886454841 (patch) | |
| tree | 0c9df3ac1495397b689f24bfe68d77be02cb3e18 /compiler/rustc_hir_analysis/src | |
| parent | 60beb5979bc4ea408a99490daaecd2753ce622f9 (diff) | |
| parent | 442f39582d2aec5026c8d75079a75f58579059e4 (diff) | |
| download | rust-574a8ba6af1fc375abafee8f178573c886454841.tar.gz rust-574a8ba6af1fc375abafee8f178573c886454841.zip | |
Rollup merge of #132214 - fmease:mv-impl-trait-val-paths, r=compiler-errors
Cleanup: Move an impl-Trait check from AST validation to AST lowering
Namely the one that rejects `impl Trait` in qself types and non-final path segments.
There's no good reason to perform this during AST validation.
We have better infrastructure in place in the AST lowerer (`ImplTraitContext`).
This shaves off a lot of code.
We now lower `impl Trait` in bad positions to `{type error}` which allows us to
remove a special case from HIR ty lowering.
Coincidentally fixes #126725. Well, it only *masks* it by passing `{type error}` to HIR analysis instead of a "bad" opaque. I was able to find a new reproducer for it. See the issue.
Diffstat (limited to 'compiler/rustc_hir_analysis/src')
| -rw-r--r-- | compiler/rustc_hir_analysis/src/hir_ty_lowering/mod.rs | 9 |
1 files changed, 0 insertions, 9 deletions
diff --git a/compiler/rustc_hir_analysis/src/hir_ty_lowering/mod.rs b/compiler/rustc_hir_analysis/src/hir_ty_lowering/mod.rs index 863c077a9e0..cfd1241ad69 100644 --- a/compiler/rustc_hir_analysis/src/hir_ty_lowering/mod.rs +++ b/compiler/rustc_hir_analysis/src/hir_ty_lowering/mod.rs @@ -1203,15 +1203,6 @@ impl<'tcx> dyn HirTyLowerer<'tcx> + '_ { err.emit() } else if let Err(reported) = qself_ty.error_reported() { reported - } else if let ty::Alias(ty::Opaque, alias_ty) = qself_ty.kind() { - // `<impl Trait as OtherTrait>::Assoc` makes no sense. - struct_span_code_err!( - self.dcx(), - tcx.def_span(alias_ty.def_id), - E0667, - "`impl Trait` is not allowed in path parameters" - ) - .emit() // Already reported in an earlier stage. } else { self.maybe_report_similar_assoc_fn(span, qself_ty, qself)?; |
