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:45 UTC

[groovy] 01/07: tweak printing try-catch-finally statement

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 db888a05376b699136455557a00d364cd0320364
Author: Daniel Sun <su...@apache.org>
AuthorDate: Sun Jul 25 00:43:10 2021 +0800

    tweak printing try-catch-finally statement
---
 .../groovy/groovy/console/ui/AstNodeToScriptAdapter.groovy | 14 ++++++++------
 .../groovy/console/ui/AstNodeToScriptAdapterTest.groovy    |  9 +++++++++
 2 files changed, 17 insertions(+), 6 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 d1c3330..00fbef8 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
@@ -992,13 +992,15 @@ class AstNodeToScriptVisitor implements CompilationUnit.IPrimaryClassNodeOperati
         statement?.catchStatements?.each { CatchStatement catchStatement ->
             visitCatchStatement(catchStatement)
         }
-        print 'finally { '
-        printLineBreak()
-        indented {
-            statement?.finallyStatement?.visit this
+        if (statement?.finallyStatement !instanceof EmptyStatement) {
+            print 'finally { '
+            printLineBreak()
+            indented {
+                statement?.finallyStatement?.visit this
+            }
+            print '} '
+            printLineBreak()
         }
-        print '} '
-        printLineBreak()
     }
 
     @Override
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 89b6354..00bbfa4 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
@@ -661,6 +661,15 @@ final class AstNodeToScriptAdapterTest extends GroovyTestCase {
         assert result.contains('catch (java.lang.Exception e) {')
         assert result.contains('catch (java.lang.RuntimeException e) {')
         assert result.contains('finally {')
+
+        script = '''\
+            try {
+                println 123
+            } catch (e) {
+                println 234
+            }'''
+        result = compileToScript(script, CompilePhase.SEMANTIC_ANALYSIS)
+        assert !result.contains('finally {')
     }
 
     void testSuperAndThisCalls() {