Skip to content

Commit 206d052

Browse files
committed
gccrs: Fix crash when resolving invalid enum item
Fixes #1617 gcc/rust/ChangeLog: * typecheck/rust-hir-type-check-item.cc (TypeCheckItem::visit): check valid gcc/testsuite/ChangeLog: * rust/compile/issue-4617.rs: New test. Signed-off-by: Philip Herron <herron.philip@googlemail.com>
1 parent 407b7e6 commit 206d052

2 files changed

Lines changed: 13 additions & 3 deletions

File tree

gcc/rust/typecheck/rust-hir-type-check-item.cc

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -421,9 +421,11 @@ TypeCheckItem::visit (HIR::Enum &enum_decl)
421421
{
422422
TyTy::VariantDef *field_type
423423
= TypeCheckEnumItem::Resolve (*variant, discriminant_value);
424-
425-
discriminant_value++;
426-
variants.push_back (field_type);
424+
if (field_type)
425+
{
426+
discriminant_value++;
427+
variants.push_back (field_type);
428+
}
427429
}
428430

429431
// Check for zero-variant enum compatibility
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
#![feature(no_core)]
2+
#![no_core]
3+
4+
struct Apple;
5+
6+
enum Delicious {
7+
ApplePie = Apple::PIE, // { dg-error "failed to resolve path segment using an impl Probe" }
8+
}

0 commit comments

Comments
 (0)