Reputation: 63415
I'm migrating an app from play 2.0.4 to play 2.1
But the following code raises this warning:
def toConditionOperator(value: String): ConditionOperator.Value = {
if (value==null) {
ConditionOperator.Unknown
} else {
value.toLowerCase match {
case "equal" | "=" | ":" => ConditionOperator.Equal
case "notequal" | "!=" | "!:" | "<>" => ConditionOperator.NotEqual
case "greaterorequal" | ">=" => ConditionOperator.GreaterOrEqual
case "greater" | ">" => ConditionOperator.Greater
case "lessorequal" | "<=" => ConditionOperator.LessOrEqual
case "less" | "<" => ConditionOperator.Less
case "between" => ConditionOperator.Between
case "in" => ConditionOperator.In
case "startswith" => ConditionOperator.StartsWith
case "endswith" => ConditionOperator.EndsWith
case "contains" | "$" => ConditionOperator.Contains
case "missing" | "" => ConditionOperator.Missing
case "unknown" | _ => ConditionOperator.Unknown
}
}
}
[info] Compiling 98 Scala sources and 2 Java sources to /home/sas/tmp/ideas-ba/webservice/target/scala-2.10/classes...
[warn] /home/sas/tmp/ideas-ba/webservice/app/utils/query/ConditionParser.scala:203: Cannot check match for unreachability.
[warn] (The analysis required more space than allowed. Please try with scalac -Dscalac.patmat.analysisBudget=512 or -Dscalac.patmat.analysisBudget=off.)
[warn] value.toLowerCase match {
[warn] ^
In play 2.0.4 (with scala 2.9.1) it worked ok, with this version (scala 2.10) it yields this warning
Any idea what could be wrong?
Upvotes: 4
Views: 1404
Reputation: 548
For sbt 0.13.* adding -J scalac option in build.sbt works for me:
scalacOptions ++= Seq("-Jscalac.patmat.analysisBudget=off")
or
sbt -J-Dscalac.patmat.analysisBudget=off
or you can add the option with "-J" to the global options file: /usr/local/etc/sbtopts
Upvotes: 0
Reputation: 16859
For 'per project' SBT configuration add this to your .scala
build file.
initialize ~= { _ => sys.props("scalac.patmat.analysisBudget") = "off" }
Upvotes: 1
Reputation: 644
Just ran into the same issue(but not in Play). For a more permanent fix simply create a file ~/.sbtconfig
, and add these lines:
#!/bin/sh
SBT_OPTS="-Dscalac.patmat.analysisBudget=off"
This file and the SBT_OPTS
defined inside it will be used every time you run sbt
. Depending on where you got Play from it might be bundled with its own version of sbt and may not use this file at launch time.
Upvotes: 2
Reputation: 16255
Maybe this?
What happens if you add
scalacOptions ++= Seq("-Dscalac.patmat.analysisBudget=1024")
to your project/Build.scala
?
[UPDATE / CORRECTION]
I was wrong about scalacOptions
- -D
options need to be passed as JVM arguments, not arguments to scalac
. Since sbt
/play
respect the JAVA_OPTS
environment, variable, maybe you could try running play
or sbt
like this?
JAVA_OPTS="-Dscalac.patmat.analysisBudget=off" sbt
# Or
JAVA_OPTS="-Dscalac.patmat.analysisBudget=off" play
That's assuming you are on a Unix-y OS.
Upvotes: 5