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

[groovy] branch master updated (dc020e0 -> 922f347)

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

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


    from dc020e0  Tweak printing switch statement
     new db888a0  tweak printing try-catch-finally statement
     new 4a4ce4f  tweak printing property expression
     new 88f9b2a  tweak printing binary expression
     new 5a34d13  tweak printing lambda expression
     new 145345e  tweak printing cast expression
     new ef8f3bd  tweak printing unary expression
     new 922f347  tweak printing binary expression

The 7 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../console/ui/AstNodeToScriptAdapter.groovy       | 93 +++++++++++++++-------
 .../console/ui/AstNodeToScriptAdapterTest.groovy   | 50 +++++++++---
 2 files changed, 106 insertions(+), 37 deletions(-)

[groovy] 03/07: tweak printing binary expression

Posted by su...@apache.org.
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 88f9b2af5681b9b9442a4378a0abe070b34f7f0f
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() {

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

Posted by su...@apache.org.
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() {

[groovy] 07/07: tweak printing binary expression

Posted by su...@apache.org.
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) {')
+    }
 }

[groovy] 04/07: tweak printing lambda expression

Posted by su...@apache.org.
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 5a34d13798d6840fb6684fc90fb6c55789469b88
Author: Daniel Sun <su...@apache.org>
AuthorDate: Sun Jul 25 01:27:17 2021 +0800

    tweak printing lambda expression
---
 .../src/main/groovy/groovy/console/ui/AstNodeToScriptAdapter.groovy     | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

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 bb18e79..1fffa0b 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
@@ -777,7 +777,7 @@ class AstNodeToScriptVisitor implements CompilationUnit.IPrimaryClassNodeOperati
 
     @Override
     void visitLambdaExpression(LambdaExpression expression) {
-        print '( '
+        print '('
         if (expression?.parameters) {
             visitParameters(expression?.parameters)
         }

[groovy] 02/07: tweak printing property expression

Posted by su...@apache.org.
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 4a4ce4f4e1fa8e8609bdfedac011a439c527ea07
Author: Daniel Sun <su...@apache.org>
AuthorDate: Sun Jul 25 01:03:32 2021 +0800

    tweak printing property expression
---
 .../groovy/groovy/console/ui/AstNodeToScriptAdapter.groovy |  9 +++++++--
 .../groovy/console/ui/AstNodeToScriptAdapterTest.groovy    | 14 +++++++-------
 2 files changed, 14 insertions(+), 9 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 00fbef8..a2db572 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
@@ -799,7 +799,12 @@ class AstNodeToScriptVisitor implements CompilationUnit.IPrimaryClassNodeOperati
 
     @Override
     void visitPropertyExpression(PropertyExpression expression) {
-        expression?.objectExpression?.visit this
+        if (expression?.objectExpression instanceof VariableExpression) {
+            visitVariableExpression((VariableExpression) expression?.objectExpression, false)
+        } else {
+            expression?.objectExpression?.visit this
+        }
+
         if (expression?.spreadSafe) {
             print '*'
         } else if (expression?.isSafe()) {
@@ -838,8 +843,8 @@ class AstNodeToScriptVisitor implements CompilationUnit.IPrimaryClassNodeOperati
         print expression.text
     }
 
+    @Override
     void visitVariableExpression(VariableExpression expression, boolean spacePad = true) {
-
         if (spacePad) {
             print ' ' + expression.name + ' '
         } else {
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 00bbfa4..6da1763 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
@@ -799,7 +799,7 @@ final class AstNodeToScriptAdapterTest extends GroovyTestCase {
         '''
         String result = compileToScript(script, CompilePhase.SEMANTIC_ANALYSIS)
         assert result.contains('java.lang.Object x = (([4, 5, 6]) as java.lang.String[])')
-        assert result.contains('[1, 2, 3] << new java.lang.Integer[ x .length]')
+        assert result.contains('[1, 2, 3] << new java.lang.Integer[x.length]')
     }
 
     void testSpreadDot() {
@@ -810,8 +810,8 @@ final class AstNodeToScriptAdapterTest extends GroovyTestCase {
         '''
         String result = compileToScript(script, CompilePhase.SEMANTIC_ANALYSIS)
         assert result.contains("java.lang.Object x = [['a': 11, 'b': 12], ['a': 21, 'b': 22]]")
-        assert result.contains('assert x .a == [11, 21] : null')
-        assert result.contains('assert x *.a == [11, 21] : null')
+        assert result.contains('assert x.a == [11, 21] : null')
+        assert result.contains('assert x*.a == [11, 21] : null')
     }
 
     void testSpreadNotationNullHandling() {
@@ -823,9 +823,9 @@ final class AstNodeToScriptAdapterTest extends GroovyTestCase {
 
         String result = compileToScript(script, CompilePhase.SEMANTIC_ANALYSIS)
         assert result.contains("java.lang.Object x = [['a': 11, 'b': 12], ['a': 21, 'b': 22], null]")
-        assert result.contains('assert x *.a == [11, 21, null] : null')
-        assert result.contains('assert x *.a == x.collect({ ')
-        assert result.contains('it ?.a')
+        assert result.contains('assert x*.a == [11, 21, null] : null')
+        assert result.contains('assert x*.a == x.collect({ ')
+        assert result.contains('it?.a')
         assert result.contains('}) : null')
     }
 
@@ -837,7 +837,7 @@ final class AstNodeToScriptAdapterTest extends GroovyTestCase {
         '''
         String result = compileToScript(script, CompilePhase.SEMANTIC_ANALYSIS)
         assert result.contains("java.lang.Object x = [['a': 21, 'b': 22], null, new MyClass()]")
-        assert result.contains("assert x *.a == [21, null, 'abc'] : null")
+        assert result.contains("assert x*.a == [21, null, 'abc'] : null")
     }
 
     void testSpreadNotationForMethodsOnLists() {

[groovy] 05/07: tweak printing cast expression

Posted by su...@apache.org.
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 145345e22ad399f5e12382b0398b7b90909aacd3
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() {

[groovy] 06/07: tweak printing unary expression

Posted by su...@apache.org.
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 ef8f3bd5e01494e9e080f0950b1281c6dcba6885
Author: Daniel Sun <su...@apache.org>
AuthorDate: Sun Jul 25 02:18:38 2021 +0800

    tweak printing unary expression
---
 .../console/ui/AstNodeToScriptAdapter.groovy       | 33 +++++++++++++++-------
 .../console/ui/AstNodeToScriptAdapterTest.groovy   | 17 ++++++++++-
 2 files changed, 39 insertions(+), 11 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 ef2f023..e6fad0f 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
@@ -19,6 +19,7 @@
 package groovy.console.ui
 
 import groovy.transform.AutoFinal
+import groovy.transform.CompileDynamic
 import groovy.transform.CompileStatic
 import org.apache.groovy.io.StringBuilderWriter
 import org.codehaus.groovy.ast.AnnotationNode
@@ -889,25 +890,33 @@ class AstNodeToScriptVisitor implements CompilationUnit.IPrimaryClassNodeOperati
         expression?.expression?.visit this
     }
 
+    @CompileDynamic
+    private void printUnaryExpression(String opText, Expression expression) {
+        print opText
+        if (expression?.expression instanceof VariableExpression) {
+            visitVariableExpression((VariableExpression) expression?.expression, false)
+        } else if (expression?.expression instanceof PropertyExpression)  {
+            expression?.expression?.visit this
+        } else {
+            print '('
+            expression?.expression?.visit this
+            print ')'
+        }
+    }
+
     @Override
     void visitNotExpression(NotExpression expression) {
-        print '!('
-        expression?.expression?.visit this
-        print ')'
+        printUnaryExpression('!', expression)
     }
 
     @Override
     void visitUnaryMinusExpression(UnaryMinusExpression expression) {
-        print '-('
-        expression?.expression?.visit this
-        print ')'
+        printUnaryExpression('-', expression)
     }
 
     @Override
     void visitUnaryPlusExpression(UnaryPlusExpression expression) {
-        print '+('
-        expression?.expression?.visit this
-        print ')'
+        printUnaryExpression('+', expression)
     }
 
     @Override
@@ -1061,7 +1070,11 @@ class AstNodeToScriptVisitor implements CompilationUnit.IPrimaryClassNodeOperati
 
     @Override
     void visitBooleanExpression(BooleanExpression expression) {
-        expression?.expression?.visit this
+        if (expression?.expression instanceof VariableExpression) {
+            visitVariableExpression((VariableExpression) expression?.expression, false)
+        } else {
+            expression?.expression?.visit this
+        }
     }
 
     @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 0e44a00..6abf69b 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
@@ -190,7 +190,22 @@ final class AstNodeToScriptAdapterTest extends GroovyTestCase {
                             def y = 2
                             (boolean) !(-x + (+y--)) '''
         String result = compileToScript(script, CompilePhase.SEMANTIC_ANALYSIS)
-        assert result.contains('((boolean) !(-( x ) + +(( y )--)))')
+        assert result.contains('((boolean) !(-x + +(( y )--)))')
+
+        script = '''boolean x = false
+                    !x'''
+        result = compileToScript(script, CompilePhase.SEMANTIC_ANALYSIS)
+        assert result.contains('!x')
+
+        script = '''int x = 0
+                    -x'''
+        result = compileToScript(script, CompilePhase.SEMANTIC_ANALYSIS)
+        assert result.contains('-x')
+
+        script = '''int x = 0
+                    +x'''
+        result = compileToScript(script, CompilePhase.SEMANTIC_ANALYSIS)
+        assert result.contains('+x')
     }
 
     void testArrayHandling() {