gccrs: Fix const checking of enum discriminants

gcc/rust/ChangeLog:

	* checks/errors/rust-const-checker.cc
	(ConstChecker::visit): Visit the enum items of enums.
	* resolve/rust-ast-resolve-item.cc
	(ResolveItem::visit): Resolve enum discriminants during nr1.0.

gcc/testsuite/ChangeLog:

	* rust/compile/enum_discriminant2.rs: New test.

Signed-off-by: Owen Avery <powerboat9.gamer@gmail.com>
This commit is contained in:
Owen Avery 2025-04-05 17:20:44 -04:00 committed by Arthur Cohen
parent 5074a85e03
commit 85a57bf470
3 changed files with 14 additions and 0 deletions

View file

@ -646,6 +646,9 @@ ConstChecker::visit (Enum &enum_item)
{
check_default_const_generics (enum_item.get_generic_params (),
ConstGenericCtx::Enum);
for (auto &item : enum_item.get_variants ())
item->accept_vis (*this);
}
void

View file

@ -356,6 +356,8 @@ ResolveItem::visit (AST::EnumItemDiscriminant &item)
auto cpath = canonical_prefix.append (decl);
mappings.insert_canonical_path (item.get_node_id (), cpath);
ResolveExpr::go (item.get_expr (), path, cpath);
}
void

View file

@ -0,0 +1,9 @@
fn test() -> isize {
1
}
enum Foo {
Bar = test() // { dg-error "only functions marked as .const." }
}
fn main() {}