菜单

语言版本设置

相关源文件

语言版本设置是 Kotlin 编译器的一个核心组件,负责管理不同 Kotlin 版本之间的兼容性并控制功能的可用性。该系统使编译器能够根据配置的 Kotlin 版本确定哪些语言功能可用、哪些会产生警告,以及哪些会产生错误。

核心组件

语言版本设置系统包含几个关键组件,它们协同工作以提供特定于版本的语言行为。

来源

语言版本

LanguageVersion 枚举代表从 1.0 到当前版本的特定 Kotlin 版本。每个版本都有关联的属性,用于确定其在编译器中的状态。

来源

语言功能

LanguageFeature 枚举定义了所有语言功能及其引入版本、功能种类和行为。每个功能都有一个状态,可以是:

  • ENABLED - 功能完全可用
  • ENABLED_WITH_WARNING - 功能正常工作,但会产生警告
  • DISABLED - 功能不可用

来源

特性生命周期

Kotlin 中的语言功能遵循特定的生命周期,该生命周期决定了它们如何引入和稳定。

来源

功能演进示例

这是一个功能在不同版本中演进的示例:

阶段描述示例
介绍功能作为实验性功能或在特定的 Kotlin 版本中引入ValueClasses 以实验性功能引入
预览功能可用,但可能产生警告JvmInlineValueClasses 在 KOTLIN_1_5 中
稳定功能完全支持TypeAliases 在 KOTLIN_1_1 中
弃用功能开始产生警告当有替代功能更受青睐时
删除功能完全移除很少发生,通常在长期弃用后

来源

诊断集成

语言版本设置在诊断报告系统中起着至关重要的作用。当代码使用了在指定语言版本中不受支持的功能时,会生成相应的错误或警告。

来源

渐进模式

编译器支持“渐进模式”,该模式会自动启用标记为 canBeEnabledInProgressiveMode = true 的功能。此模式通过启用稳定的即将推出的功能来帮助开发人员为未来的 Kotlin 版本做好准备。

来源

版本状态管理

Kotlin 使用特定的状态标识来管理不同的版本。

此表反映了代码库中的版本状态常量。

常量描述
FIRST_SUPPORTEDKOTLIN_1_8仍在支持的最旧版本
FIRST_NON_DEPRECATEDKOTLIN_2_0第一个未弃用的版本
LATEST_STABLEKOTLIN_2_2最新的稳定版本

来源

在编译器中的使用

Kotlin 编译器在整个过程中都使用语言版本设置系统来做出特定于版本的决策。

来源

配置选项

语言版本设置可以通过多种方式配置:

配置方法描述
GradlekotlinOptions.languageVersion, kotlinOptions.apiVersion
命令行-language-version, -api-version
IntelliJ IDEA项目设置 → Kotlin 编译器 → 语言版本
独立功能-XXLanguage:+FeatureName 用于启用,-XXLanguage:-FeatureName 用于禁用

-progressive 标志也可用于启用所有标记为适合渐进模式的功能。

来源

与诊断的集成

当某个功能在配置的语言版本中不受支持时,会生成特定的诊断消息。

UnsupportedFeature 诊断同时包含功能标志和语言版本设置,这使得错误消息能够准确地解释哪个功能不可用以及它从哪个版本开始支持。

来源