Scala 3 迁移指南

编译器选项查找表

语言

此表列出了 Scala 2.13 编译器选项及其在 Scala 3 中的等效选项。一些选项具有跨版本支持,例如 -Vprint。其他选项具有不同名称的近似等效项。许多 Scala 2 选项在 Scala 3 中没有等效项,例如用于调试 Scala 2 宏的选项。

编译器选项显示为帮助输出 scalac -helpscalac -X 等显示的内容。此处显示了一些别名,但大多数较旧的别名,例如 -Xprint 表示 -Vprint,或 -Ytyper-debug 表示 -Vtyper,均按最新名称列出。

选项组 -V-W 在 Scala 2.13 中引入,用于请求附加诊断输出的“详细”选项和请求附加检查的“警告”,这些检查可能表示代码中的错误,也可能不表示。 -Werror 将警告提升为错误,-Wconf 允许通过忽略警告或将其视为错误来精确控制警告。迁移到 Scala 3 时可能需要调整 -Wconf 的配置字符串,因为配置语法及其匹配的错误消息不同。

状态 含义
它在 Scala 3 中可用。
<new-name> 它已重命名为 <new-name>
它目前不可用,但可能会在以后添加。

当前比较基于 Scala 2.13.10 和 3.3.0。

标准设置

2.13.x 3.3.x
-Dproperty=value
-J<flag>
-P:<plugin>:<opt>
-V
-W
-X
-Y
-bootclasspath
-classpath
-d
-dependencyfile
-deprecation
-encoding
-explaintypes -explain-types
-extdirs
-feature
-g
-help
-javabootclasspath
-javaextdirs
-language
-no-specialization
-nobootcp
-nowarn
-opt
-opt-inline-from
-opt-warnings
-optimize
-print
-release
-rootdir
-sourcepath
-target -Xtarget
-toolcp
-unchecked
-uniqid
-usejavacp
-usemanifestc
-verbose
-version

详细设置

2.13.x 3.3.x
-Vbrowse:<phases>
-Vclasspath -Ylog-classpath
-Vdebug -Ydebug
-Vdebug-tasty
-Vdebug-type-error
-Vdoc
-Vfree-terms
-Vfree-types
-Vhot-statistics
-Vide
-Vimplicit-conversions
-Vimplicits
-Vimplicits-max-refined
-Vimplicits-verbose-tree
-Vinline <package/Class.method>
-Vlog:<phases> -Ylog:<phases>
-Vmacro
-Vmacro-lite
-Vopt <package/Class.method>
-Vpatmat
-Vphases
-Vpos
-Vprint:<phases>
-Vprint-args <file>
-Vprint-pos -Yprint-pos
-Vprint-types -Xprint-types
-Vquasiquote
-Vreflective-calls
-Vreify
-Vshow:<phases>
-Vshow-class <class>
-Vshow-member-pos <output style>
-Vshow-object <object>
-Vshow-symkinds
-Vshow-symowners
-Vstatistics <phases>
-Vsymbols
-Vtype-diffs
-Vtyper

警告设置

2.13.x 3.3.x
-Wconf
-Wdead-code
-Werror
-Wextra-implicit
-Wmacros:<mode>
-Wnonunit-if
-Wnonunit-statement
-Wnumeric-widen
-Woctal-literal
-Wopt
-Wperformance
-Wself-implicit
-Wunused:<warnings>
-Wvalue-discard

高级设置

2.13.x 3.3.x
-Xasync
-Xcheckinit -Ysafe-init
-Xdev
-Xdisable-assertions
-Xelide-below
-Xexperimental
-Xfuture
-Xgenerate-phase-graph
-Xjline
-Xlint:deprecation -deprecation
-Xlint:<warnings>
-Xmacro-settings
-Xmain-class
-Xmaxerrs
-Xmaxwarns
-Xmigration
-Xmixin-force-forwarders
-Xno-forwarders
-Xno-patmat-analysis
-Xnon-strict-patmat-analysis
-Xnojline
-Xplugin
-Xplugin-disable
-Xplugin-list
-Xplugin-require
-Xpluginsdir
-Xprompt
-Xreporter
-Xresident
-Xscript
-Xsource -source
-Xsource-reader
-Xverify -Xverify-signatures
-Xxml

私有设置

2.13.x 3.0.x
-Ybackend-parallelism
-Ybackend-worker-queue
-Ybreak-cycles
-Ycache-macro-class-loader
-Ycache-plugin-class-loader
-Ycheck
-Ycompact-trees
-Ydelambdafy
-Ydump-classes
-Ygen-asmp
-Yimports
-Yissue-debug
-Yjar-compression-level
-YjarFactory
-Ymacro-annotations
-Ymacro-classpath
-Ymacro-expand
-Ymacro-global-fresh-names
-Yno-completion
-Yno-flat-classpath-cache
-Yno-generic-signatures
-Yno-imports
-Yno-predef
-Yopt-inline-heuristics
-Ypatmat-exhaust-depth
-Ypresentation-any-thread
-Ypresentation-debug
-Ypresentation-delay
-Ypresentation-locate-source-file
-Ypresentation-log
-Ypresentation-replay
-Ypresentation-strict
-Ypresentation-verbose
-Yprint-trees
-Yprofile-destination
-Yprofile-enabled
-Yprofile-external-tool
-Yprofile-run-gc
-Yprofile-trace
-Yrangepos
-Yrecursion
-Yreify-copypaste
-Yrepl-class-based
-Yrepl-outdir
-Yrepl-use-magic-imports
-Yresolve-term-conflict
-Yscala3-implicit-resolution
-Yscriptrunner
-Yskip
-Ystop-after
-Ystop-before
-Ytasty-no-annotations
-Ytasty-reader
-Ytrack-dependencies
-Yvalidate-pos

编译器插件

一些有用的 Scala 2.13 编译器插件现已内置到编译器中。你可以使用一些新的原生选项启用和配置它们。

Scala.js

2.13.x 3.0.x
-Xplugin:scalajs-compiler_<version>.jar -scalajs
-P:scalajs:genStaticForwardersForNonTopLevelObjects -scalajs-genStaticForwardersForNonTopLevelObjects
-P:scalajs:mapSourceURI -scalajs-mapSourceURI

SemanticDB

2.13.x 3.0.x
-Xplugin:semanticdb-scalac_<version>.jar -Xsemanticdb
-P:semanticdb:targetroot:<path> -semanticdb-target:<path>

类型投影仪

2.13.x 3.0.x
-Xplugin:kind-projector_<version>.jar -Ykind-projector

此页面的贡献者