Introduce "-api-version" CLI option

The `@SinceKotlin("X.Y.Z")` annotation now hides a particular declaration from
resolution when the API version specified by the `-api-version` option is
_less_ than X.Y.Z. The comparison is performed as for versions in Maven:
MavenComparableVersion is in fact a copy of
org.apache.maven.artifact.versioning.ComparableVersion.

Also support "!API_VERSION" directive in diagnostic tests

 #KT-14298 Fixed
This commit is contained in:
Alexander Udalov
2016-09-26 19:56:22 +03:00
parent e3df8ed2fe
commit 167ab1f860
59 changed files with 1758 additions and 57 deletions
@@ -4,6 +4,13 @@ package org.jetbrains.kotlin.gradle.dsl
interface KotlinJsOptions {
/**
* Allow to use declarations only from the specified version of bundled libraries
* Possible values: "1.0", "1.1"
* Default value: "1.1"
*/
var apiVersion: kotlin.String
/**
* Generate kjsm-files (for creating libraries)
* Default value: true
@@ -4,6 +4,11 @@ package org.jetbrains.kotlin.gradle.dsl
internal abstract class KotlinJsOptionsBase : org.jetbrains.kotlin.gradle.dsl.KotlinJsOptions {
private var apiVersionField: kotlin.String? = null
override var apiVersion: kotlin.String
get() = apiVersionField ?: "1.1"
set(value) { apiVersionField = value }
private var kjsmField: kotlin.Boolean? = null
override var kjsm: kotlin.Boolean
get() = kjsmField ?: true
@@ -60,6 +65,7 @@ internal abstract class KotlinJsOptionsBase : org.jetbrains.kotlin.gradle.dsl.Ko
set(value) { verboseField = value }
open fun updateArguments(args: org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments) {
apiVersionField?.let { args.apiVersion = it }
kjsmField?.let { args.kjsm = it }
languageVersionField?.let { args.languageVersion = it }
mainField?.let { args.main = it }
@@ -75,6 +81,7 @@ internal abstract class KotlinJsOptionsBase : org.jetbrains.kotlin.gradle.dsl.Ko
}
internal fun org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments.fillDefaultValues() {
apiVersion = "1.1"
kjsm = true
languageVersion = "1.1"
main = "noCall"
@@ -4,6 +4,13 @@ package org.jetbrains.kotlin.gradle.dsl
interface KotlinJvmOptions {
/**
* Allow to use declarations only from the specified version of bundled libraries
* Possible values: "1.0", "1.1"
* Default value: "1.1"
*/
var apiVersion: kotlin.String
/**
* Include Kotlin runtime in to resulting .jar
* Default value: false
@@ -4,6 +4,11 @@ package org.jetbrains.kotlin.gradle.dsl
internal abstract class KotlinJvmOptionsBase : org.jetbrains.kotlin.gradle.dsl.KotlinJvmOptions {
private var apiVersionField: kotlin.String? = null
override var apiVersion: kotlin.String
get() = apiVersionField ?: "1.1"
set(value) { apiVersionField = value }
private var includeRuntimeField: kotlin.Boolean? = null
override var includeRuntime: kotlin.Boolean
get() = includeRuntimeField ?: false
@@ -50,6 +55,7 @@ internal abstract class KotlinJvmOptionsBase : org.jetbrains.kotlin.gradle.dsl.K
set(value) { verboseField = value }
open fun updateArguments(args: org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments) {
apiVersionField?.let { args.apiVersion = it }
includeRuntimeField?.let { args.includeRuntime = it }
jdkHomeField?.let { args.jdkHome = it }
jvmTargetField?.let { args.jvmTarget = it }
@@ -63,6 +69,7 @@ internal abstract class KotlinJvmOptionsBase : org.jetbrains.kotlin.gradle.dsl.K
}
internal fun org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments.fillDefaultValues() {
apiVersion = "1.1"
includeRuntime = false
jdkHome = null
jvmTarget = "1.6"