| ## Kotlin compiler arguments |
| |
| Contains a unified representation of Kotlin compiler arguments for current and old Kotlin releases. |
| |
| One representation is a Kotlin-based - check `org.jetbrains.kotlin.arguments.description.compilerArguments`. |
| Another one representation is JSON-based that is bundled into a published jar as `kotlin-compiler-arguments.json` file. |
| |
| ### JSON schema changelog |
| |
| - `1`: Initial schema |
| - `2`: Extended `AllKotlinArgumentTypes` with `klibIrInlinerMode`. New argument value type: `KlibIrInlinerModeType`. |
| - `3`: |
| - Added `affectsCompilationOutcome` and `argumentType` fields to `KotlinCompilerArgument`. |
| - Added `modifiers` field to `KotlinCompilerArgumentsLevel` with new `Modifier` enum (`DEPRECATED`, `SEALED`). |
| - Extended `AllKotlinArgumentTypes` with new enum types: `JvmDefaultMode`, `AbiStabilityMode`, `AssertionsMode`, |
| `JspecifyAnnotationsMode`, `LambdasMode`, `SamConversionsMode`, `StringConcatMode`, `CompatqualAnnotationsMode`, |
| `WhenExpressionsMode`, `JdkRelease`, `AnnotationDefaultTargetMode`, `NameBasedDestructuringMode`, `VerifyIrMode`. |
| - New argument value types: `PathType`, `StringListType`, `SearchPathType`, `PathListType`, `EnumType`. |
| - Add relevant Path argumentType to some String arguments carrying paths in Klib and JS argument |
| - Add enum types to all relevant JS and Wasm arguments that carry a finite set of String values |
| - `4`: |
| - Change `modeName` to `name` in `/types/explicitApiModes/values` |
| - `5`: |
| - Add optional `restrictedToCompilerPhase` that may specify that an argument is only valid for a given compiler phase. |
| - Add optional `deprecatedMessage` that may specify a deprecation message for the argument (`null` if it isn't deprecated). |