diff --git a/src/main/java/com/android/tools/metalava/ApiAnalyzer.kt b/src/main/java/com/android/tools/metalava/ApiAnalyzer.kt index 0d67214be912712c68f7c2ca5b94b80f1245d146..ed32741d960c1928d3e2716f067753abff4dbc80 100644 --- a/src/main/java/com/android/tools/metalava/ApiAnalyzer.kt +++ b/src/main/java/com/android/tools/metalava/ApiAnalyzer.kt @@ -301,7 +301,12 @@ class ApiAnalyzer( } fun generateInheritedStubs(filterEmit: Predicate<Item>, filterReference: Predicate<Item>) { - packages.allClasses().forEach { + // When analyzing libraries we may discover some new classes during traversal; these aren't + // part of the API but may be super classes or interfaces; these will then be added into the + // package class lists, which could trigger a concurrent modification, so create a snapshot + // of the class list and iterate over it: + val allClasses = packages.allClasses().toList() + allClasses.forEach { if (filterEmit.test(it)) { generateInheritedStubs(it, filterEmit, filterReference) } diff --git a/src/main/resources/version.properties b/src/main/resources/version.properties index 2139cec290dc630c8a915e245203d749a0ce9fd9..579154c85e1672425b5da310e96dd26512e5c7a6 100644 --- a/src/main/resources/version.properties +++ b/src/main/resources/version.properties @@ -2,4 +2,4 @@ # Version definition # This file is read by gradle build scripts, but also packaged with metalava # as a resource for the Version classes to read. -metalavaVersion=1.2.8 +metalavaVersion=1.2.9