Skip to content

Commit 01744cc

Browse files
authored
Merge pull request #39 from abayer/jenkins-46191
[FIXED JENKINS-46191] Do not cast empty declarations.
2 parents 80ec5dd + 11de62d commit 01744cc

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

src/main/java/org/kohsuke/groovy/sandbox/SandboxTransformer.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.codehaus.groovy.ast.expr.ClosureExpression;
2828
import org.codehaus.groovy.ast.expr.ConstantExpression;
2929
import org.codehaus.groovy.ast.expr.DeclarationExpression;
30+
import org.codehaus.groovy.ast.expr.EmptyExpression;
3031
import org.codehaus.groovy.ast.expr.Expression;
3132
import org.codehaus.groovy.ast.expr.ListExpression;
3233
import org.codehaus.groovy.ast.expr.MethodCallExpression;
@@ -716,7 +717,9 @@ public void visitExpressionStatement(ExpressionStatement es) {
716717
DeclarationExpression de = (DeclarationExpression) exp;
717718
Expression leftExpression = de.getLeftExpression();
718719
if (leftExpression instanceof VariableExpression) {
719-
if (mightBePositionalArgumentConstructor((VariableExpression) leftExpression)) {
720+
// Only cast and transform if the RHS is *not* an EmptyExpression, i.e., "String foo;" would not be cast/transformed.
721+
if (!(de.getRightExpression() instanceof EmptyExpression) &&
722+
mightBePositionalArgumentConstructor((VariableExpression) leftExpression)) {
720723
CastExpression ce = new CastExpression(leftExpression.getType(), de.getRightExpression());
721724
ce.setCoerce(true);
722725
es.setExpression(transform(new DeclarationExpression(leftExpression, de.getOperation(), ce)));

src/test/groovy/org/kohsuke/groovy/sandbox/TheTest.groovy

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -840,4 +840,15 @@ return cnt''')
840840
'''
841841
)
842842
}
843+
844+
@Issue("JENKINS-46191")
845+
void testEmptyDeclaration() {
846+
assertIntercept([""],
847+
"abc",
848+
'''
849+
String a
850+
a = "abc"
851+
return a
852+
''')
853+
}
843854
}

0 commit comments

Comments
 (0)