Scala 3 遷移指南

新編譯器選項

語言

目前的頁面僅包含 Scala 3.0.x 中新增的選項。

標準設定

3.0.x 說明
-color 彩色輸出 預設值:always。
-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 使用不健全的比對類型簡化演算法。

此頁面的貢獻者