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 18:51:51 UTC

[groovy] 07/07: tweak printing binary expression

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

sunlan pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit 922f3475b74b9c757a42ed224eed6d1b964bbde3
Author: Daniel Sun <su...@apache.org>
AuthorDate: Sun Jul 25 02:36:31 2021 +0800

    tweak printing binary expression
---
 .../src/main/groovy/groovy/console/ui/AstNodeToScriptAdapter.groovy | 6 ++++--
 .../test/groovy/groovy/console/ui/AstNodeToScriptAdapterTest.groovy | 6 ++++++
 2 files changed, 10 insertions(+), 2 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 e6fad0f..e9c4ee5 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
@@ -727,8 +727,10 @@ class AstNodeToScriptVisitor implements CompilationUnit.IPrimaryClassNodeOperati
 
     @Override
     void visitBinaryExpression(BinaryExpression expression) {
-        boolean isSubscriptOp = expression?.operation?.text == '['
-        if (isSubscriptOp && expression?.leftExpression instanceof VariableExpression) {
+        String opText = expression?.operation?.text
+        boolean isInstanceofOp = opText?.endsWith('instanceof')
+        boolean isSubscriptOp = opText == '['
+        if ((isSubscriptOp || isInstanceofOp) && expression?.leftExpression instanceof VariableExpression) {
             visitVariableExpression((VariableExpression) expression?.leftExpression, false)
         } else {
             expression?.leftExpression?.visit this
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 6abf69b..199fbf7 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
@@ -1011,4 +1011,10 @@ final class AstNodeToScriptAdapterTest extends GroovyTestCase {
         assert result =~ /(?s)oi:.*?\{.*?v \+= 2.*?\}/
     }
 
+    void testVisitIfElse() {
+        String script = '''String a = 'foo'
+                            if (a instanceof String) {}'''
+        String result = compileToScript(script, CompilePhase.SEMANTIC_ANALYSIS)
+        assert result.contains('if (a instanceof java.lang.String) {')
+    }
 }