[ https://issues.apache.org/jira/browse/GROOVY-10159?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17404104#comment-17404104 ]
Paul King commented on GROOVY-10159: ------------------------------------ Yes, this does appear wrong. > 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, 2.5.14 > Environment: JDK: openjdk version "1.8.0_265"(Zulu > 8.48.0.53-CA-macosx) (build 1.8.0_265-b11) > Reporter: Dipanjan Bhowmik > Assignee: Daniel Sun > Priority: Minor > Fix For: 2.5.15, 4.0.0-beta-1, 3.0.9 > > Time Spent: 1h 10m > Remaining Estimate: 0h > > After upgrading 2.5.3 to 2.5.4, observing the following error in my project: > > {quote}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) > ... > {quote} > > 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)