Skip to content

Commit

Permalink
Merge pull request #10397 from SethTisue/bug-12783
Browse files Browse the repository at this point in the history
  • Loading branch information
SethTisue committed May 16, 2023
2 parents 2f2d4c6 + 52ce4b1 commit c7019c1
Showing 1 changed file with 8 additions and 2 deletions.
Expand Up @@ -825,7 +825,10 @@ abstract class ClassfileParser(reader: ReusableInstance[ReusableDataReader]) {
val paramNameAccess = new Array[Int](paramCount)
var i = 0
while (i < paramCount) {
paramNames(i) = pool.getExternalName(u2)
paramNames(i) = u2() match {
case 0 => null // may occur on JDK 21+, as per scala/bug#12783
case index => pool.getExternalName(index)
}
paramNameAccess(i) = u2
i += 1
}
Expand Down Expand Up @@ -1248,6 +1251,7 @@ abstract class ClassfileParser(reader: ReusableInstance[ReusableDataReader]) {
sym setInfo createFromClonedSymbols(alias.initialize.typeParams, alias.tpe)(typeFun)
}
}
// on JDK 21+, `names` may include nulls, as per scala/bug#12783
private class ParamNames(val names: Array[NameOrString], val access: Array[Int]) {
assert(names.length == access.length)
def length = names.length
Expand Down Expand Up @@ -1351,8 +1355,10 @@ abstract class ClassfileParser(reader: ReusableInstance[ReusableDataReader]) {
case (i, param) =>
val isSynthetic = (paramNames.access(i) & ACC_SYNTHETIC) != 0
if (!isSynthetic) {
param.name = paramNames.names(i).name.toTermName.encode
param.resetFlag(SYNTHETIC)
val nameOrString = paramNames.names(i)
if (nameOrString != null)
param.name = nameOrString.name.toTermName.encode
}
}
// there's not anything we can do, but it's slightly worrisome
Expand Down

0 comments on commit c7019c1

Please sign in to comment.