【问题标题】:How to use dotty in scala project?如何在scala项目中使用dotty?
【发布时间】:2017-06-07 21:29:10
【问题描述】:

我正在开发一个使用 sbt 运行的 Scala 项目。我想使用dotty 提供的联合类型。我在项目中使用 dotty 时遇到问题。

我这样做了:

  • 添加了./projects/plugins.sbt./projects/build.properties 以及sbt-dotty 中提到的内容。
  • 添加了./projects/scalafix.sbt和一个配置文件 ./.scalafix.conf 包含内容 scalafixEnabled in ThisBuild := true。这是在sbt-scalafix 中提供的

现在,如果我编译该项目,我会得到一大堆 Migration Warnings 和 Member Not Found ErrorAmbiguous overload 等错误列表,并以 java.lang.AssertionError: no TypeBounds allowed 结尾。纠正这些错误是避免这些错误的唯一方法吗?

在进行这些更改之前,该项目运行良好(使用 scalaVersion := 2.12.1)。谁能帮我让它工作?

编辑: sbtVersion = 0.13.13

【问题讨论】:

  • 你能提供你的 SBT 版本吗?
  • @AkiLegaspi 现在是 0.13.13。也将此添加到问题中。
  • 我的印象是整个 Dotty 生态系统,包括 scalafix 都处于测试阶段,如果 scalafix 能够在没有人工干预的情况下成功迁移您的代码库,我会感到非常惊讶。
  • @badcook:确实。这两个项目是由同一个人开发的,而且 Dotty 被用来尝试 Scala 的新想法当然是有启发性的,但归根结底,这两个是两种不同的编程语言,你需要决定您想在两者中的哪一个中编写代码。如果您在 Scala 中编写代码,请使用 Scala 编译它。如果你想用 Dotty 编译你的代码,你需要用 Dotty 编写,而不是 Scala。
  • @JörgWMittag 看到我的答案

标签: scala sbt dotty


【解决方案1】:

Dotty 目前处于实验阶段(pre-alpha,在撰写本文时尚未公开发布)。您收到编译错误的事实意味着:

  • 您使用 sbt & dotty 编译项目的设置可能是正确的(这回答了问题?)
  • 您的代码库可能会触发 dotty 中的新错误

StackOverflow 不适合讨论未发布软件中的错误。如果您设法最小化您的问题,请在dotty issue tacker 上报告(或来聊天gitter)。如果您有兴趣破解编译器,在这些早期阶段也有很多机会,总是非常欢迎外部贡献者!


即使这不是您问题的一部分,我也觉得有义务解决 @JörgWMittag 评论。 Dotty 不是一种新的编程语言。长期目标是能够使用这两种编译器交叉编译大部分 Scala 生态系统,就像目前 Scala 2.10/2.11/2.12 的情况一样。 Dotty 本身就是此类项目的一个示例,每个测试都使用scalac 编译的编译器版本(当前默认)运行,并使用编译器的引导版本(dotty 使用dotty 编译)运行。

此外,目前正在设置community-build 基础架构。它是一个收集(分支)开源 Scala 项目的存储库,这些项目可以与 scalac/dotty 交叉编译,作为编译器的附加测试基础设施。

【讨论】:

    猜你喜欢
    • 2018-12-19
    • 1970-01-01
    • 2020-04-14
    • 1970-01-01
    • 2013-07-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-08
    • 2020-07-12
    相关资源
    最近更新 更多