Reintroduce name resolution check for trying to access locals from an inline const

This commit is contained in:
Oli Scherer 2024-05-29 08:28:44 +00:00
parent 7717a306b2
commit bcfefe1c7e
3 changed files with 22 additions and 0 deletions

View File

@ -4502,6 +4502,11 @@ fn resolve_expr(&mut self, expr: &'ast Expr, parent: Option<&'ast Expr>) {
self.visit_expr(elem);
self.resolve_anon_const(ct, AnonConstKind::ConstArg(IsRepeatExpr::Yes));
}
ExprKind::ConstBlock(ref expr) => {
self.resolve_anon_const_manual(false, AnonConstKind::InlineConst, |this| {
this.visit_expr(expr)
});
}
ExprKind::Index(ref elem, ref idx, _) => {
self.resolve_expr(elem, Some(expr));
self.visit_expr(idx);

View File

@ -0,0 +1,6 @@
const fn test_me<T>(a: usize) -> usize {
const { a }
//~^ ERROR: attempt to use a non-constant value in a constant
}
fn main() {}

View File

@ -0,0 +1,11 @@
error[E0435]: attempt to use a non-constant value in a constant
--> $DIR/referencing_local_variables.rs:2:13
|
LL | const fn test_me<T>(a: usize) -> usize {
| - this would need to be a `const`
LL | const { a }
| ^
error: aborting due to 1 previous error
For more information about this error, try `rustc --explain E0435`.