summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/feature.pm10
-rw-r--r--regen/feature.pl34
2 files changed, 16 insertions, 28 deletions
diff --git a/lib/feature.pm b/lib/feature.pm
index a3cfdbe37e..34727f0b2e 100644
--- a/lib/feature.pm
+++ b/lib/feature.pm
@@ -25,15 +25,15 @@ our %feature_bundle = (
"5.10" => [qw(array_base say state switch)],
"5.11" => [qw(array_base say state switch unicode_strings)],
"5.15" => [qw(current_sub evalbytes say state switch unicode_eval unicode_strings)],
- "5.9.5" => [qw(array_base say state switch)],
"default" => [qw(array_base)],
);
+$feature_bundle{"5.12"} = $feature_bundle{"5.11"};
+$feature_bundle{"5.13"} = $feature_bundle{"5.11"};
+$feature_bundle{"5.14"} = $feature_bundle{"5.11"};
+$feature_bundle{"5.16"} = $feature_bundle{"5.15"};
+$feature_bundle{"5.9.5"} = $feature_bundle{"5.10"};
-# Each of these is the same as the previous bundle
-for (12,13,14,16) {
- $feature_bundle{"5.$_"} = $feature_bundle{"5.".($_-1)}
-}
# This gets set (for now) in $^H as well as in %^H,
# for runtime speed of the uc/lc/ucfirst/lcfirst functions.
# See HINT_UNI_8_BIT in perl.h.
diff --git a/regen/feature.pl b/regen/feature.pl
index d4e23368a3..018ed0f7ef 100644
--- a/regen/feature.pl
+++ b/regen/feature.pl
@@ -98,31 +98,19 @@ for(sort { length $a <=> length $b } keys %default_feature) {
print $pm ");\n\n";
print $pm "our %feature_bundle = (\n";
-my $prevkey;
-my $prev;
-my @same;
-$width = length longest keys %feature_bundle;
-for( sort keys %feature_bundle ) {
- my $value = join(' ', sort @{$feature_bundle{$_}});
- if (/^5\.\d\d\z/ && $prevkey
- && substr($_,-2) - substr($prevkey,-2) == 1 && $value eq $prev) {
- push @same, $_;
- $prevkey = $_;
- next;
- }
- if(/^5\.\d\d\z/) {
- $prev = $value;
- $prevkey = $_;
- }
- print $pm qq' "$_"' . " "x($width-length) . qq' => [qw($value)],\n';
+$width = length longest values %UniqueBundles;
+for( sort { $UniqueBundles{$a} cmp $UniqueBundles{$b} }
+ keys %UniqueBundles ) {
+ my $bund = $UniqueBundles{$_};
+ print $pm qq' "$bund"' . " "x($width-length $bund)
+ . qq' => [qw($_)],\n';
}
print $pm ");\n\n";
-print $pm "
-# Each of these is the same as the previous bundle
-for (", join(',',map /\.(.*)/, @same), ') {
- $feature_bundle{"5.$_"} = $feature_bundle{"5.".($_-1)}
-}';
+for (sort keys %Aliases) {
+ print $pm
+ qq'\$feature_bundle{"$_"} = \$feature_bundle{"$Aliases{$_}"};\n';
+};
while (<DATA>) {
@@ -144,7 +132,7 @@ perlh: {
or die "Non-contiguous bits in $bits (binary for $hex):\n\n$_\n ";
$HintShift = length $1;
my $bits_needed =
- length sprintf "%b", scalar keys(%feature_bundle) - @same;
+ length sprintf "%b", scalar keys %UniqueBundles;
$bits =~ /1{$bits_needed}/
or die "Not enough bits (need $bits_needed)"
. " in $bits (binary for $hex):\n\n$_\n";