This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
mktables: Add constructor parameter
authorKarl Williamson <khw@cpan.org>
Tue, 5 Jan 2016 22:58:07 +0000 (15:58 -0700)
committerKarl Williamson <khw@cpan.org>
Fri, 8 Jan 2016 21:17:11 +0000 (14:17 -0700)
This new parameter will be used in the next commit, adds a special case
for handling tables that the perl interpreter relies on when compiling
a Unicode version earlier than the property is defined by Unicode.  This
will allow for tailoring the property to Perl's needs in the next commit

charclass_invlists.h
lib/unicore/mktables
regcharclass.h

index 453c0fa..c33a505 100644 (file)
@@ -99537,7 +99537,7 @@ static const UV XPosixXDigit_invlist[] = { /* for EBCDIC POSIX-BC */
  * 1a0687fb9c6c4567e853913549df0944fe40821279a3e9cdaa6ab8679bc286fd lib/unicore/extracted/DLineBreak.txt
  * 40bcfed3ca727c19e1331f6c33806231d5f7eeeabd2e6a9e06a3740c85d0c250 lib/unicore/extracted/DNumType.txt
  * a18d502bad39d527ac5586d7bc93e29f565859e3bcc24ada627eff606d6f5fed lib/unicore/extracted/DNumValues.txt
- * dc85c20e847c16da6e2ad5ec42fe0948952d09d858cce838648aff97215ceb73 lib/unicore/mktables
+ * 21f614a12bfde0478588228d46f1b594bf7e23c7d1f51492c70b13f7c9b8de09 lib/unicore/mktables
  * 462c9aaa608fb2014cd9649af1c5c009485c60b9c8b15b89401fdc10cf6161c6 lib/unicore/version
  * 996abda3c0fbc2bfd575092af09e3b9b0331e624eb2e969a268457f8fd31ecbb regen/charset_translations.pl
  * 8a097f8f726bb1619af2f27f149ab87e60a1602f790147e3a561358be16abd27 regen/mk_invlists.pl
index 88d341f..44f900b 100644 (file)
@@ -2284,6 +2284,11 @@ sub trace { return main::trace(@_); }
     # may not be the actual reality, but probably nobody cares anyway for
     # these obsolete characters.)
     #
+    # [3] if present must be the string 'ONLY_EARLY'.  Normally, when
+    # compiling Unicode versions that don't invoke the early handling, the
+    # name in [1] is added as an alias to the property name used for these.
+    # This parameter says to not do this.
+    #
     # Not all files can be handled in the above way, and so the code ref
     # alternative is available.  It can do whatever it needs to.  The other
     # array elements are optional in this case, and the code is free to use or
@@ -2404,6 +2409,11 @@ sub trace { return main::trace(@_); }
         my $progress;
         my $function_instead_of_file = 0;
 
+        if ($early{$addr}->@* > 3 && $early{$addr}[3] ne 'ONLY_EARLY') {
+            Carp::my_carp_bug("If present, element [3] in 'Early => [ ... ]'"
+                            . " must be the string 'ONLY_EARLY'");
+        }
+
         # If we are compiling a Unicode release earlier than the file became
         # available, the constructor may have supplied a substitute
         if ($first_released{$addr} gt $v_version && $early{$addr}->@*) {
@@ -2701,7 +2711,9 @@ END
                 # will work regardless.
                 if (! $early{$addr}[0] && $early{$addr}->@* > 2) {
                     my $early_property_name = $early{$addr}[2];
-                    if ($property{$addr} ne $early_property_name) {
+                    if (   $property{$addr} ne $early_property_name
+                        && $early{$addr}->@* < 5)
+                    {
                         main::property_ref($property{$addr})
                                             ->add_alias($early_property_name);
                     }
index ec0a264..7420800 100644 (file)
  * 1a0687fb9c6c4567e853913549df0944fe40821279a3e9cdaa6ab8679bc286fd lib/unicore/extracted/DLineBreak.txt
  * 40bcfed3ca727c19e1331f6c33806231d5f7eeeabd2e6a9e06a3740c85d0c250 lib/unicore/extracted/DNumType.txt
  * a18d502bad39d527ac5586d7bc93e29f565859e3bcc24ada627eff606d6f5fed lib/unicore/extracted/DNumValues.txt
- * dc85c20e847c16da6e2ad5ec42fe0948952d09d858cce838648aff97215ceb73 lib/unicore/mktables
+ * 21f614a12bfde0478588228d46f1b594bf7e23c7d1f51492c70b13f7c9b8de09 lib/unicore/mktables
  * 462c9aaa608fb2014cd9649af1c5c009485c60b9c8b15b89401fdc10cf6161c6 lib/unicore/version
  * 996abda3c0fbc2bfd575092af09e3b9b0331e624eb2e969a268457f8fd31ecbb regen/charset_translations.pl
  * d9c04ac46bdd81bb3e26519f2b8eb6242cb12337205add3f7cf092b0c58dccc4 regen/regcharclass.pl