You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2021/07/24 17:20:37 UTC

[groovy] branch danielsun/tweak-print-try-catch-finally-statement updated: tweak printing binary expression

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

sunlan pushed a commit to branch danielsun/tweak-print-try-catch-finally-statement
in repository https://gitbox.apache.org/repos/asf/groovy.git


The following commit(s) were added to refs/heads/danielsun/tweak-print-try-catch-finally-statement by this push:
     new 59f9377  tweak printing binary expression
59f9377 is described below

commit 59f93779101202c17bcc80ecc2303900d33555d2
Author: Daniel Sun <su...@apache.org>
AuthorDate: Sun Jul 25 01:20:23 2021 +0800

    tweak printing binary expression
---
 .../groovy/console/ui/AstNodeToScriptAdapter.groovy      | 16 ++++++++++++----
 .../groovy/console/ui/AstNodeToScriptAdapterTest.groovy  |  2 +-
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/subprojects/groovy-console/src/main/groovy/groovy/console/ui/AstNodeToScriptAdapter.groovy b/subprojects/groovy-console/src/main/groovy/groovy/console/ui/AstNodeToScriptAdapter.groovy
index a2db572..bb18e79 100644
--- a/subprojects/groovy-console/src/main/groovy/groovy/console/ui/AstNodeToScriptAdapter.groovy
+++ b/subprojects/groovy-console/src/main/groovy/groovy/console/ui/AstNodeToScriptAdapter.groovy
@@ -726,12 +726,20 @@ class AstNodeToScriptVisitor implements CompilationUnit.IPrimaryClassNodeOperati
 
     @Override
     void visitBinaryExpression(BinaryExpression expression) {
-        expression?.leftExpression?.visit this
+        boolean isSubscriptOp = expression?.operation?.text == '['
+        if (isSubscriptOp && expression?.leftExpression instanceof VariableExpression) {
+            visitVariableExpression((VariableExpression) expression?.leftExpression, false)
+        } else {
+            expression?.leftExpression?.visit this
+        }
         if (!(expression.rightExpression instanceof EmptyExpression) || expression.operation.type != Types.ASSIGN) {
-            print " $expression.operation.text "
+            if (isSubscriptOp) {
+                print "["
+            } else {
+                print " $expression.operation.text "
+            }
             expression.rightExpression.visit this
-
-            if (expression?.operation?.text == '[') {
+            if (isSubscriptOp) {
                 print ']'
             }
         }
diff --git a/subprojects/groovy-console/src/test/groovy/groovy/console/ui/AstNodeToScriptAdapterTest.groovy b/subprojects/groovy-console/src/test/groovy/groovy/console/ui/AstNodeToScriptAdapterTest.groovy
index 6da1763..8784801 100644
--- a/subprojects/groovy-console/src/test/groovy/groovy/console/ui/AstNodeToScriptAdapterTest.groovy
+++ b/subprojects/groovy-console/src/test/groovy/groovy/console/ui/AstNodeToScriptAdapterTest.groovy
@@ -71,7 +71,7 @@ final class AstNodeToScriptAdapterTest extends GroovyTestCase {
             println "File $args[0] cannot be found." '''
         String result = compileToScript(script)
         assert result.contains('println("File $args[0] cannot be found.")')
-        assert result.contains('file = new java.io.File((( args [ 0]) as java.lang.String))')
+        assert result.contains('file = new java.io.File(((args[0]) as java.lang.String))')
     }
 
     void testMethods() {