diff options
Diffstat (limited to 'src/main')
| -rw-r--r-- | src/main/scala/firrtl/passes/CheckChirrtl.scala | 3 | ||||
| -rw-r--r-- | src/main/scala/firrtl/stage/FirrtlAnnotations.scala | 15 | ||||
| -rw-r--r-- | src/main/scala/firrtl/stage/FirrtlCli.scala | 3 | ||||
| -rw-r--r-- | src/main/scala/firrtl/stage/package.scala | 1 | ||||
| -rw-r--r-- | src/main/scala/firrtl/stage/transforms/CheckScalaVersion.scala | 37 |
5 files changed, 58 insertions, 1 deletions
diff --git a/src/main/scala/firrtl/passes/CheckChirrtl.scala b/src/main/scala/firrtl/passes/CheckChirrtl.scala index 579dba30..9903f445 100644 --- a/src/main/scala/firrtl/passes/CheckChirrtl.scala +++ b/src/main/scala/firrtl/passes/CheckChirrtl.scala @@ -5,9 +5,12 @@ package firrtl.passes import firrtl.Transform import firrtl.ir._ import firrtl.options.Dependency +import firrtl.stage.transforms.CheckScalaVersion object CheckChirrtl extends Pass with CheckHighFormLike { + override def prerequisites = Dependency[CheckScalaVersion] :: Nil + override val optionalPrerequisiteOf = firrtl.stage.Forms.ChirrtlForm ++ Seq( Dependency(CInferTypes), Dependency(CInferMDir), diff --git a/src/main/scala/firrtl/stage/FirrtlAnnotations.scala b/src/main/scala/firrtl/stage/FirrtlAnnotations.scala index 91c5609b..d587fd8c 100644 --- a/src/main/scala/firrtl/stage/FirrtlAnnotations.scala +++ b/src/main/scala/firrtl/stage/FirrtlAnnotations.scala @@ -222,3 +222,18 @@ case class FirrtlCircuitAnnotation(circuit: Circuit) extends NoTargetAnnotation override lazy val hashCode: Int = circuit.hashCode } + +/** Suppresses warning about Scala 2.11 deprecation + * + * - set with `--Wno-scala-version-warning` + */ +case object SuppressScalaVersionWarning extends NoTargetAnnotation with FirrtlOption with HasShellOptions { + def longOption: String = "Wno-scala-version-warning" + val options = Seq( + new ShellOption[Unit]( + longOption = longOption, + toAnnotationSeq = { _ => Seq(this) }, + helpText = "Suppress Scala 2.11 deprecation warning (ignored in Scala 2.12+)" + ) + ) +} diff --git a/src/main/scala/firrtl/stage/FirrtlCli.scala b/src/main/scala/firrtl/stage/FirrtlCli.scala index be1100c3..39b89bea 100644 --- a/src/main/scala/firrtl/stage/FirrtlCli.scala +++ b/src/main/scala/firrtl/stage/FirrtlCli.scala @@ -19,7 +19,8 @@ trait FirrtlCli { this: Shell => RunFirrtlTransformAnnotation, firrtl.EmitCircuitAnnotation, firrtl.EmitAllModulesAnnotation, - NoCircuitDedupAnnotation ) + NoCircuitDedupAnnotation, + SuppressScalaVersionWarning) .map(_.addOptions(parser)) phases.DriverCompatibility.TopNameAnnotation.addOptions(parser) diff --git a/src/main/scala/firrtl/stage/package.scala b/src/main/scala/firrtl/stage/package.scala index e9cf3fb4..123c763a 100644 --- a/src/main/scala/firrtl/stage/package.scala +++ b/src/main/scala/firrtl/stage/package.scala @@ -33,6 +33,7 @@ package object stage { case InfoModeAnnotation(i) => c.copy(infoModeName = i) case FirrtlCircuitAnnotation(cir) => c.copy(firrtlCircuit = Some(cir)) case a : CompilerAnnotation => logger.warn(s"Use of CompilerAnnotation is deprecated. Ignoring $a") ; c + case SuppressScalaVersionWarning => c } } } diff --git a/src/main/scala/firrtl/stage/transforms/CheckScalaVersion.scala b/src/main/scala/firrtl/stage/transforms/CheckScalaVersion.scala new file mode 100644 index 00000000..a7127dba --- /dev/null +++ b/src/main/scala/firrtl/stage/transforms/CheckScalaVersion.scala @@ -0,0 +1,37 @@ +// See LICENSE for license details. + +package firrtl.stage.transforms + +import firrtl.{BuildInfo, CircuitState, DependencyAPIMigration, Transform} +import firrtl.stage.SuppressScalaVersionWarning +import firrtl.options.StageUtils.dramaticWarning + +object CheckScalaVersion { + def migrationDocumentLink: String = "https://www.chisel-lang.org/chisel3/upgrading-from-scala-2-11.html" + + private def getScalaMajorVersion: Int = { + val "2" :: major :: _ :: Nil = BuildInfo.scalaVersion.split("\\.").toList + major.toInt + } + + final def deprecationMessage(version: String, option: String) = + s"""|FIRRTL support for Scala $version is deprecated, please upgrade to Scala 2.12. + | Migration guide: $migrationDocumentLink + | Suppress warning with '$option'""".stripMargin + +} + +class CheckScalaVersion extends Transform with DependencyAPIMigration { + import CheckScalaVersion._ + + override def invalidates(a: Transform) = false + + def execute(state: CircuitState): CircuitState = { + def suppress = state.annotations.contains(SuppressScalaVersionWarning) + if (getScalaMajorVersion == 11 && !suppress) { + val option = s"--${SuppressScalaVersionWarning.longOption}" + dramaticWarning(deprecationMessage("2.11", option)) + } + state + } +} |
