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() {