You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2017/09/08 18:57:01 UTC
groovy git commit: GROOVY-8312: Deprecate useless features of unicode
sequences
Repository: groovy
Updated Branches:
refs/heads/master 0e0e650c2 -> 7a2cdd26b
GROOVY-8312: Deprecate useless features of unicode sequences
Project: http://git-wip-us.apache.org/repos/asf/groovy/repo
Commit: http://git-wip-us.apache.org/repos/asf/groovy/commit/7a2cdd26
Tree: http://git-wip-us.apache.org/repos/asf/groovy/tree/7a2cdd26
Diff: http://git-wip-us.apache.org/repos/asf/groovy/diff/7a2cdd26
Branch: refs/heads/master
Commit: 7a2cdd26b7e960d580732dad4470dc2e5fcba9e1
Parents: 0e0e650
Author: sunlan <su...@apache.org>
Authored: Sat Sep 9 02:56:50 2017 +0800
Committer: sunlan <su...@apache.org>
Committed: Sat Sep 9 02:56:50 2017 +0800
----------------------------------------------------------------------
src/main/antlr/GroovyLexer.g4 | 8 +-------
src/tck/test/gls/ch03/s01/Unicode2.groovy | 2 ++
src/tck/test/gls/ch03/s03/UnicodeEscapes1.groovy | 2 ++
src/tck/test/gls/ch03/s03/UnicodeEscapes2.groovy | 4 ++++
.../org/apache/groovy/parser/antlr4/AstBuilder.java | 16 ++--------------
.../groovy/parser/antlr4/util/StringUtils.java | 2 +-
.../groovy/parser/antlr4/GroovyParserTest.groovy | 2 ++
7 files changed, 14 insertions(+), 22 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/groovy/blob/7a2cdd26/src/main/antlr/GroovyLexer.g4
----------------------------------------------------------------------
diff --git a/src/main/antlr/GroovyLexer.g4 b/src/main/antlr/GroovyLexer.g4
index 9e44ae3..05fb767 100644
--- a/src/main/antlr/GroovyLexer.g4
+++ b/src/main/antlr/GroovyLexer.g4
@@ -677,7 +677,7 @@ OctalEscape
// Groovy allows 1 or more u's after the backslash
fragment
UnicodeEscape
- : Backslash 'u'+ HexDigit HexDigit HexDigit HexDigit
+ : Backslash 'u' HexDigit HexDigit HexDigit HexDigit
;
fragment
@@ -842,16 +842,10 @@ ELVIS_ASSIGN : '?=';
// ยง3.8 Identifiers (must appear after all keywords in the grammar)
CapitalizedIdentifier
: [A-Z] JavaLetterOrDigit*
-
- // FIXME REMOVE THE FOLLOWING ALTERNATIVE. Groovy's identifier can be unicode escape(e.g. def \u4e00\u9fa5 = '123'), which will impact the performance and is pointless to support IMO
- | [A-Z] (JavaLetterOrDigit | UnicodeEscape)*
;
Identifier
: JavaLetter JavaLetterOrDigit*
-
- // FIXME REMOVE THE FOLLOWING ALTERNATIVE. Groovy's identifier can be unicode escape(e.g. def \u4e00\u9fa5 = '123'), which will impact the performance and is pointless to support IMO
- | (JavaLetter | UnicodeEscape) (JavaLetterOrDigit | UnicodeEscape)*
;
fragment
http://git-wip-us.apache.org/repos/asf/groovy/blob/7a2cdd26/src/tck/test/gls/ch03/s01/Unicode2.groovy
----------------------------------------------------------------------
diff --git a/src/tck/test/gls/ch03/s01/Unicode2.groovy b/src/tck/test/gls/ch03/s01/Unicode2.groovy
index 35fbf72..b845366 100644
--- a/src/tck/test/gls/ch03/s01/Unicode2.groovy
+++ b/src/tck/test/gls/ch03/s01/Unicode2.groovy
@@ -30,9 +30,11 @@ class Unicode2 extends GroovyTestCase {
assert 1 == s.codePointCount(0, s.length()) // number of Unicode code points
}
+ /*
void testIdentifiers() {
def foo\u0044 = 12
assert 20 == foo\u0044 + 8
}
+ */
}
http://git-wip-us.apache.org/repos/asf/groovy/blob/7a2cdd26/src/tck/test/gls/ch03/s03/UnicodeEscapes1.groovy
----------------------------------------------------------------------
diff --git a/src/tck/test/gls/ch03/s03/UnicodeEscapes1.groovy b/src/tck/test/gls/ch03/s03/UnicodeEscapes1.groovy
index 6411c34..3f23dfd 100644
--- a/src/tck/test/gls/ch03/s03/UnicodeEscapes1.groovy
+++ b/src/tck/test/gls/ch03/s03/UnicodeEscapes1.groovy
@@ -39,11 +39,13 @@ class UnicodeEscapes1 extends GroovyTestCase {
}
// There can be 1 or more u's after the backslash
+ /*
void testMultipleUs() {
assert "\uu0061" == "a"
assert "\uuu0061" == "a"
assert "\uuuuu0061" == "a"
}
+ */
void testOtherVariations() {
// Capital 'U' not allowed
http://git-wip-us.apache.org/repos/asf/groovy/blob/7a2cdd26/src/tck/test/gls/ch03/s03/UnicodeEscapes2.groovy
----------------------------------------------------------------------
diff --git a/src/tck/test/gls/ch03/s03/UnicodeEscapes2.groovy b/src/tck/test/gls/ch03/s03/UnicodeEscapes2.groovy
index 58eafbe..e78a3d7 100644
--- a/src/tck/test/gls/ch03/s03/UnicodeEscapes2.groovy
+++ b/src/tck/test/gls/ch03/s03/UnicodeEscapes2.groovy
@@ -29,6 +29,7 @@ class UnicodeEscapes2 extends GroovyTestCase {
// GLS: If an even number of backslashes precede the 'u', it is not
// an escape
+ /*
void testCountBackslash() {
def a = 1
assert \u0061 == 1 // char 61 is 'a'
@@ -42,10 +43,12 @@ class UnicodeEscapes2 extends GroovyTestCase {
assert "\\\u0061".length() == 2
}
+ */
// GLS: If an eligible \ is followed by u, or more than one u, and the last u
// is not followed by four hexadecimal digits, then a compile-time error
// occurs.
+ /*
void testFourHexDigits() {
// If five digits, only the first four count
def \u00610 = 2
@@ -57,6 +60,7 @@ class UnicodeEscapes2 extends GroovyTestCase {
// def /u61 = 2 //@fail:parse
// def /u061 = 2 //@fail:parse
}
+ */
void testInvalidHexDigits() {
// Subsequent lines won't work. The backslash has been replaced by a forward slash
http://git-wip-us.apache.org/repos/asf/groovy/blob/7a2cdd26/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
index ff7b5e9..521d7aa 100644
--- a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
+++ b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/AstBuilder.java
@@ -3795,24 +3795,12 @@ public class AstBuilder extends GroovyParserBaseVisitor<Object> implements Groov
@Override
public String visitClassName(ClassNameContext ctx) {
- String text = ctx.getText();
-
- if (!text.contains("\\")) {
- return text;
- }
-
- return StringUtils.replaceHexEscapes(text);
+ return ctx.getText();
}
@Override
public String visitIdentifier(IdentifierContext ctx) {
- String text = ctx.getText();
-
- if (!text.contains("\\")) {
- return text;
- }
-
- return StringUtils.replaceHexEscapes(text);
+ return ctx.getText();
}
http://git-wip-us.apache.org/repos/asf/groovy/blob/7a2cdd26/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/util/StringUtils.java
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/util/StringUtils.java b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/util/StringUtils.java
index b6e75aa..928f8ab 100644
--- a/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/util/StringUtils.java
+++ b/subprojects/parser-antlr4/src/main/java/org/apache/groovy/parser/antlr4/util/StringUtils.java
@@ -33,7 +33,7 @@ import java.util.regex.Pattern;
*/
public class StringUtils {
public static String replaceHexEscapes(String text) {
- Pattern p = Pattern.compile("(\\\\*)\\\\u+([0-9abcdefABCDEF]{4})");
+ Pattern p = Pattern.compile("(\\\\*)\\\\u([0-9abcdefABCDEF]{4})");
return StringGroovyMethods.replaceAll((CharSequence) text, p, new Closure<Void>(null, null) {
Object doCall(String _0, String _1, String _2) {
if (isLengthOdd(_1)) {
http://git-wip-us.apache.org/repos/asf/groovy/blob/7a2cdd26/subprojects/parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/GroovyParserTest.groovy
----------------------------------------------------------------------
diff --git a/subprojects/parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/GroovyParserTest.groovy b/subprojects/parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/GroovyParserTest.groovy
index 1241112..2d31097 100644
--- a/subprojects/parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/GroovyParserTest.groovy
+++ b/subprojects/parser-antlr4/src/test/groovy/org/apache/groovy/parser/antlr4/GroovyParserTest.groovy
@@ -334,9 +334,11 @@ class GroovyParserTest extends GroovyTestCase {
doRunAndTest('core/Command_06x.groovy')
}
+ /*
void "test groovy core - Unicode"() {
doTest('core/Unicode_01.groovy');
}
+ */
void "test groovy core - BreakingChanges"() {
doRunAndTest('core/BreakingChange_01x.groovy');