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

carlosrovira 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 2c4462f  Fix quoting when getProperty() is added for indexed array 
syntax ([]) on Proxy using an already-quoted value.
     new cefb26b  Merge pull request #172 from 
estanglerbm/proxy-getproperty-quoting
2c4462f is described below

commit 2c4462f04bc4cce78c951b4b5a2151b62074791b
Author: Edward Stangler <[email protected]>
AuthorDate: Sun Jan 3 00:14:48 2021 -0600

    Fix quoting when getProperty() is added for indexed array syntax ([]) on 
Proxy using an already-quoted value.
---
 .../internal/codegen/js/jx/MemberAccessEmitter.java  | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/MemberAccessEmitter.java
 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/MemberAccessEmitter.java
index 274cd4f..1a18c26 100644
--- 
a/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/MemberAccessEmitter.java
+++ 
b/compiler-jx/src/main/java/org/apache/royale/compiler/internal/codegen/js/jx/MemberAccessEmitter.java
@@ -265,21 +265,33 @@ public class MemberAccessEmitter extends JSSubEmitter 
implements
                        {
                                writeLeftSide(node, leftNode, rightNode);
                                if (child)
-                                       write(".getProperty('");
+                                       write(".getProperty(");
                                String s = fjs.stringifyNode(rightNode);
                                int dot = s.indexOf('.');
                                if (dot != -1)
                                {
                                        String name = s.substring(0, dot);
                                        String afterDot = s.substring(dot);
+                                       write("'");
                                        write(name);
-                                       write("')");
+                                       write("'");
+                                       write(")");
                                        write(afterDot);
                                }
                                else
                                {
-                                       write(s);
-                                       write("')");
+                                       if ((s.startsWith("'") && 
s.endsWith("'")) || (s.startsWith("\"") && s.endsWith("\"")))
+                                       {
+                                               // already quoted
+                                               write(s);
+                                       }
+                                       else
+                                       {
+                                               write("'");
+                                               write(s);
+                                               write("'");
+                                       }
+                                       write(")");
                                }
                                return;
                        }

Reply via email to