even more regex cases

Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/920cc51f
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/920cc51f
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/920cc51f

Branch: refs/heads/develop
Commit: 920cc51f820aab029976bf87061bc64eb8543203
Parents: 24ab3ad
Author: Alex Harui <aha...@apache.org>
Authored: Sun Jul 16 08:36:19 2017 -0700
Committer: Alex Harui <aha...@apache.org>
Committed: Sun Jul 16 08:36:19 2017 -0700

----------------------------------------------------------------------
 .../internal/codegen/js/jx/LiteralEmitter.java     |  2 ++
 .../codegen/js/flexjs/TestFlexJSGlobalClasses.java | 17 +++++++++++++++++
 2 files changed, 19 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/920cc51f/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/LiteralEmitter.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/LiteralEmitter.java
 
b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/LiteralEmitter.java
index ca8292d..75f5aee 100644
--- 
a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/LiteralEmitter.java
+++ 
b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/LiteralEmitter.java
@@ -176,6 +176,7 @@ public class LiteralEmitter extends JSSubEmitter implements
         }
         else
         {
+            s = s.replaceAll("\\\\\\\\", "__ESCAPE__ESCAPE__PLACEHOLDER__");
             s = s.replaceAll("\\\\/", "__SLASH_PLACEHOLDER__");
             s = s.replaceAll("\\\\([^u])", "__ESCAPE_PLACEHOLDER__$1");
             s = s.replaceAll("\"", "__DOUBLE_QUOTE_PLACEHOLDER__");
@@ -189,6 +190,7 @@ public class LiteralEmitter extends JSSubEmitter implements
             s = s.replaceAll("__DOUBLE_QUOTE_PLACEHOLDER__", "\"");
             s = s.replaceAll("__ESCAPE_PLACEHOLDER__", "\\\\");
             s = s.replaceAll("__SLASH_PLACEHOLDER__", "\\\\/");
+            s = s.replaceAll("__ESCAPE__ESCAPE__PLACEHOLDER__", "\\\\\\\\");
             s = s.replaceAll("\\\\n", "\\\\u000a");
             s = s.replaceAll("\\\\r", "\\\\u000d");
             s = s.replaceAll("\\\\t", "\\\\u0009");            

http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/920cc51f/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalClasses.java
----------------------------------------------------------------------
diff --git 
a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalClasses.java
 
b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalClasses.java
index 1b3a0b1..263cc05 100644
--- 
a/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalClasses.java
+++ 
b/compiler-jx/src/test/java/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSGlobalClasses.java
@@ -1003,4 +1003,21 @@ public class TestFlexJSGlobalClasses extends 
TestGoogGlobalClasses
         assertOut("var /** @type {RegExp} */ a = 
/^(?:(?:https?|ftp):\\/\\/)?(?:[-\\w]+\\.)(?:[a-zA-Z\\.]{2,6})(?:[?\\/\\w\\.&=-]*)\\/?$/i");
     }
 
+    @Test
+    public void testRegExp_LiteralComplex11()
+    {
+        IVariableNode node = getVariable("var a:RegExp = /\\\\/g");
+        asBlockWalker.visitVariable(node);
+        assertOut("var /** @type {RegExp} */ a = /\\\\/g");
+    }
+    
+    @Test
+    public void testRegExp_LiteralComplex12()
+    {
+        IVariableNode node = getVariable("var a:RegExp = /\\\\\\\\/g");
+        asBlockWalker.visitVariable(node);
+        assertOut("var /** @type {RegExp} */ a = /\\\\\\\\/g");
+    }
+    
+
 }

Reply via email to