Skip to content

Commit 7ac4b82

Browse files
committed
Auto merge of #109206 - matthiaskrgr:rollup-oev8ax6, r=matthiaskrgr
Rollup of 10 pull requests Successful merges: - #108875 (rustdoc: fix type search for `Option` combinators) - #108971 (error-msg: impl better suggestion for `E0532`) - #109139 (rustdoc: DocFS: Replace rayon with threadpool and enable it for all targets) - #109151 (Assert def-kind is correct for alias types) - #109158 (error-msg: expand suggestion for `unused_def` lint) - #109166 (make `define_opaque_types` fully explicit) - #109171 (Some cleanups in our normalization logic) - #109180 (Unequal → Not equal) - #109185 (rustdoc: remove `std::` from primitive intra-doc link tooltips) - #109192 (Mention UEFI target promotion in release notes for 1.67.0) Failed merges: r? `@ghost` `@rustbot` modify labels: rollup
2 parents cd6c574 + a70e138 commit 7ac4b82

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+791
-411
lines changed

Cargo.lock

+10-1
Original file line numberDiff line numberDiff line change
@@ -5458,13 +5458,13 @@ dependencies = [
54585458
"itertools",
54595459
"minifier",
54605460
"once_cell",
5461-
"rayon",
54625461
"regex",
54635462
"rustdoc-json-types",
54645463
"serde",
54655464
"serde_json",
54665465
"smallvec",
54675466
"tempfile",
5467+
"threadpool",
54685468
"tracing",
54695469
"tracing-subscriber",
54705470
"tracing-tree",
@@ -6209,6 +6209,15 @@ dependencies = [
62096209
"once_cell",
62106210
]
62116211

6212+
[[package]]
6213+
name = "threadpool"
6214+
version = "1.8.1"
6215+
source = "registry+https://github.com/rust-lang/crates.io-index"
6216+
checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa"
6217+
dependencies = [
6218+
"num_cpus",
6219+
]
6220+
62126221
[[package]]
62136222
name = "tidy"
62146223
version = "0.1.0"

RELEASES.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -125,12 +125,13 @@ Compiler
125125
- [Optimize field ordering by grouping m\*2^n-sized fields with equivalently aligned ones.](https://github.com/rust-lang/rust/pull/102750/)
126126
- [Stabilize native library modifier `verbatim`.](https://github.com/rust-lang/rust/pull/104360/)
127127

128-
Added and removed targets:
128+
Added, updated, and removed targets:
129129

130130
- [Add a tier 3 target for PowerPC on AIX](https://github.com/rust-lang/rust/pull/102293/), `powerpc64-ibm-aix`.
131131
- [Add a tier 3 target for the Sony PlayStation 1](https://github.com/rust-lang/rust/pull/102689/), `mipsel-sony-psx`.
132132
- [Add tier 3 `no_std` targets for the QNX Neutrino RTOS](https://github.com/rust-lang/rust/pull/102701/),
133133
`aarch64-unknown-nto-qnx710` and `x86_64-pc-nto-qnx710`.
134+
- [Promote UEFI targets to tier 2](https://github.com/rust-lang/rust/pull/103933/), `aarch64-unknown-uefi`, `i686-unknown-uefi`, and `x86_64-unknown-uefi`.
134135
- [Remove tier 3 `linuxkernel` targets](https://github.com/rust-lang/rust/pull/104015/) (not used by the actual kernel).
135136

136137
Refer to Rust's [platform support page][platform-support-doc]

compiler/rustc_borrowck/src/dataflow.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -306,7 +306,7 @@ impl<'a, 'tcx> Borrows<'a, 'tcx> {
306306
}
307307

308308
// By passing `PlaceConflictBias::NoOverlap`, we conservatively assume that any given
309-
// pair of array indices are unequal, so that when `places_conflict` returns true, we
309+
// pair of array indices are not equal, so that when `places_conflict` returns true, we
310310
// will be assured that two places being compared definitely denotes the same sets of
311311
// locations.
312312
let definitely_conflicting_borrows = other_borrows_of_local.filter(|&i| {

compiler/rustc_error_codes/src/error_codes/E0416.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,6 @@ Or maybe did you mean to unify? Consider using a guard:
2323
# let (A, B, C) = (1, 2, 3);
2424
match (A, B, C) {
2525
(x, x2, see) if x == x2 => { /* A and B are equal, do one thing */ }
26-
(y, z, see) => { /* A and B unequal; do another thing */ }
26+
(y, z, see) => { /* A and B not equal; do another thing */ }
2727
}
2828
```

compiler/rustc_expand/src/mbe/transcribe.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,7 @@ impl LockstepIterSize {
367367
///
368368
/// Example: `$($($x $y)+*);+` -- we need to make sure that `x` and `y` repeat the same amount as
369369
/// each other at the given depth when the macro was invoked. If they don't it might mean they were
370-
/// declared at unequal depths or there was a compile bug. For example, if we have 3 repetitions of
370+
/// declared at depths which weren't equal or there was a compiler bug. For example, if we have 3 repetitions of
371371
/// the outer sequence and 4 repetitions of the inner sequence for `x`, we should have the same for
372372
/// `y`; otherwise, we can't transcribe them both at the given depth.
373373
fn lockstep_iter_size(

compiler/rustc_hir_analysis/src/coherence/builtin.rs

+7-4
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ use rustc_hir::def_id::{DefId, LocalDefId};
99
use rustc_hir::lang_items::LangItem;
1010
use rustc_hir::ItemKind;
1111
use rustc_infer::infer::outlives::env::OutlivesEnvironment;
12-
use rustc_infer::infer::TyCtxtInferExt;
1312
use rustc_infer::infer::{self, RegionResolutionError};
13+
use rustc_infer::infer::{DefineOpaqueTypes, TyCtxtInferExt};
1414
use rustc_middle::ty::adjustment::CoerceUnsizedInfo;
1515
use rustc_middle::ty::{self, suggest_constraining_type_params, Ty, TyCtxt, TypeVisitableExt};
1616
use rustc_trait_selection::traits::error_reporting::TypeErrCtxtExt;
@@ -235,7 +235,8 @@ fn visit_implementation_of_dispatch_from_dyn(tcx: TyCtxt<'_>, impl_did: LocalDef
235235
use rustc_type_ir::sty::TyKind::*;
236236
match (source.kind(), target.kind()) {
237237
(&Ref(r_a, _, mutbl_a), Ref(r_b, _, mutbl_b))
238-
if infcx.at(&cause, param_env).eq(r_a, *r_b).is_ok() && mutbl_a == *mutbl_b => {}
238+
if infcx.at(&cause, param_env).eq(DefineOpaqueTypes::No, r_a, *r_b).is_ok()
239+
&& mutbl_a == *mutbl_b => {}
239240
(&RawPtr(tm_a), &RawPtr(tm_b)) if tm_a.mutbl == tm_b.mutbl => (),
240241
(&Adt(def_a, substs_a), &Adt(def_b, substs_b))
241242
if def_a.is_struct() && def_b.is_struct() =>
@@ -278,7 +279,9 @@ fn visit_implementation_of_dispatch_from_dyn(tcx: TyCtxt<'_>, impl_did: LocalDef
278279
}
279280
}
280281

281-
if let Ok(ok) = infcx.at(&cause, param_env).eq(ty_a, ty_b) {
282+
if let Ok(ok) =
283+
infcx.at(&cause, param_env).eq(DefineOpaqueTypes::No, ty_a, ty_b)
284+
{
282285
if ok.obligations.is_empty() {
283286
create_err(
284287
"the trait `DispatchFromDyn` may only be implemented \
@@ -504,7 +507,7 @@ pub fn coerce_unsized_info<'tcx>(tcx: TyCtxt<'tcx>, impl_did: DefId) -> CoerceUn
504507
// we may have to evaluate constraint
505508
// expressions in the course of execution.)
506509
// See e.g., #41936.
507-
if let Ok(ok) = infcx.at(&cause, param_env).eq(a, b) {
510+
if let Ok(ok) = infcx.at(&cause, param_env).eq(DefineOpaqueTypes::No, a, b) {
508511
if ok.obligations.is_empty() {
509512
return None;
510513
}

compiler/rustc_hir_analysis/src/lib.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ use rustc_errors::ErrorGuaranteed;
102102
use rustc_errors::{DiagnosticMessage, SubdiagnosticMessage};
103103
use rustc_hir as hir;
104104
use rustc_hir::Node;
105-
use rustc_infer::infer::{InferOk, TyCtxtInferExt};
105+
use rustc_infer::infer::{DefineOpaqueTypes, InferOk, TyCtxtInferExt};
106106
use rustc_macros::fluent_messages;
107107
use rustc_middle::middle;
108108
use rustc_middle::ty::query::Providers;
@@ -165,7 +165,7 @@ fn require_same_types<'tcx>(
165165
) -> bool {
166166
let infcx = &tcx.infer_ctxt().build();
167167
let param_env = ty::ParamEnv::empty();
168-
let errors = match infcx.at(cause, param_env).eq(expected, actual) {
168+
let errors = match infcx.at(cause, param_env).eq(DefineOpaqueTypes::No, expected, actual) {
169169
Ok(InferOk { obligations, .. }) => traits::fully_solve_obligations(infcx, obligations),
170170
Err(err) => {
171171
infcx.err_ctxt().report_mismatched_types(cause, expected, actual, err).emit();

compiler/rustc_hir_typeck/src/closure.rs

+11-9
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use rustc_hir as hir;
88
use rustc_hir::lang_items::LangItem;
99
use rustc_hir_analysis::astconv::AstConv;
1010
use rustc_infer::infer::type_variable::{TypeVariableOrigin, TypeVariableOriginKind};
11-
use rustc_infer::infer::LateBoundRegionConversionTime;
11+
use rustc_infer::infer::{DefineOpaqueTypes, LateBoundRegionConversionTime};
1212
use rustc_infer::infer::{InferOk, InferResult};
1313
use rustc_macros::{TypeFoldable, TypeVisitable};
1414
use rustc_middle::ty::subst::InternalSubsts;
@@ -563,10 +563,11 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
563563
) {
564564
// Check that E' = S'.
565565
let cause = self.misc(hir_ty.span);
566-
let InferOk { value: (), obligations } = self
567-
.at(&cause, self.param_env)
568-
.define_opaque_types(true)
569-
.eq(*expected_ty, supplied_ty)?;
566+
let InferOk { value: (), obligations } = self.at(&cause, self.param_env).eq(
567+
DefineOpaqueTypes::Yes,
568+
*expected_ty,
569+
supplied_ty,
570+
)?;
570571
all_obligations.extend(obligations);
571572
}
572573

@@ -576,10 +577,11 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
576577
supplied_sig.output(),
577578
);
578579
let cause = &self.misc(decl.output.span());
579-
let InferOk { value: (), obligations } = self
580-
.at(cause, self.param_env)
581-
.define_opaque_types(true)
582-
.eq(expected_sigs.liberated_sig.output(), supplied_output_ty)?;
580+
let InferOk { value: (), obligations } = self.at(cause, self.param_env).eq(
581+
DefineOpaqueTypes::Yes,
582+
expected_sigs.liberated_sig.output(),
583+
supplied_output_ty,
584+
)?;
583585
all_obligations.extend(obligations);
584586

585587
let inputs = inputs.into_iter().map(|ty| self.resolve_vars_if_possible(ty));

compiler/rustc_hir_typeck/src/coercion.rs

+26-14
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ use rustc_hir::intravisit::{self, Visitor};
4545
use rustc_hir::Expr;
4646
use rustc_hir_analysis::astconv::AstConv;
4747
use rustc_infer::infer::type_variable::{TypeVariableOrigin, TypeVariableOriginKind};
48-
use rustc_infer::infer::{Coercion, InferOk, InferResult};
48+
use rustc_infer::infer::{Coercion, DefineOpaqueTypes, InferOk, InferResult};
4949
use rustc_infer::traits::Obligation;
5050
use rustc_middle::lint::in_external_macro;
5151
use rustc_middle::ty::adjustment::{
@@ -143,11 +143,11 @@ impl<'f, 'tcx> Coerce<'f, 'tcx> {
143143
fn unify(&self, a: Ty<'tcx>, b: Ty<'tcx>) -> InferResult<'tcx, Ty<'tcx>> {
144144
debug!("unify(a: {:?}, b: {:?}, use_lub: {})", a, b, self.use_lub);
145145
self.commit_if_ok(|_| {
146-
let at = self.at(&self.cause, self.fcx.param_env).define_opaque_types(true);
146+
let at = self.at(&self.cause, self.fcx.param_env);
147147
if self.use_lub {
148-
at.lub(b, a)
148+
at.lub(DefineOpaqueTypes::Yes, b, a)
149149
} else {
150-
at.sup(b, a)
150+
at.sup(DefineOpaqueTypes::Yes, b, a)
151151
.map(|InferOk { value: (), obligations }| InferOk { value: a, obligations })
152152
}
153153
})
@@ -175,7 +175,7 @@ impl<'f, 'tcx> Coerce<'f, 'tcx> {
175175
// so this will have the side-effect of making sure we have no ambiguities
176176
// due to `[type error]` and `_` not coercing together.
177177
let _ = self.commit_if_ok(|_| {
178-
self.at(&self.cause, self.param_env).define_opaque_types(true).eq(a, b)
178+
self.at(&self.cause, self.param_env).eq(DefineOpaqueTypes::Yes, a, b)
179179
});
180180
return success(vec![], self.fcx.tcx.ty_error(guar), vec![]);
181181
}
@@ -1101,9 +1101,13 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
11011101
(ty::FnDef(..), ty::FnDef(..)) => {
11021102
// Don't reify if the function types have a LUB, i.e., they
11031103
// are the same function and their parameters have a LUB.
1104-
match self
1105-
.commit_if_ok(|_| self.at(cause, self.param_env).lub(prev_ty, new_ty))
1106-
{
1104+
match self.commit_if_ok(|_| {
1105+
self.at(cause, self.param_env).lub(
1106+
DefineOpaqueTypes::No,
1107+
prev_ty,
1108+
new_ty,
1109+
)
1110+
}) {
11071111
// We have a LUB of prev_ty and new_ty, just return it.
11081112
Ok(ok) => return Ok(self.register_infer_ok_obligations(ok)),
11091113
Err(_) => {
@@ -1153,7 +1157,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
11531157
let sig = self
11541158
.at(cause, self.param_env)
11551159
.trace(prev_ty, new_ty)
1156-
.lub(a_sig, b_sig)
1160+
.lub(DefineOpaqueTypes::No, a_sig, b_sig)
11571161
.map(|ok| self.register_infer_ok_obligations(ok))?;
11581162

11591163
// Reify both sides and return the reified fn pointer type.
@@ -1237,7 +1241,9 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
12371241
);
12381242

12391243
return self
1240-
.commit_if_ok(|_| self.at(cause, self.param_env).lub(prev_ty, new_ty))
1244+
.commit_if_ok(|_| {
1245+
self.at(cause, self.param_env).lub(DefineOpaqueTypes::No, prev_ty, new_ty)
1246+
})
12411247
.map(|ok| self.register_infer_ok_obligations(ok));
12421248
}
12431249
}
@@ -1248,8 +1254,10 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
12481254
if let Some(e) = first_error {
12491255
Err(e)
12501256
} else {
1251-
self.commit_if_ok(|_| self.at(cause, self.param_env).lub(prev_ty, new_ty))
1252-
.map(|ok| self.register_infer_ok_obligations(ok))
1257+
self.commit_if_ok(|_| {
1258+
self.at(cause, self.param_env).lub(DefineOpaqueTypes::No, prev_ty, new_ty)
1259+
})
1260+
.map(|ok| self.register_infer_ok_obligations(ok))
12531261
}
12541262
}
12551263
Ok(ok) => {
@@ -1487,8 +1495,12 @@ impl<'tcx, 'exprs, E: AsCoercionSite> CoerceMany<'tcx, 'exprs, E> {
14871495
assert!(expression_ty.is_unit(), "if let hack without unit type");
14881496
fcx.at(cause, fcx.param_env)
14891497
// needed for tests/ui/type-alias-impl-trait/issue-65679-inst-opaque-ty-from-val-twice.rs
1490-
.define_opaque_types(true)
1491-
.eq_exp(label_expression_as_expected, expression_ty, self.merged_ty())
1498+
.eq_exp(
1499+
DefineOpaqueTypes::Yes,
1500+
label_expression_as_expected,
1501+
expression_ty,
1502+
self.merged_ty(),
1503+
)
14921504
.map(|infer_ok| {
14931505
fcx.register_infer_ok_obligations(infer_ok);
14941506
expression_ty

compiler/rustc_hir_typeck/src/demand.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use rustc_hir::def::CtorKind;
88
use rustc_hir::intravisit::Visitor;
99
use rustc_hir::lang_items::LangItem;
1010
use rustc_hir::{is_range_literal, Node};
11-
use rustc_infer::infer::InferOk;
11+
use rustc_infer::infer::{DefineOpaqueTypes, InferOk};
1212
use rustc_middle::lint::in_external_macro;
1313
use rustc_middle::middle::stability::EvalResult;
1414
use rustc_middle::ty::adjustment::AllowTwoPhase;
@@ -113,7 +113,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
113113
expected: Ty<'tcx>,
114114
actual: Ty<'tcx>,
115115
) -> Option<DiagnosticBuilder<'tcx, ErrorGuaranteed>> {
116-
match self.at(cause, self.param_env).define_opaque_types(true).sup(expected, actual) {
116+
match self.at(cause, self.param_env).sup(DefineOpaqueTypes::Yes, expected, actual) {
117117
Ok(InferOk { obligations, value: () }) => {
118118
self.register_predicates(obligations);
119119
None
@@ -143,7 +143,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
143143
expected: Ty<'tcx>,
144144
actual: Ty<'tcx>,
145145
) -> Option<DiagnosticBuilder<'tcx, ErrorGuaranteed>> {
146-
match self.at(cause, self.param_env).define_opaque_types(true).eq(expected, actual) {
146+
match self.at(cause, self.param_env).eq(DefineOpaqueTypes::Yes, expected, actual) {
147147
Ok(InferOk { obligations, value: () }) => {
148148
self.register_predicates(obligations);
149149
None

compiler/rustc_hir_typeck/src/expr.rs

+6-1
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ use rustc_hir_analysis::astconv::AstConv as _;
3636
use rustc_hir_analysis::check::ty_kind_suggestion;
3737
use rustc_infer::infer;
3838
use rustc_infer::infer::type_variable::{TypeVariableOrigin, TypeVariableOriginKind};
39+
use rustc_infer::infer::DefineOpaqueTypes;
3940
use rustc_infer::infer::InferOk;
4041
use rustc_infer::traits::ObligationCause;
4142
use rustc_middle::middle::stability;
@@ -1683,7 +1684,11 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
16831684
if let Some(_) = remaining_fields.remove(&ident) {
16841685
let target_ty = self.field_ty(base_expr.span, f, substs);
16851686
let cause = self.misc(base_expr.span);
1686-
match self.at(&cause, self.param_env).sup(target_ty, fru_ty) {
1687+
match self.at(&cause, self.param_env).sup(
1688+
DefineOpaqueTypes::No,
1689+
target_ty,
1690+
fru_ty,
1691+
) {
16871692
Ok(InferOk { obligations, value: () }) => {
16881693
self.register_predicates(obligations)
16891694
}

compiler/rustc_hir_typeck/src/fn_ctxt/_impl.rs

+7-3
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ use rustc_hir_analysis::astconv::{
1919
};
2020
use rustc_infer::infer::canonical::{Canonical, OriginalQueryValues, QueryResponse};
2121
use rustc_infer::infer::error_reporting::TypeAnnotationNeeded::E0282;
22-
use rustc_infer::infer::InferResult;
22+
use rustc_infer::infer::{DefineOpaqueTypes, InferResult};
2323
use rustc_middle::ty::adjustment::{Adjust, Adjustment, AutoBorrow, AutoBorrowMutability};
2424
use rustc_middle::ty::error::TypeError;
2525
use rustc_middle::ty::fold::TypeFoldable;
@@ -558,7 +558,7 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
558558
let span = self.tcx.hir().body(body_id).value.span;
559559
let ok = self
560560
.at(&self.misc(span), self.param_env)
561-
.eq(interior, witness)
561+
.eq(DefineOpaqueTypes::No, interior, witness)
562562
.expect("Failed to unify generator interior type");
563563
let mut obligations = ok.obligations;
564564

@@ -1341,7 +1341,11 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
13411341
// This also occurs for an enum variant on a type alias.
13421342
let impl_ty = self.normalize(span, tcx.type_of(impl_def_id).subst(tcx, substs));
13431343
let self_ty = self.normalize(span, self_ty);
1344-
match self.at(&self.misc(span), self.param_env).eq(impl_ty, self_ty) {
1344+
match self.at(&self.misc(span), self.param_env).eq(
1345+
DefineOpaqueTypes::No,
1346+
impl_ty,
1347+
self_ty,
1348+
) {
13451349
Ok(ok) => self.register_infer_ok_obligations(ok),
13461350
Err(_) => {
13471351
self.tcx.sess.delay_span_bug(

compiler/rustc_hir_typeck/src/fn_ctxt/checks.rs

+9-5
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ use rustc_hir_analysis::structured_errors::StructuredDiagnostic;
2424
use rustc_index::vec::IndexVec;
2525
use rustc_infer::infer::error_reporting::{FailureCode, ObligationCauseExt};
2626
use rustc_infer::infer::type_variable::{TypeVariableOrigin, TypeVariableOriginKind};
27-
use rustc_infer::infer::InferOk;
2827
use rustc_infer::infer::TypeTrace;
28+
use rustc_infer::infer::{DefineOpaqueTypes, InferOk};
2929
use rustc_middle::ty::adjustment::AllowTwoPhase;
3030
use rustc_middle::ty::visit::TypeVisitableExt;
3131
use rustc_middle::ty::{self, IsSuggestable, Ty};
@@ -301,9 +301,11 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
301301

302302
// 3. Check if the formal type is a supertype of the checked one
303303
// and register any such obligations for future type checks
304-
let supertype_error = self
305-
.at(&self.misc(provided_arg.span), self.param_env)
306-
.sup(formal_input_ty, coerced_ty);
304+
let supertype_error = self.at(&self.misc(provided_arg.span), self.param_env).sup(
305+
DefineOpaqueTypes::No,
306+
formal_input_ty,
307+
coerced_ty,
308+
);
307309
let subtyping_error = match supertype_error {
308310
Ok(InferOk { obligations, value: () }) => {
309311
self.register_predicates(obligations);
@@ -585,7 +587,9 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
585587

586588
// Using probe here, since we don't want this subtyping to affect inference.
587589
let subtyping_error = self.probe(|_| {
588-
self.at(&self.misc(arg_span), self.param_env).sup(formal_input_ty, coerced_ty).err()
590+
self.at(&self.misc(arg_span), self.param_env)
591+
.sup(DefineOpaqueTypes::No, formal_input_ty, coerced_ty)
592+
.err()
589593
});
590594

591595
// Same as above: if either the coerce type or the checked type is an error type,

0 commit comments

Comments
 (0)