You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by ca...@apache.org on 2021/01/03 11:19:47 UTC

[royale-compiler] branch develop updated: Fix quoting when getProperty() is added for indexed array syntax ([]) on Proxy using an already-quoted value.

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 <es...@bradmark.com>
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;
 	        	}