Skip to content
Merged
15 changes: 11 additions & 4 deletions bench/src/main/scala/cats/parse/bench/StringInBench.scala
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,9 @@ private[parse] class StringInBenchmarks {

var radixNode: RadixNode = _

var stringIn: Parser[Unit] = _
var stringInV: Parser[Unit] = _

var stringInS: Parser[String] = _

var oneOf: Parser[Unit] = _

Expand All @@ -60,13 +62,18 @@ private[parse] class StringInBenchmarks {
}

radixNode = RadixNode.fromStrings(stringsToMatch)
stringIn = Parser.stringIn(stringsToMatch).void
stringInS = Parser.stringIn(stringsToMatch)
stringInV = stringInS.void
oneOf = Parser.oneOf(stringsToMatch.map(Parser.string(_)))
}

@Benchmark
def stringInParse(): Unit =
inputs.foreach(stringIn.parseAll(_))
def stringInVParse(): Unit =
inputs.foreach(stringInV.parseAll(_))

@Benchmark
def stringInSParse(): Unit =
inputs.foreach(stringInS.parseAll(_))

@Benchmark
def oneOfParse(): Unit =
Expand Down
27 changes: 21 additions & 6 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -135,18 +135,33 @@ lazy val core = crossProject(JSPlatform, JVMPlatform)
if (isScala211) Set.empty else mimaPreviousArtifacts.value
},
mimaBinaryIssueFilters ++= {
/*
* It is okay to filter anything in Impl or RadixNode which are private
*/
if (tlIsScala3.value)
List(
ProblemFilters.exclude[IncompatibleResultTypeProblem]("cats.parse.Parser#State.error"),
ProblemFilters.exclude[IncompatibleMethTypeProblem]("cats.parse.Parser#State.error_="),
ProblemFilters.exclude[IncompatibleMethTypeProblem]("cats.parse.RadixNode.this"),
ProblemFilters.exclude[DirectMissingMethodProblem]("cats.parse.Parser#Impl.mergeCharIn"),
ProblemFilters.exclude[DirectMissingMethodProblem]("cats.parse.Parser#Impl.mergeStrIn"),
ProblemFilters.exclude[DirectMissingMethodProblem]("cats.parse.RadixNode.children"),
ProblemFilters.exclude[DirectMissingMethodProblem]("cats.parse.RadixNode.fsts"),
ProblemFilters.exclude[DirectMissingMethodProblem]("cats.parse.RadixNode.prefixes"),
ProblemFilters.exclude[DirectMissingMethodProblem]("cats.parse.RadixNode.children"),
ProblemFilters.exclude[DirectMissingMethodProblem]("cats.parse.RadixNode.word"),
ProblemFilters.exclude[FinalClassProblem]("cats.parse.RadixNode")
ProblemFilters.exclude[FinalClassProblem]("cats.parse.RadixNode"),
ProblemFilters.exclude[IncompatibleMethTypeProblem]("cats.parse.Parser#State.error_="),
ProblemFilters.exclude[IncompatibleMethTypeProblem]("cats.parse.RadixNode.this"),
ProblemFilters
.exclude[IncompatibleResultTypeProblem]("cats.parse.Parser#Impl#StringIn.parseMut"),
ProblemFilters.exclude[IncompatibleResultTypeProblem]("cats.parse.Parser#Impl.stringIn"),
ProblemFilters.exclude[IncompatibleResultTypeProblem]("cats.parse.Parser#State.error")
)
else
List(
ProblemFilters.exclude[DirectMissingMethodProblem]("cats.parse.Parser#Impl.mergeCharIn"),
ProblemFilters.exclude[DirectMissingMethodProblem]("cats.parse.Parser#Impl.mergeStrIn"),
ProblemFilters
.exclude[IncompatibleResultTypeProblem]("cats.parse.Parser#Impl#StringIn.parseMut"),
ProblemFilters.exclude[IncompatibleResultTypeProblem]("cats.parse.Parser#Impl.stringIn")
)
else Nil
}
)
.jsSettings(
Expand Down
Loading