diff --git a/src/glue/enum.pm b/src/glue/enum.pm index 6784857454d..419da117784 100644 --- a/src/glue/enum.pm +++ b/src/glue/enum.pm @@ -4,27 +4,11 @@ our sub SETUP_NAMED_ENUM($name, $values) { # For now, just install EnumMap under the main name. my @full_ns = Perl6::Grammar::parse_name($name); my ($shortname, @base_ns) = @full_ns; - my $enumeration-object = (class { - method WHAT { $enumeration-object } - method enums { $values } - method Str { $name } - }).new; - pir::set_hll_global__vPSP(@base_ns, $shortname, $enumeration-object); - + pir::set_hll_global__vPSP(@base_ns, $shortname, $values); + for $values.kv -> $key, $value { - my $enum-object = $value but role { - method WHAT { $enumeration-object } - method perl { $name ~ '::' ~ $key } - method Str { $name ~ '::' ~ $key } - method Stringy { $key } - method key { $key } - method value { $value } - method pair { $key => $value } - method kv { $key, $value } - method defined { True } - }; - pir::set_hll_global__vPSP(@full_ns, $key, $enum-object); - pir::set_hll_global__vPSP(@base_ns, $key, $enum-object); + pir::set_hll_global__vPSP(@full_ns, $key, $value); + pir::set_hll_global__vPSP(@base_ns, $key, $value); } }