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"); + } + + }