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:42:38 UTC

[groovy] branch danielsun/tweak-print-try-catch-finally-statement updated: tweak printing cast 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 70090db  tweak printing cast expression
70090db is described below

commit 70090db9d4dc56d9e7218884f26a874be5f48ebb
Author: Daniel Sun <su...@apache.org>
AuthorDate: Sun Jul 25 01:42:16 2021 +0800

    tweak printing cast expression
---
 .../groovy/console/ui/AstNodeToScriptAdapter.groovy     | 17 +++++++++++++----
 .../groovy/console/ui/AstNodeToScriptAdapterTest.groovy |  6 +++---
 2 files changed, 16 insertions(+), 7 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 1fffa0b..ef2f023 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
@@ -913,11 +913,20 @@ class AstNodeToScriptVisitor implements CompilationUnit.IPrimaryClassNodeOperati
     @Override
     void visitCastExpression(CastExpression expression) {
         print '(('
-        expression?.expression?.visit this
-        print ') as '
-        visitType(expression?.type)
+        if (expression?.coerce) {
+            expression?.expression?.visit this
+            print ') as '
+            visitType(expression?.type)
+        } else {
+            visitType(expression?.type)
+            print ') '
+            if (expression?.expression instanceof VariableExpression) {
+                visitVariableExpression((VariableExpression) expression?.expression, false)
+            } else {
+                expression?.expression?.visit this
+            }
+        }
         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 8784801..0e44a00 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(((java.lang.String) args[0]))')
     }
 
     void testMethods() {
@@ -190,7 +190,7 @@ final class AstNodeToScriptAdapterTest extends GroovyTestCase {
                             def y = 2
                             (boolean) !(-x + (+y--)) '''
         String result = compileToScript(script, CompilePhase.SEMANTIC_ANALYSIS)
-        assert result.contains('((!(-( x ) + +(( y )--))) as boolean)')
+        assert result.contains('((boolean) !(-( x ) + +(( y )--)))')
     }
 
     void testArrayHandling() {
@@ -589,7 +589,7 @@ final class AstNodeToScriptAdapterTest extends GroovyTestCase {
         assert result.contains("_result = org.codehaus.groovy.util.HashCodeHelper.updateHash(_result, this.getColor())")
 
         // assert clones
-        assert result.contains("((org.codehaus.groovy.runtime.ReflectionMethodInvoker.invoke(when, 'clone', new java.lang.Object[][])) as java.util.Date)")
+        assert result.contains("((java.util.Date) org.codehaus.groovy.runtime.ReflectionMethodInvoker.invoke(when, 'clone', new java.lang.Object[][]))")
     }
 
     void testAnonymousInnerClass() {