Skip to content

Commit 366ba4a

Browse files
authored
Merge pull request scala#10401 from SethTisue/merge-2.12-to-2.13-20230517
2 parents 6f5ca20 + 1dfdedb commit 366ba4a

File tree

6 files changed

+13
-7
lines changed

6 files changed

+13
-7
lines changed

project/build.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
sbt.version=1.8.2
1+
sbt.version=1.8.3

project/plugins.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ buildInfoKeys := Seq[BuildInfoKey](buildClasspath)
1717

1818
buildInfoPackage := "scalabuild"
1919

20-
addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "1.1.1")
20+
addSbtPlugin("com.typesafe" % "sbt-mima-plugin" % "1.1.2")
2121

2222
libraryDependencies ++= Seq(
2323
"org.eclipse.jgit" % "org.eclipse.jgit" % "4.11.9.201909030838-r",

src/compiler/scala/tools/nsc/symtab/classfile/ClassfileParser.scala

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -840,7 +840,10 @@ abstract class ClassfileParser(reader: ReusableInstance[ReusableDataReader]) {
840840
val paramNameAccess = new Array[Int](paramCount)
841841
var i = 0
842842
while (i < paramCount) {
843-
paramNames(i) = pool.getExternalName(u2())
843+
paramNames(i) = u2() match {
844+
case 0 => null // may occur on JDK 21+, as per scala/bug#12783
845+
case index => pool.getExternalName(index)
846+
}
844847
paramNameAccess(i) = u2()
845848
i += 1
846849
}
@@ -1358,6 +1361,7 @@ abstract class ClassfileParser(reader: ReusableInstance[ReusableDataReader]) {
13581361
sym setInfo createFromClonedSymbols(alias.initialize.typeParams, alias.tpe)(typeFun)
13591362
}
13601363
}
1364+
// on JDK 21+, `names` may include nulls, as per scala/bug#12783
13611365
private class ParamNames(val names: Array[NameOrString], val access: Array[Int]) {
13621366
assert(names.length == access.length, "Require as many names as access")
13631367
def length = names.length
@@ -1462,8 +1466,10 @@ abstract class ClassfileParser(reader: ReusableInstance[ReusableDataReader]) {
14621466
case (i, param) =>
14631467
val isSynthetic = (paramNames.access(i) & ACC_SYNTHETIC) != 0
14641468
if (!isSynthetic) {
1465-
param.name = paramNames.names(i).name.toTermName.encode
14661469
param.resetFlag(SYNTHETIC)
1470+
val nameOrString = paramNames.names(i)
1471+
if (nameOrString != null)
1472+
param.name = nameOrString.name.toTermName.encode
14671473
}
14681474
}
14691475
// there's not anything we can do, but it's slightly worrisome

src/partest/scala/tools/partest/ReplTest.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ trait Lambdaless extends ReplTest {
7575
override def normalize(s: String) = stripLambdaClassName(super.normalize(s))
7676
}
7777
object Lambdaless {
78-
private val lambdaless = """\$Lambda\$\d+/(?:0x[a-f0-9]{16}|\d+)(@[a-fA-F0-9]+)?""".r
78+
private val lambdaless = """\$Lambda(?:\$\d+)?/(?:0x[a-f0-9]{16}|\d+)(?:@[a-fA-F0-9]+)?""".r
7979
private def stripLambdaClassName(s: String): String = lambdaless.replaceAllIn(s, Regex.quoteReplacement("<function>"))
8080
}
8181

test/files/run/sammy_after_implicit_view.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ trait MySam { def apply(x: Int): String }
33
// check that SAM conversion happens after implicit view application
44
object Test extends App {
55
final val AnonFunClass = "$anon$"
6-
final val LMFClass = "$$Lambda$" // LambdaMetaFactory names classes like this
6+
final val LMFClass = "$$Lambda" // LambdaMetaFactory names classes like this
77

88
// if there's an implicit conversion, it does not takes precedence (because that's what dotty does)
99
def implicitSam() = {

test/files/run/sammy_restrictions_LMF.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ trait TClassParent extends B { def apply(x: Int): String }
1515

1616
object Test extends App {
1717
final val AnonFunClass = "$anonfun$"
18-
final val LMFClass = "$$Lambda$" // LambdaMetaFactory names classes like this
18+
final val LMFClass = "$$Lambda" // LambdaMetaFactory names classes like this
1919

2020
private def LMF(f: Any): Unit = {
2121
val className = f.getClass.toString

0 commit comments

Comments
 (0)