This is an automated email from the ASF dual-hosted git repository.

joshtynjala pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git


The following commit(s) were added to refs/heads/develop by this push:
     new bc89bba  MXMLDataBindingParser: fixed issue where data binding 
expressions containing strings that start/end with quotes would incorrectly 
strip out the quotes (closes #49)
bc89bba is described below

commit bc89bba8061e5f11bb7a7b46c35f232a40e6ec21
Author: Josh Tynjala <[email protected]>
AuthorDate: Tue Nov 26 14:49:20 2019 -0800

    MXMLDataBindingParser: fixed issue where data binding expressions 
containing strings that start/end with quotes would incorrectly strip out the 
quotes (closes #49)
---
 .../internal/codegen/mxml/royale/MXMLRoyaleEmitter.java     |  9 +--------
 .../compiler/internal/tree/mxml/MXMLDataBindingParser.java  | 13 +++++++++++++
 2 files changed, 14 insertions(+), 8 deletions(-)

diff --git 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java
 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java
index baa165a..c97c15f 100644
--- 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java
+++ 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/mxml/royale/MXMLRoyaleEmitter.java
@@ -1536,14 +1536,7 @@ public class MXMLRoyaleEmitter extends MXMLEmitter 
implements
                 for (int i = 0; i < n; i++)
                 {
                        IExpressionNode getterNode = getterNodes.get(i);
-                       if (getterNode.getNodeID() == ASTNodeID.LiteralStringID)
-                       {
-                               
sb.append(ASEmitterTokens.DOUBLE_QUOTE.getToken());
-                               sb.append(asEmitter.stringifyNode(getterNode));
-                               
sb.append(ASEmitterTokens.DOUBLE_QUOTE.getToken());
-                       }
-                       else
-                               sb.append(asEmitter.stringifyNode(getterNode));
+                    sb.append(asEmitter.stringifyNode(getterNode));
                     if (i < n - 1)
                        sb.append(ASEmitterTokens.SPACE.getToken() + 
ASEmitterTokens.PLUS.getToken() + ASEmitterTokens.SPACE.getToken());
                 }
diff --git 
a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/mxml/MXMLDataBindingParser.java
 
b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/mxml/MXMLDataBindingParser.java
index 8a6e45a..5b3e8dc 100644
--- 
a/compiler/src/main/java/org/apache/royale/compiler/internal/tree/mxml/MXMLDataBindingParser.java
+++ 
b/compiler/src/main/java/org/apache/royale/compiler/internal/tree/mxml/MXMLDataBindingParser.java
@@ -340,6 +340,19 @@ class MXMLDataBindingParser
         ISourceFragment[] fragments = fragmentList.toArray(new 
ISourceFragment[0]);
         String text = SourceFragmentsReader.concatLogicalText(fragments);
 
+        // LiteralNode automatically strips out quote characters at the
+        // beginning and end of the string.
+        // with that in mind, if the original text starts or ends with a quote,
+        // that will get stripped if we don't wrap it manually.
+        // apache/royale-compiler#49
+        if(text.indexOf("\"") != -1)
+        {
+            text = "'" + text + "'";
+        }
+        else
+        {
+            text = "\"" + text + "\"";
+        }
         LiteralNode stringLiteralNode = new LiteralNode(LiteralType.STRING, 
text);
         stringLiteralNode.setParent(parent);
 

Reply via email to