Rollup merge of #109105 - compiler-errors:late-ct-in-anon-ct, r=oli-obk
Don't ICE for late-bound consts across `AnonConstBoundary` Fixes #108194
This commit is contained in:
commit
4c6b680955
@ -1427,25 +1427,25 @@ impl<'a, 'tcx> BoundVarContext<'a, 'tcx> {
|
|||||||
if let ResolvedArg::LateBound(..) = def && crossed_anon_const {
|
if let ResolvedArg::LateBound(..) = def && crossed_anon_const {
|
||||||
let use_span = self.tcx.hir().span(hir_id);
|
let use_span = self.tcx.hir().span(hir_id);
|
||||||
let def_span = self.tcx.def_span(param_def_id);
|
let def_span = self.tcx.def_span(param_def_id);
|
||||||
match self.tcx.def_kind(param_def_id) {
|
let guar = match self.tcx.def_kind(param_def_id) {
|
||||||
DefKind::ConstParam => {
|
DefKind::ConstParam => {
|
||||||
self.tcx.sess.emit_err(errors::CannotCaptureLateBoundInAnonConst::Const {
|
self.tcx.sess.emit_err(errors::CannotCaptureLateBoundInAnonConst::Const {
|
||||||
use_span,
|
use_span,
|
||||||
def_span,
|
def_span,
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
DefKind::TyParam => {
|
DefKind::TyParam => {
|
||||||
self.tcx.sess.emit_err(errors::CannotCaptureLateBoundInAnonConst::Type {
|
self.tcx.sess.emit_err(errors::CannotCaptureLateBoundInAnonConst::Type {
|
||||||
use_span,
|
use_span,
|
||||||
def_span,
|
def_span,
|
||||||
});
|
})
|
||||||
}
|
}
|
||||||
_ => unreachable!(),
|
_ => unreachable!(),
|
||||||
}
|
};
|
||||||
return;
|
self.map.defs.insert(hir_id, ResolvedArg::Error(guar));
|
||||||
}
|
} else {
|
||||||
|
|
||||||
self.map.defs.insert(hir_id, def);
|
self.map.defs.insert(hir_id, def);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,11 @@
|
|||||||
|
#![feature(non_lifetime_binders)]
|
||||||
|
//~^ WARN the feature `non_lifetime_binders` is incomplete
|
||||||
|
|
||||||
|
fn b()
|
||||||
|
where
|
||||||
|
for<const C: usize> [(); C]: Copy,
|
||||||
|
//~^ ERROR cannot capture late-bound const parameter in a constant
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
@ -0,0 +1,19 @@
|
|||||||
|
warning: the feature `non_lifetime_binders` is incomplete and may not be safe to use and/or cause compiler crashes
|
||||||
|
--> $DIR/capture-late-ct-in-anon.rs:1:12
|
||||||
|
|
|
||||||
|
LL | #![feature(non_lifetime_binders)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: see issue #108185 <https://github.com/rust-lang/rust/issues/108185> for more information
|
||||||
|
= note: `#[warn(incomplete_features)]` on by default
|
||||||
|
|
||||||
|
error: cannot capture late-bound const parameter in a constant
|
||||||
|
--> $DIR/capture-late-ct-in-anon.rs:6:30
|
||||||
|
|
|
||||||
|
LL | for<const C: usize> [(); C]: Copy,
|
||||||
|
| -------------- ^
|
||||||
|
| |
|
||||||
|
| parameter defined here
|
||||||
|
|
||||||
|
error: aborting due to previous error; 1 warning emitted
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user