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:
+11
@@ -0,0 +1,11 @@
|
||||
// !API_VERSION: 1.0
|
||||
|
||||
@SinceKotlin("1.1")
|
||||
annotation class Anno1(val s: String)
|
||||
|
||||
annotation class Anno2 @SinceKotlin("1.1") constructor()
|
||||
|
||||
|
||||
@<!UNRESOLVED_REFERENCE, API_NOT_AVAILABLE, DEBUG_INFO_UNRESOLVED_WITH_TARGET!>Anno1<!>("")
|
||||
@<!UNRESOLVED_REFERENCE, DEBUG_INFO_UNRESOLVED_WITH_TARGET!>Anno2<!>
|
||||
fun t1() {}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
package
|
||||
|
||||
@Anno1() @Anno2() public fun t1(): kotlin.Unit
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.1") public final annotation class Anno1 : kotlin.Annotation {
|
||||
public constructor Anno1(/*0*/ s: kotlin.String)
|
||||
public final val s: kotlin.String
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public final annotation class Anno2 : kotlin.Annotation {
|
||||
@kotlin.SinceKotlin(version = "1.1") public constructor Anno2()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
Vendored
+19
@@ -0,0 +1,19 @@
|
||||
// !API_VERSION: 1.0
|
||||
|
||||
@SinceKotlin("1.1")
|
||||
open class Foo
|
||||
|
||||
class Bar @SinceKotlin("1.1") constructor()
|
||||
|
||||
@SinceKotlin("1.0")
|
||||
class Baz @SinceKotlin("1.1") constructor()
|
||||
|
||||
|
||||
fun t1(): <!API_NOT_AVAILABLE!>Foo<!> = <!UNRESOLVED_REFERENCE!>Foo<!>()
|
||||
|
||||
// TODO: do not report API_NOT_AVAILABLE twice
|
||||
fun t2() = object : <!UNRESOLVED_REFERENCE, API_NOT_AVAILABLE, API_NOT_AVAILABLE, DEBUG_INFO_UNRESOLVED_WITH_TARGET!>Foo<!>() {}
|
||||
|
||||
fun t3(): Bar? = <!UNRESOLVED_REFERENCE!>Bar<!>()
|
||||
|
||||
fun t4(): Baz = <!UNRESOLVED_REFERENCE!>Baz<!>()
|
||||
Vendored
+27
@@ -0,0 +1,27 @@
|
||||
package
|
||||
|
||||
public fun t1(): Foo
|
||||
public fun t2(): Foo
|
||||
public fun t3(): Bar?
|
||||
public fun t4(): Baz
|
||||
|
||||
public final class Bar {
|
||||
@kotlin.SinceKotlin(version = "1.1") public constructor Bar()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.0") public final class Baz {
|
||||
@kotlin.SinceKotlin(version = "1.1") public constructor Baz()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.1") public open class Foo {
|
||||
public constructor Foo()
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+34
@@ -0,0 +1,34 @@
|
||||
// !API_VERSION: 1.0
|
||||
// FILE: J.java
|
||||
|
||||
public interface J {
|
||||
void foo();
|
||||
}
|
||||
|
||||
// FILE: test.kt
|
||||
|
||||
interface I10 {
|
||||
@SinceKotlin("1.0")
|
||||
fun foo()
|
||||
}
|
||||
|
||||
interface I11 {
|
||||
@SinceKotlin("1.1")
|
||||
fun foo()
|
||||
}
|
||||
|
||||
fun f1(x: I10) = x.foo()
|
||||
fun f2(x: I11) = x.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
fun f3(x: J) = x.foo()
|
||||
|
||||
interface BothI1 : I10, I11
|
||||
fun f4(x: BothI1) = x.foo()
|
||||
|
||||
interface BothI2 : I11, I10
|
||||
fun f5(x: BothI2) = x.foo()
|
||||
|
||||
interface JAndI10 : J, I10
|
||||
fun f6(x: JAndI10) = x.foo()
|
||||
|
||||
interface JAndI11 : J, I11
|
||||
fun f7(x: JAndI11) = x.foo()
|
||||
+59
@@ -0,0 +1,59 @@
|
||||
package
|
||||
|
||||
public /*synthesized*/ fun J(/*0*/ function: () -> kotlin.Unit): J
|
||||
public fun f1(/*0*/ x: I10): kotlin.Unit
|
||||
public fun f2(/*0*/ x: I11): [ERROR : Error function type]
|
||||
public fun f3(/*0*/ x: J): kotlin.Unit
|
||||
public fun f4(/*0*/ x: BothI1): kotlin.Unit
|
||||
public fun f5(/*0*/ x: BothI2): kotlin.Unit
|
||||
public fun f6(/*0*/ x: JAndI10): kotlin.Unit
|
||||
public fun f7(/*0*/ x: JAndI11): kotlin.Unit
|
||||
|
||||
public interface BothI1 : I10, I11 {
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
@kotlin.SinceKotlin(version = "1.0") public abstract override /*2*/ /*fake_override*/ fun foo(): kotlin.Unit
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface BothI2 : I11, I10 {
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
@kotlin.SinceKotlin(version = "1.1") public abstract override /*2*/ /*fake_override*/ fun foo(): kotlin.Unit
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface I10 {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
@kotlin.SinceKotlin(version = "1.0") public abstract fun foo(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface I11 {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
@kotlin.SinceKotlin(version = "1.1") public abstract fun foo(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface J {
|
||||
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract fun foo(): kotlin.Unit
|
||||
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface JAndI10 : J, I10 {
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract override /*2*/ /*fake_override*/ fun foo(): kotlin.Unit
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
|
||||
public interface JAndI11 : J, I11 {
|
||||
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
|
||||
public abstract override /*2*/ /*fake_override*/ fun foo(): kotlin.Unit
|
||||
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
|
||||
public open override /*2*/ /*fake_override*/ fun toString(): kotlin.String
|
||||
}
|
||||
+48
@@ -0,0 +1,48 @@
|
||||
// !API_VERSION: 1.0
|
||||
|
||||
val v1: String
|
||||
@SinceKotlin("1.1")
|
||||
get() = ""
|
||||
|
||||
@SinceKotlin("1.1")
|
||||
val v2 = ""
|
||||
|
||||
var v3: String
|
||||
@SinceKotlin("1.1")
|
||||
get() = ""
|
||||
set(value) {}
|
||||
|
||||
var v4: String
|
||||
get() = ""
|
||||
@SinceKotlin("1.1")
|
||||
set(value) {}
|
||||
|
||||
var v5: String
|
||||
@SinceKotlin("1.1")
|
||||
get() = ""
|
||||
@SinceKotlin("1.1")
|
||||
set(value) {}
|
||||
|
||||
@SinceKotlin("1.1")
|
||||
var v6: String
|
||||
get() = ""
|
||||
set(value) {}
|
||||
|
||||
@SinceKotlin("1.0")
|
||||
val v7: String
|
||||
@SinceKotlin("1.1")
|
||||
get() = ""
|
||||
|
||||
fun test() {
|
||||
<!API_NOT_AVAILABLE!>v1<!>
|
||||
<!UNRESOLVED_REFERENCE!>v2<!>
|
||||
<!API_NOT_AVAILABLE!>v3<!>
|
||||
v3 = ""
|
||||
v4
|
||||
<!API_NOT_AVAILABLE!>v4<!> = ""
|
||||
<!API_NOT_AVAILABLE!>v5<!>
|
||||
<!API_NOT_AVAILABLE!>v5<!> = ""
|
||||
<!UNRESOLVED_REFERENCE!>v6<!>
|
||||
<!UNRESOLVED_REFERENCE!>v6<!> = ""
|
||||
<!API_NOT_AVAILABLE!>v7<!>
|
||||
}
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
package
|
||||
|
||||
public val v1: kotlin.String
|
||||
@kotlin.SinceKotlin(version = "1.1") public val v2: kotlin.String = ""
|
||||
public var v3: kotlin.String
|
||||
public var v4: kotlin.String
|
||||
public var v5: kotlin.String
|
||||
@kotlin.SinceKotlin(version = "1.1") public var v6: kotlin.String
|
||||
@kotlin.SinceKotlin(version = "1.0") public val v7: kotlin.String
|
||||
public fun test(): kotlin.Unit
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
// !API_VERSION: 1.0
|
||||
|
||||
@SinceKotlin("1.1")
|
||||
fun f() {}
|
||||
|
||||
@SinceKotlin("1.1")
|
||||
var p = Unit
|
||||
|
||||
@SinceKotlin("1.1.2")
|
||||
fun z() {}
|
||||
|
||||
|
||||
fun t1() = <!UNRESOLVED_REFERENCE!>f<!>()
|
||||
|
||||
fun t2() = <!UNRESOLVED_REFERENCE!>p<!>
|
||||
|
||||
fun t3() { <!UNRESOLVED_REFERENCE!>p<!> = Unit }
|
||||
|
||||
fun t4() { <!UNRESOLVED_REFERENCE!>z<!>() }
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
package
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.1") public var p: kotlin.Unit
|
||||
@kotlin.SinceKotlin(version = "1.1") public fun f(): kotlin.Unit
|
||||
public fun t1(): [ERROR : Error function type]
|
||||
public fun t2(): [ERROR : Error function type]
|
||||
public fun t3(): kotlin.Unit
|
||||
public fun t4(): kotlin.Unit
|
||||
@kotlin.SinceKotlin(version = "1.1.2") public fun z(): kotlin.Unit
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
// !API_VERSION: 1.1
|
||||
|
||||
@SinceKotlin("0.9")
|
||||
fun ok1() {}
|
||||
|
||||
@SinceKotlin("1.0")
|
||||
fun ok2() {}
|
||||
|
||||
@SinceKotlin("1.1")
|
||||
fun ok3() {}
|
||||
|
||||
@SinceKotlin("0.9.9")
|
||||
fun ok4() {}
|
||||
|
||||
fun t1() = ok1()
|
||||
fun t2() = ok2()
|
||||
fun t3() = ok3()
|
||||
fun t4() = ok4()
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
package
|
||||
|
||||
@kotlin.SinceKotlin(version = "0.9") public fun ok1(): kotlin.Unit
|
||||
@kotlin.SinceKotlin(version = "1.0") public fun ok2(): kotlin.Unit
|
||||
@kotlin.SinceKotlin(version = "1.1") public fun ok3(): kotlin.Unit
|
||||
@kotlin.SinceKotlin(version = "0.9.9") public fun ok4(): kotlin.Unit
|
||||
public fun t1(): kotlin.Unit
|
||||
public fun t2(): kotlin.Unit
|
||||
public fun t3(): kotlin.Unit
|
||||
public fun t4(): kotlin.Unit
|
||||
Reference in New Issue
Block a user