You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@groovy.apache.org by "Dipanjan Bhowmik (Jira)" <ji...@apache.org> on 2021/06/30 16:50:00 UTC
[jira] [Created] (GROOVY-10159) 2.5.4: Compilation failure:
ClassCastException
Dipanjan Bhowmik created GROOVY-10159:
-----------------------------------------
Summary: 2.5.4: Compilation failure: ClassCastException
Key: GROOVY-10159
URL: https://issues.apache.org/jira/browse/GROOVY-10159
Project: Groovy
Issue Type: Bug
Components: ast builder
Affects Versions: 2.5.4
Environment: JDK: openjdk version "1.8.0_265"(Zulu 8.48.0.53-CA-macosx) (build 1.8.0_265-b11)
Reporter: Dipanjan Bhowmik
After upgrading 2.5.3 to 2.5.4, observing the following error in my project:
{{
General error during class generation: java.lang.Long cannot be cast to java.lang.String
java.lang.ClassCastException: java.lang.Long cannot be cast to java.lang.String
at org.apache.groovy.ast.tools.ExpressionUtils.transformBinaryConstantExpression(ExpressionUtils.java:86)
at org.apache.groovy.ast.tools.ExpressionUtils.transformInlineConstants(ExpressionUtils.java:248)
at org.codehaus.groovy.classgen.Verifier.addFieldInitialization(Verifier.java:1163)
at org.codehaus.groovy.classgen.Verifier.addInitialization(Verifier.java:1048)
at org.codehaus.groovy.classgen.Verifier.addInitialization(Verifier.java:999)
at org.codehaus.groovy.classgen.Verifier.visitClass(Verifier.java:250)
at org.codehaus.groovy.control.CompilationUnit$18.call(CompilationUnit.java:811)
at org.codehaus.groovy.control.CompilationUnit.applyToPrimaryClassNodes(CompilationUnit.java:1084)
at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:640)
at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:618)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:595)
at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:574)
...
}}
This can be solved with:
From:
(String) ((ConstantExpression) left).getValue()
To:
String.valueOf(((ConstantExpression) left).getValue())
Diff is as follows:
diff --git a/src/main/java/org/apache/groovy/ast/tools/ExpressionUtils.java b/src/main/java/org/apache/groovy/ast/tools/ExpressionUtils.java
index 4aa67a52cb..7057f14982 100644
--- a/src/main/java/org/apache/groovy/ast/tools/ExpressionUtils.java
+++ b/src/main/java/org/apache/groovy/ast/tools/ExpressionUtils.java
@@ -83,7 +83,7 @@ public final class ExpressionUtils {
Expression left = transformInlineConstants(be.getLeftExpression(), targetType);
Expression right = transformInlineConstants(be.getRightExpression(), targetType);
if (left instanceof ConstantExpression && right instanceof ConstantExpression) {
- return configure(be, new ConstantExpression((String) ((ConstantExpression) left).getValue() +
+ return configure(be, new ConstantExpression(String.valueOf(((ConstantExpression) left).getValue()) +
((ConstantExpression) right).getValue()));
}
If you want, I can raise a PR for this.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)