8000 Squash: Make PrimRef not even a case class anymore. · scala-js/scala-js@d6f6725 · GitHub
[go: up one dir, main page]

Skip to content

Commit d6f6725

Browse files
committed
Squash: Make PrimRef not even a case class anymore.
1 parent 2b49a67 commit d6f6725

File tree

2 files changed

+12
-8
lines changed

2 files changed

+12
-8
lines changed

ir/shared/src/main/scala/org/scalajs/ir/Types.scala

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -258,7 +258,7 @@ object Types {
258258
sealed abstract class NonArrayTypeRef extends TypeRef
259259

260260
/** Primitive type reference. */
261-
final case class PrimRef private[Types] (tpe: PrimTypeWithRef)(
261+
final class PrimRef private[Types] (val tpe: PrimTypeWithRef)(
262262
charCodeInit: Char, displayNameInit: String) // "Init" variants so we can have good Scaladoc on the val's
263263
extends NonArrayTypeRef {
264264

@@ -284,16 +284,11 @@ object Types {
284284
* respectively.
285285
*/
286286
val charCode: Char = charCodeInit
287-
288-
// Make sure the `case class` does not produce a public copy method
289-
private def copy(tpe: PrimTypeWithRef)(charCodeInit: Char, displayNameInit: String): PrimRef =
290-
throw new Error("dead code")
291287
}
292288

293289
object PrimRef {
294-
// Make sure the `case class` does not produce a public apply method
295-
private def apply(tpe: PrimTypeWithRef)(charCodeInit: Char, displayNameInit: String): PrimRef =
296-
throw new Error("dead code")
290+
def unapply(typeRef: PrimRef): Some[PrimTypeWithRef] =
291+
Some(typeRef.tpe)
297292
}
298293

299294
final val VoidRef = VoidType.primRef

project/BinaryIncompatibilities.scala

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,15 @@ object BinaryIncompatibilities {
1616
ProblemFilters.exclude[DirectMissingMethodProblem]("org.scalajs.ir.Types.BoxedClassToPrimType"),
1717
ProblemFilters.exclude[DirectMissingMethodProblem]("org.scalajs.ir.Types.PrimTypeToBoxedClass"),
1818

19+
// !!! Breaking, PrimRef is not a case class anymore
20+
ProblemFilters.exclude[MissingTypesProblem]("org.scalajs.ir.Types$PrimRef"),
21+
ProblemFilters.exclude[DirectMissingMethodProblem]("org.scalajs.ir.Types#PrimRef.canEqual"),
22+
ProblemFilters.exclude[DirectMissingMethodProblem]("org.scalajs.ir.Types#PrimRef.productArity"),
23+
ProblemFilters.exclude[DirectMissingMethodProblem]("org.scalajs.ir.Types#PrimRef.productElement"),
24+
ProblemFilters.exclude[DirectMissingMethodProblem]("org.scalajs.ir.Types#PrimRef.productIterator"),
25+
ProblemFilters.exclude[DirectMissingMethodProblem]("org.scalajs.ir.Types#PrimRef.productPrefix"),
26+
ProblemFilters.exclude[IncompatibleResultTypeProblem]("org.scalajs.ir.Types#PrimRef.unapply"),
27+
1928
// !!! Breaking I guess ... we used to leak public things out of a `case class` with a private[ir] constructor
2029
ProblemFilters.exclude[DirectMissingMethodProblem]("org.scalajs.ir.Types#PrimRef.this"),
2130
ProblemFilters.exclude[DirectMissingMethodProblem]("org.scalajs.ir.Types#PrimRef.apply"),

0 commit comments

Comments
 (0)
0