Scala 3 迁移指南

新编译器选项

语言

当前页面仅包含 Scala 3.0.x 中添加的选项。

标准设置

3.0.x 说明
-color 彩色输出 默认值:始终。
-doc-snapshot 为当前 Dotty 版本生成文档快照
-explain 更详细地解释错误。
-from-tasty 从 tasty 文件编译类。参数是 .tasty 或 .jar 文件。
-indent 与 -rewrite 一起使用,由于缩进明显,因此在可能的情况下删除 {…} 语法。
-new-syntax 在控制表达式中要求 thendo
-no-indent 要求经典 {…} 语法,缩进不重要。
-old-syntax 条件周围需要 (...)
-pagewidth 设置页面宽度,默认值:80。
-print-lines 显示源代码行号。
-print-tasty 打印原始 tasty。
-project 项目名称。
-project-logo 包含项目徽标的文件(在 /images 中)。
-project-url 项目的源代码仓库。
-project-version 项目的当前版本。
-rewrite ...-migration 源版本结合使用时,重写源代码以迁移到新版本。
-siteroot 包含用于生成文档的静态文件目录。默认值:./docs。
-sourceroot 指定工作区根目录。默认值:..

详细设置

3.2.x 说明
-Vprofile 显示有关源代码和内部表示的指标,以估计编译时复杂度。
-Vprofile-sorted-by:<column-name> 按给定的列名显示有关源代码和内部表示的指标(按列名排序)。
-Vprofile-details N 与 -Vprofile 类似,但还会显示有关 N 个最复杂方法的源代码和内部表示的指标。

高级设置

3.0.x 说明
-Xignore-scala2-macros 编译调用 Scala2 宏的代码时忽略错误,这些错误将在运行时失败。
-Ximport-suggestion-timeout 报告错误时搜索导入建议的超时时间(以毫秒为单位)。
-Xmax-inlined-trees 内联树的最大数量。默认值:2000000
-Xmax-inlines 连续内联的最大数量。默认值:32。
-Xprint-diff 打印自上次打印以来树的更改部分。
-Xprint-diff-del 打印自上次打印以来树的更改部分,包括已删除的部分。
-Xprint-inline 显示内联代码的来源。
-Xprint-suspension 显示在编译宏之前代码挂起的时间。
-Xrepl-disable-display 不要在 REPL 中显示定义。
-Xwiki-syntax 保留 Scala2 在 Scaladoc 中使用 Wiki 语法的行为。

私有设置

3.0.x 说明
-Ycheck-all-patmat 检查所有模式匹配的穷举性和冗余(用于测试算法)。
-Ycheck-mods 检查符号及其定义树的修饰符是否同步。
-Ycheck-reentrant 检查已编译程序是否不包含可从全局根访问的变量。
-Ycook-comments 处理注释(类型检查 @usecase 等)。
-Ydebug-error 捕获到任何错误时打印堆栈跟踪。
-Ydebug-flags 打印所有定义标记。
-Ydebug-missing-refs 当缺少必需符号时打印堆栈跟踪。
-Ydebug-names 显示名称的内部表示形式。
-Ydebug-pos 显示包括跨度的完整源位置。
-Ydebug-trace 跟踪核心操作。
-Ydebug-tree-with-id 在创建具有给定 ID 的树时打印堆栈跟踪。默认值:-2147483648。
-Ydebug-type-error 捕获到 TypeError 时打印堆栈跟踪
-Ydetailed-stats 显示详细的内部编译器统计信息(需要将 Stats.enabled 设置为 true)。
-YdisableFlatCpCaching 不缓存来自 jar 中类路径元素的扁平类路径表示形式,跨编译器实例。
-Ydrop-comments 扫描源文件时删除注释。
-Ydump-sbt-inc 对于每个已编译的 foo.scala,输出在 foo.inc 中用于 sbt 增量编译的 API 表示形式和依赖项,暗示 -Yforce-sbt-phases。
-Yerased-terms 允许使用擦除的术语。
-Yexplain-lowlevel 在解释类型错误时,以较低级别显示类型。
-Yexplicit-nulls 使引用类型不可为空。可空类型可以用联合表示:例如 String|Null。
-Yforce-sbt-phases 运行 sbt 用于增量编译的阶段(ExtractDependencies 和 ExtractAPI),即使编译器在 sbt 之外运行,用于调试。
-Yfrom-tasty-ignore-list 使用 -from-tasty 时不会加载的 jar 文件中的 tasty 文件列表
-Yindent-colons 允许行尾的冒号开始缩进块。
-Yinstrument 添加计算分配和闭包创建的检测代码。
-Yinstrument-defs 添加计算方法调用的检测代码;还需要设置 -Yinstrument。
-Yno-decode-stacktraces 如何原始 StackOverflow 堆栈跟踪,而不是将它们解码为触发操作。
-Yno-deep-subtypes 在深度子类型调用堆栈上抛出异常。
-Yno-double-bindings 断言没有 namedtype 被绑定两次(仅在程序无错误时启用)。
-Yno-kind-polymorphism 禁用种类多态性。
-Yno-patmat-opt 禁用所有模式匹配优化。
-Yplain-printer 使用普通打印机漂亮打印。
-Yprint-debug 在打印树时,打印一些对调试有用的额外信息。
-Yprint-debug-owners 在打印树时,打印定义的所有者。
-Yprint-pos 显示树位置。
-Yprint-pos-syms 显示符号定义位置。
-Yprint-syms 在打印树时,打印符号中的信息,而不是树中对应的信息。
-Yrequire-targetName 如果在没有 @targetName 注释的情况下定义了一个操作符,则发出警告
-Yretain-trees 保留顶级类的树,可从 ClassSymbol#tree 访问
-Yscala2-unpickler 控制我们从哪里获取 Scala 2 符号。这可以是“always”、“never”或类路径。默认值:always。
-Yshow-print-errors 不要抑制在树打印期间引发的异常。
-Yshow-suppressed-errors 还显示通常被抑制的后续错误和警告。
-Yshow-tree-ids 在调试输出中唯一标记所有树节点。
-Yshow-var-bounds 打印具有其边界的类型变量。
-Ytest-pickler 用于序列化功能的自检;应与 -Ystop-after:pickler 一起使用。
-Yunsound-match-types 使用不健全的匹配类型化简算法。

此页面的贡献者