Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
2.4.19, 3.0.3, 2.5.11
-
Java: openjdk version "1.8.0_242"
OS: OS X Catalina 10.15.3
Groovy: 2.4.19
-
Important
Description
After upgrading asset-pipeline-core from groovy 2.0.7 to 2.4.15 then 2.4.19 . A bug was identified with @CompileStatic not properly handling runtime type casting when sorting an Array instead of a List
Example
Create File TestFile.groovy
import groovy.transform.CompileStaticpublic class TestFile { static void main(String[] args) { File file = new File('.') TestFile testFile = new TestFile() testFile.listSortedFiles(file) } @CompileStatic void listSortedFiles(File directory) { File[] files = directory.listFiles() files = files?.sort { File a, File b -> a.name.compareTo b.name } as File[] for(File file in files) { } } }
Then simply run:
groovy TestFile.groovy
Exception:
Caught: java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.io.File; java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.io.File; at TestFile.listSortedFiles(TestFile.groovy:15) at TestFile$listSortedFiles.call(Unknown Source) at TestFile.main(TestFile.groovy:8)