mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-16 17:03:35 +00:00
Don't ICE for late-bound consts across AnonConstBoundary
This commit is contained in:
parent
f1b1ed7e18
commit
8a53570008
@ -1427,25 +1427,25 @@ impl<'a, 'tcx> BoundVarContext<'a, 'tcx> {
|
||||
if let ResolvedArg::LateBound(..) = def && crossed_anon_const {
|
||||
let use_span = self.tcx.hir().span(hir_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 => {
|
||||
self.tcx.sess.emit_err(errors::CannotCaptureLateBoundInAnonConst::Const {
|
||||
use_span,
|
||||
def_span,
|
||||
});
|
||||
})
|
||||
}
|
||||
DefKind::TyParam => {
|
||||
self.tcx.sess.emit_err(errors::CannotCaptureLateBoundInAnonConst::Type {
|
||||
use_span,
|
||||
def_span,
|
||||
});
|
||||
})
|
||||
}
|
||||
_ => 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;
|
||||
}
|
||||
|
||||
|
@ -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…
Reference in New Issue
Block a user