From 56ae699a27eca52cc0bb14cbc9944b62136be52b Mon Sep 17 00:00:00 2001 From: Julien Lepiller Date: Sun, 20 Sep 2020 21:07:29 +0200 Subject: [PATCH] Separate addPropertyAliases in two methods The quantity of data used to generate addPropertyAliases creates a big method, that is too big for java and results in "error: code too large". This is most likely due to added data between the expected version of icu and the actual version of icu in Guix. --- .../org/antlr/v4/tool/templates/unicodedata.st | 15 ++++++++++++--- .../unicode/UnicodeDataTemplateController.java | 18 ++++++++++-------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/tool/resources/org/antlr/v4/tool/templates/unicodedata.st b/tool/resources/org/antlr/v4/tool/templates/unicodedata.st index f5052b7..125d15b 100644 --- a/tool/resources/org/antlr/v4/tool/templates/unicodedata.st +++ b/tool/resources/org/antlr/v4/tool/templates/unicodedata.st @@ -1,4 +1,4 @@ -unicodedata(propertyCodePointRanges, propertyAliases) ::= << +unicodedata(propertyCodePointRanges, propertyAliasesA, propertyAliasesB) ::= << package org.antlr.v4.unicode; import java.util.Arrays; @@ -17,7 +17,7 @@ public enum UnicodeData { ; private static final Map\ propertyCodePointRanges = new HashMap\(); - private static final Map\ propertyAliases = new HashMap\(); + private static final Map\ propertyAliases = new HashMap\( + ); // Work around Java 64k bytecode method limit by splitting up static // initialization into one method per Unicode property @@ -33,8 +33,17 @@ static private void addProperty() { \}}; separator="\n\n"> // Property aliases + static private void addPropertyAliasesA() { + ".toLowerCase(Locale.US), "".toLowerCase(Locale.US)); }; separator="\n"> + } + + static private void addPropertyAliasesB() { + ".toLowerCase(Locale.US), "".toLowerCase(Locale.US)); }; separator="\n"> + } + static private void addPropertyAliases() { - ".toLowerCase(Locale.US), "".toLowerCase(Locale.US)); }; separator="\n"> + addPropertyAliasesA(); + addPropertyAliasesB(); } // Put it all together diff --git a/tool/src/org/antlr/v4/unicode/UnicodeDataTemplateController.java b/tool/src/org/antlr/v4/unicode/UnicodeDataTemplateController.java index 570190c..692cee0 100644 --- a/tool/src/org/antlr/v4/unicode/UnicodeDataTemplateController.java +++ b/tool/src/org/antlr/v4/unicode/UnicodeDataTemplateController.java @@ -74,17 +74,19 @@ public abstract class UnicodeDataTemplateController { addTR35ExtendedPictographicPropertyCodesToCodePointRanges(propertyCodePointRanges); addEmojiPresentationPropertyCodesToCodePointRanges(propertyCodePointRanges); - Map propertyAliases = new LinkedHashMap(); - addUnicodeCategoryCodesToNames(propertyAliases); - addUnicodeBinaryPropertyCodesToNames(propertyAliases); - addUnicodeScriptCodesToNames(propertyAliases); - addUnicodeBlocksToNames(propertyAliases); - addUnicodeIntPropertyCodesToNames(propertyAliases); - propertyAliases.put("EP", "Extended_Pictographic"); + Map propertyAliasesA = new LinkedHashMap(); + Map propertyAliasesB = new LinkedHashMap(); + addUnicodeCategoryCodesToNames(propertyAliasesA); + addUnicodeBinaryPropertyCodesToNames(propertyAliasesA); + addUnicodeScriptCodesToNames(propertyAliasesA); + addUnicodeBlocksToNames(propertyAliasesB); + addUnicodeIntPropertyCodesToNames(propertyAliasesB); + propertyAliasesB.put("EP", "Extended_Pictographic"); Map properties = new LinkedHashMap(); properties.put("propertyCodePointRanges", propertyCodePointRanges); - properties.put("propertyAliases", propertyAliases); + properties.put("propertyAliasesA", propertyAliasesA); + properties.put("propertyAliasesB", propertyAliasesB); return properties; } -- 2.28.0 inputs. This commit defines a ‘search-input-file’ procedure. It functions like 'which', but instead of searching in $PATH, it searches in the 'inputs' of the build phase, which must be passed to ‘search-input-file’ as an argument. Also, the file name must include "bin/" or "sbin/" as appropriate. * guix/build/utils.scm (search-input-file): New procedure. * tests/build-utils.scm ("search-input-file: exception if not found") ("search-input-file: can find if existent"): Test it. * doc/guix.texi (File Search): Document it. Partially-Fixes: <https://issues.guix.gnu.org/47869> Co-Authored-By: Ludovic Courtès <ludo@gnu.org> Signed-off-by: Ludovic Courtès <ludo@gnu.org> Maxime Devos 2021-01-08utils: Allow text substitution even in the presence of NUL characters....Fixes <https://issues.guix.gnu.org/30116>. Before this change, the presence of a NUL character on a line meant that the (glibc) regexp engine used by Guile would either 1. stop scanning the string or 2. crash with the error "string contains #\\nul character", depending on the locale used. This change works around this limitation by first replacing the NUL character by an unused Unicode code point, doing the substitution, then reverting the replacement. * guix/build/utils.scm (unused-private-use-code-point) (replace-char): New procedures. (substitute): Make use of the above procedures to work around the NUL character regexp engine limitation. * tests/build-utils.scm: Add tests. Co-authored-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Mark H Weaver 2020-11-16Properly deal with build directories containing '~'....Fixes <https://bugs.gnu.org/44626>. Reported by Vagrant Cascadian <vagrant@debian.org>. * tests/build-utils.scm ("wrap-script, simple case"): Pass SCRIPT-CONTENTS to 'display' rather than 'format'. * gnu/services/base.scm (file-system->shepherd-service-name) [valid-characters, mount-point]: New variables. Filter out invalid store file name characters from the mount point of FILE-SYSTEM. Ludovic Courtès