首页 > 解决方案 > 错误选项:'-Yliteral-types' SBT

问题描述

我有以下 scalabuild.sbt文件。

scalaVersion := "2.12.8"

val ccompileOptions = Seq(
  "-unchecked",
  "-deprecation",
  "-language:_",
  "-encoding", "UTF-8",
  "-Ypartial-unification",
  "-Xfatal-warnings",
  "-Yliteral-types",
  "-language:higherKinds"
)

scalacOptions ++= ccompileOptions

enablePlugins(TutPlugin)

tutTargetDirectory := baseDirectory.value

resolvers += Resolver.bintrayRepo("ovotech", "maven")

libraryDependencies ++= Seq(
  "is.cir" %% "ciris-cats",
  "is.cir" %% "ciris-cats-effect",
  "is.cir" %% "ciris-core",
  "is.cir" %% "ciris-enumeratum",
  "is.cir" %% "ciris-refined"
).map(_ % "0.12.1")

libraryDependencies ++= Seq(
  "org.http4s" %% "http4s-dsl",
  "org.http4s" %% "http4s-blaze-server"
).map(_ % "0.19.0")

libraryDependencies ++= Seq(
  "com.ovoenergy" %% "ciris-kubernetes" % "0.5" ,
  "org.typelevel" %% "kittens" % "1.2.0",
  "eu.timepit" %% "refined-cats" % "0.9.3"
)

该项目可以在 github 上找到。只需要更新 scalaVersion2.12.8并注释掉这部分

如果我删除scalaVersion := "2.12.8"并添加以下内容,则编译成功。

inThisBuild {
  Seq(
    scalaOrganization := "org.typelevel",
    scalaVersion := "2.12.4-bin-typelevel-4"
  )
}

当我用谷歌搜索时,似乎-Yliteral-types根据这个问题从 scala 中删除了选项。

但是我创建了一个带有scala 版本 2.12.8的项目,并在此处启用了该-Yliteral-types标志,并且工作正常。

标签: scalasbt

解决方案


是的,您必须使用 Dotty 或 Typelevel 编译器来访问您发现的此功能。虽然SIP-23的文档没有明确说明这一点,但您在上面提供的链接与文档相结合可以做到。


推荐阅读