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) {')
+ }
}