Closed
Description
This is a part of #47453.
Test co19/LanguageFeatures/Enhanced-Enum/semantics_A06_t02
fails with RuntimeError on the VM because CFE ignores type arguments of enum classes when they are used in types:
Expect.isTrue(E.values[0] is E<A>);
Expect.isFalse(E.values[0] is E<B>);
Kernel:
exp::Expect::isTrue(#C10.{core::List::[]}(0){(core::int) → sem::E<dynamic>} is{ForNonNullableByDefault} sem::E<dynamic>);
exp::Expect::isFalse(#C10.{core::List::[]}(0){(core::int) → sem::E<dynamic>} is{ForNonNullableByDefault} sem::E<dynamic>);
So type E<A>
was translated to E<dynamic>
.
Note that enum values look correct:
static const field core::List<sem::E<dynamic>> values = #C10;
static const field sem::E<sem::A> e1 = #C3;
static const field sem::E<sem::B> e2 = #C6;
static const field sem::E<sem::C> e3 = #C9;
#C1 = 0
#C2 = "e1"
#C3 = sem::E<sem::A> {index:#C1, _name:#C2}
#C4 = 1
#C5 = "e2"
#C6 = sem::E<sem::B> {index:#C4, _name:#C5}
#C7 = 2
#C8 = "e3"
#C9 = sem::E<sem::C> {index:#C7, _name:#C8}
#C10 = <sem::E<dynamic>>[#C3, #C6, #C9]
@chloestefantsova Could you please take a look?