Skip to content

Commit

Permalink
Make TupledFunction experimental
Browse files Browse the repository at this point in the history
  • Loading branch information
nicolasstucki committed Feb 4, 2022
1 parent bde9a79 commit 2ddc6dd
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 1 deletion.
3 changes: 3 additions & 0 deletions library/src/scala/util/TupledFunction.scala
@@ -1,17 +1,20 @@
package scala.util

import scala.annotation.implicitNotFound
import scala.annotation.experimental

/** Type class relating a `FunctionN[..., R]` with an equivalent tupled function `Function1[TupleN[...], R]`
*
* @tparam F a function type
* @tparam G a tupled function type (function of arity 1 receiving a tuple as argument)
*/
@implicitNotFound("${F} cannot be tupled as ${G}")
@experimental
sealed trait TupledFunction[F, G]:
def tupled(f: F): G
def untupled(g: G): F

@experimental
private[scala] object TupledFunction:
def apply[F, G](tupledImpl: F => G, untupledImpl: G => F): TupledFunction[F, G] =
new TupledFunction[F, G]:
Expand Down
8 changes: 7 additions & 1 deletion project/MiMaFilters.scala
Expand Up @@ -3,7 +3,7 @@ import com.typesafe.tools.mima.core._

object MiMaFilters {
val Library: Seq[ProblemFilter] = Seq(
// Experimental APIs that can be added in 3.2.0
// Experimental APIs that can be added in 3.2.0 or later
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.runtime.Tuples.append"),
ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.quoted.Quotes#reflectModule#TypeReprMethods.substituteTypes"),
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.quoted.Quotes#reflectModule#TypeReprMethods.substituteTypes"),
Expand All @@ -18,6 +18,12 @@ object MiMaFilters {
ProblemFilters.exclude[ReversedMissingMethodProblem]("scala.quoted.Quotes#reflectModule#CompilationInfoModule.XmacroSettings"),
ProblemFilters.exclude[DirectMissingMethodProblem]("scala.quoted.Quotes#reflectModule#CompilationInfoModule.XmacroSettings"),

// TupledFunction
ProblemFilters.exclude[MissingClassProblem]("scala.runtime.TupledFunctions"),
ProblemFilters.exclude[MissingClassProblem]("scala.runtime.TupledFunctions$"),
ProblemFilters.exclude[MissingClassProblem]("scala.util.TupledFunction"),
ProblemFilters.exclude[MissingClassProblem]("scala.util.TupledFunction$"),

// Private to the compiler - needed for forward binary compatibility
ProblemFilters.exclude[MissingClassProblem]("scala.annotation.since")
)
Expand Down

0 comments on commit 2ddc6dd

Please sign in to comment.