Support @SinceKotlin annotation for type aliases.
This commit is contained in:
@@ -18,12 +18,11 @@ package org.jetbrains.kotlin.resolve
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.config.ApiVersion
|
import org.jetbrains.kotlin.config.ApiVersion
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
|
import org.jetbrains.kotlin.descriptors.*
|
||||||
import org.jetbrains.kotlin.descriptors.ConstructorDescriptor
|
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
|
||||||
import org.jetbrains.kotlin.descriptors.PropertyAccessorDescriptor
|
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.impl.TypeAliasConstructorDescriptor
|
||||||
import org.jetbrains.kotlin.name.FqName
|
import org.jetbrains.kotlin.name.FqName
|
||||||
|
import org.jetbrains.kotlin.resolve.calls.util.FakeCallableDescriptorForTypeAliasObject
|
||||||
|
|
||||||
private val SINCE_KOTLIN_FQ_NAME = FqName("kotlin.SinceKotlin")
|
private val SINCE_KOTLIN_FQ_NAME = FqName("kotlin.SinceKotlin")
|
||||||
|
|
||||||
@@ -70,5 +69,17 @@ private fun DeclarationDescriptor.getOwnSinceKotlinVersion(): ApiVersion? {
|
|||||||
val ctorClass = (this as? ConstructorDescriptor)?.containingDeclaration?.loadAnnotationValue()
|
val ctorClass = (this as? ConstructorDescriptor)?.containingDeclaration?.loadAnnotationValue()
|
||||||
val property = (this as? PropertyAccessorDescriptor)?.correspondingProperty?.loadAnnotationValue()
|
val property = (this as? PropertyAccessorDescriptor)?.correspondingProperty?.loadAnnotationValue()
|
||||||
|
|
||||||
return listOfNotNull(ownVersion, ctorClass, property).max()
|
val typeAliasDescriptor = (this as? TypeAliasDescriptor) ?:
|
||||||
|
(this as? TypeAliasConstructorDescriptor)?.typeAliasDescriptor ?:
|
||||||
|
(this as? FakeCallableDescriptorForTypeAliasObject)?.typeAliasDescriptor
|
||||||
|
|
||||||
|
val typeAlias = typeAliasDescriptor?.loadAnnotationValue()
|
||||||
|
|
||||||
|
// We should check only the upper-most classifier ('A' in 'A<B<C>>') to guarantee binary compatibility.
|
||||||
|
val underlyingClass = typeAliasDescriptor?.classDescriptor?.loadAnnotationValue()
|
||||||
|
|
||||||
|
val underlyingConstructor = (this as? TypeAliasConstructorDescriptor)?.underlyingConstructorDescriptor?.loadAnnotationValue()
|
||||||
|
val underlyingObject = (this as? FakeCallableDescriptorForTypeAliasObject)?.getReferencedObject()?.loadAnnotationValue()
|
||||||
|
|
||||||
|
return listOfNotNull(ownVersion, ctorClass, property, typeAlias, underlyingClass, underlyingConstructor, underlyingObject).max()
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -185,7 +185,7 @@ public interface Comparable</*0*/ in T> {
|
|||||||
public abstract operator fun compareTo(/*0*/ other: T): kotlin.Int
|
public abstract operator fun compareTo(/*0*/ other: T): kotlin.Int
|
||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.TYPEALIAS}) @kotlin.annotation.MustBeDocumented() public final annotation class Deprecated : kotlin.Annotation {
|
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.TYPEALIAS}) @kotlin.annotation.MustBeDocumented public final annotation class Deprecated : kotlin.Annotation {
|
||||||
/*primary*/ public constructor Deprecated(/*0*/ message: kotlin.String, /*1*/ replaceWith: kotlin.ReplaceWith = ..., /*2*/ level: kotlin.DeprecationLevel = ...)
|
/*primary*/ public constructor Deprecated(/*0*/ message: kotlin.String, /*1*/ replaceWith: kotlin.ReplaceWith = ..., /*2*/ level: kotlin.DeprecationLevel = ...)
|
||||||
public final val level: kotlin.DeprecationLevel
|
public final val level: kotlin.DeprecationLevel
|
||||||
public final fun <get-level>(): kotlin.DeprecationLevel
|
public final fun <get-level>(): kotlin.DeprecationLevel
|
||||||
@@ -653,7 +653,7 @@ public final class ShortArray : kotlin.Cloneable {
|
|||||||
public final operator fun set(/*0*/ index: kotlin.Int, /*1*/ value: kotlin.Short): kotlin.Unit
|
public final operator fun set(/*0*/ index: kotlin.Int, /*1*/ value: kotlin.Short): kotlin.Unit
|
||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER}) @kotlin.annotation.Retention(value = AnnotationRetention.BINARY) @kotlin.annotation.MustBeDocumented public final annotation class SinceKotlin : kotlin.Annotation {
|
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.TYPEALIAS}) @kotlin.annotation.Retention(value = AnnotationRetention.BINARY) @kotlin.annotation.MustBeDocumented public final annotation class SinceKotlin : kotlin.Annotation {
|
||||||
/*primary*/ public constructor SinceKotlin(/*0*/ version: kotlin.String)
|
/*primary*/ public constructor SinceKotlin(/*0*/ version: kotlin.String)
|
||||||
public final val version: kotlin.String
|
public final val version: kotlin.String
|
||||||
public final fun <get-version>(): kotlin.String
|
public final fun <get-version>(): kotlin.String
|
||||||
|
|||||||
+2
-2
@@ -185,7 +185,7 @@ public interface Comparable</*0*/ in T> {
|
|||||||
public abstract operator fun compareTo(/*0*/ other: T): kotlin.Int
|
public abstract operator fun compareTo(/*0*/ other: T): kotlin.Int
|
||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.TYPEALIAS}) @kotlin.annotation.MustBeDocumented() public final annotation class Deprecated : kotlin.Annotation {
|
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.TYPEALIAS}) @kotlin.annotation.MustBeDocumented public final annotation class Deprecated : kotlin.Annotation {
|
||||||
/*primary*/ public constructor Deprecated(/*0*/ message: kotlin.String, /*1*/ replaceWith: kotlin.ReplaceWith = ..., /*2*/ level: kotlin.DeprecationLevel = ...)
|
/*primary*/ public constructor Deprecated(/*0*/ message: kotlin.String, /*1*/ replaceWith: kotlin.ReplaceWith = ..., /*2*/ level: kotlin.DeprecationLevel = ...)
|
||||||
public final val level: kotlin.DeprecationLevel
|
public final val level: kotlin.DeprecationLevel
|
||||||
public final fun <get-level>(): kotlin.DeprecationLevel
|
public final fun <get-level>(): kotlin.DeprecationLevel
|
||||||
@@ -657,7 +657,7 @@ public final class ShortArray : kotlin.Cloneable, java.io.Serializable {
|
|||||||
public final operator fun set(/*0*/ index: kotlin.Int, /*1*/ value: kotlin.Short): kotlin.Unit
|
public final operator fun set(/*0*/ index: kotlin.Int, /*1*/ value: kotlin.Short): kotlin.Unit
|
||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER}) @kotlin.annotation.Retention(value = AnnotationRetention.BINARY) @kotlin.annotation.MustBeDocumented public final annotation class SinceKotlin : kotlin.Annotation {
|
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.TYPEALIAS}) @kotlin.annotation.Retention(value = AnnotationRetention.BINARY) @kotlin.annotation.MustBeDocumented public final annotation class SinceKotlin : kotlin.Annotation {
|
||||||
/*primary*/ public constructor SinceKotlin(/*0*/ version: kotlin.String)
|
/*primary*/ public constructor SinceKotlin(/*0*/ version: kotlin.String)
|
||||||
public final val version: kotlin.String
|
public final val version: kotlin.String
|
||||||
public final fun <get-version>(): kotlin.String
|
public final fun <get-version>(): kotlin.String
|
||||||
|
|||||||
+2
-2
@@ -187,7 +187,7 @@ public interface Comparable</*0*/ in T> {
|
|||||||
public abstract operator fun compareTo(/*0*/ other: T): kotlin.Int
|
public abstract operator fun compareTo(/*0*/ other: T): kotlin.Int
|
||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.TYPEALIAS}) @kotlin.annotation.MustBeDocumented() public final annotation class Deprecated : kotlin.Annotation {
|
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.TYPEALIAS}) @kotlin.annotation.MustBeDocumented public final annotation class Deprecated : kotlin.Annotation {
|
||||||
/*primary*/ public constructor Deprecated(/*0*/ message: kotlin.String, /*1*/ replaceWith: kotlin.ReplaceWith = ..., /*2*/ level: kotlin.DeprecationLevel = ...)
|
/*primary*/ public constructor Deprecated(/*0*/ message: kotlin.String, /*1*/ replaceWith: kotlin.ReplaceWith = ..., /*2*/ level: kotlin.DeprecationLevel = ...)
|
||||||
public final val level: kotlin.DeprecationLevel
|
public final val level: kotlin.DeprecationLevel
|
||||||
public final fun <get-level>(): kotlin.DeprecationLevel
|
public final fun <get-level>(): kotlin.DeprecationLevel
|
||||||
@@ -659,7 +659,7 @@ public final class ShortArray : kotlin.Cloneable, java.io.Serializable {
|
|||||||
public final operator fun set(/*0*/ index: kotlin.Int, /*1*/ value: kotlin.Short): kotlin.Unit
|
public final operator fun set(/*0*/ index: kotlin.Int, /*1*/ value: kotlin.Short): kotlin.Unit
|
||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER}) @kotlin.annotation.Retention(value = AnnotationRetention.BINARY) @kotlin.annotation.MustBeDocumented public final annotation class SinceKotlin : kotlin.Annotation {
|
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.TYPEALIAS}) @kotlin.annotation.Retention(value = AnnotationRetention.BINARY) @kotlin.annotation.MustBeDocumented public final annotation class SinceKotlin : kotlin.Annotation {
|
||||||
/*primary*/ public constructor SinceKotlin(/*0*/ version: kotlin.String)
|
/*primary*/ public constructor SinceKotlin(/*0*/ version: kotlin.String)
|
||||||
public final val version: kotlin.String
|
public final val version: kotlin.String
|
||||||
public final fun <get-version>(): kotlin.String
|
public final fun <get-version>(): kotlin.String
|
||||||
|
|||||||
+2
-2
@@ -185,7 +185,7 @@ public interface Comparable</*0*/ in T> {
|
|||||||
public abstract operator fun compareTo(/*0*/ other: T): kotlin.Int
|
public abstract operator fun compareTo(/*0*/ other: T): kotlin.Int
|
||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.TYPEALIAS}) @kotlin.annotation.MustBeDocumented() public final annotation class Deprecated : kotlin.Annotation {
|
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY, AnnotationTarget.ANNOTATION_CLASS, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.TYPEALIAS}) @kotlin.annotation.MustBeDocumented public final annotation class Deprecated : kotlin.Annotation {
|
||||||
/*primary*/ public constructor Deprecated(/*0*/ message: kotlin.String, /*1*/ replaceWith: kotlin.ReplaceWith = ..., /*2*/ level: kotlin.DeprecationLevel = ...)
|
/*primary*/ public constructor Deprecated(/*0*/ message: kotlin.String, /*1*/ replaceWith: kotlin.ReplaceWith = ..., /*2*/ level: kotlin.DeprecationLevel = ...)
|
||||||
public final val level: kotlin.DeprecationLevel
|
public final val level: kotlin.DeprecationLevel
|
||||||
public final fun <get-level>(): kotlin.DeprecationLevel
|
public final fun <get-level>(): kotlin.DeprecationLevel
|
||||||
@@ -657,7 +657,7 @@ public final class ShortArray : kotlin.Cloneable, java.io.Serializable {
|
|||||||
public final operator fun set(/*0*/ index: kotlin.Int, /*1*/ value: kotlin.Short): kotlin.Unit
|
public final operator fun set(/*0*/ index: kotlin.Int, /*1*/ value: kotlin.Short): kotlin.Unit
|
||||||
}
|
}
|
||||||
|
|
||||||
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER}) @kotlin.annotation.Retention(value = AnnotationRetention.BINARY) @kotlin.annotation.MustBeDocumented public final annotation class SinceKotlin : kotlin.Annotation {
|
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.CLASS, AnnotationTarget.PROPERTY, AnnotationTarget.CONSTRUCTOR, AnnotationTarget.FUNCTION, AnnotationTarget.PROPERTY_GETTER, AnnotationTarget.PROPERTY_SETTER, AnnotationTarget.TYPEALIAS}) @kotlin.annotation.Retention(value = AnnotationRetention.BINARY) @kotlin.annotation.MustBeDocumented public final annotation class SinceKotlin : kotlin.Annotation {
|
||||||
/*primary*/ public constructor SinceKotlin(/*0*/ version: kotlin.String)
|
/*primary*/ public constructor SinceKotlin(/*0*/ version: kotlin.String)
|
||||||
public final val version: kotlin.String
|
public final val version: kotlin.String
|
||||||
public final fun <get-version>(): kotlin.String
|
public final fun <get-version>(): kotlin.String
|
||||||
|
|||||||
Vendored
+20
@@ -0,0 +1,20 @@
|
|||||||
|
// !API_VERSION: 1.0
|
||||||
|
|
||||||
|
@SinceKotlin("1.1")
|
||||||
|
open class C1
|
||||||
|
|
||||||
|
typealias C1_Alias = <!API_NOT_AVAILABLE!>C1<!>
|
||||||
|
|
||||||
|
open class C2(val x: Int) {
|
||||||
|
@SinceKotlin("1.1")
|
||||||
|
constructor() : this(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
typealias C2_Alias = C2
|
||||||
|
|
||||||
|
val test1 = <!UNRESOLVED_REFERENCE!>C1_Alias<!>()
|
||||||
|
val test2 = C2_Alias(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||||
|
|
||||||
|
class Test3 : <!UNRESOLVED_REFERENCE, API_NOT_AVAILABLE, DEBUG_INFO_UNRESOLVED_WITH_TARGET!>C1_Alias<!>()
|
||||||
|
|
||||||
|
class Test4 : C2_Alias(<!NO_VALUE_FOR_PARAMETER!>)<!>
|
||||||
Vendored
+37
@@ -0,0 +1,37 @@
|
|||||||
|
package
|
||||||
|
|
||||||
|
public val test1: [ERROR : Type for C1_Alias()]
|
||||||
|
public val test2: C2
|
||||||
|
|
||||||
|
@kotlin.SinceKotlin(version = "1.1") public open class C1 {
|
||||||
|
public constructor C1()
|
||||||
|
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 open class C2 {
|
||||||
|
@kotlin.SinceKotlin(version = "1.1") public constructor C2()
|
||||||
|
public constructor C2(/*0*/ x: kotlin.Int)
|
||||||
|
public final val x: kotlin.Int
|
||||||
|
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 class Test3 : C1_Alias /* = C1 */ {
|
||||||
|
public constructor Test3()
|
||||||
|
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 class Test4 : C2_Alias /* = C2 */ {
|
||||||
|
public constructor Test4()
|
||||||
|
public final override /*1*/ /*fake_override*/ val x: kotlin.Int
|
||||||
|
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 typealias C1_Alias = C1
|
||||||
|
public typealias C2_Alias = C2
|
||||||
+11
@@ -0,0 +1,11 @@
|
|||||||
|
// !API_VERSION: 1.0
|
||||||
|
|
||||||
|
@SinceKotlin("1.1")
|
||||||
|
object Since_1_1 {
|
||||||
|
val x = 42
|
||||||
|
}
|
||||||
|
|
||||||
|
typealias Since_1_1_Alias = <!API_NOT_AVAILABLE!>Since_1_1<!>
|
||||||
|
|
||||||
|
val test1 = <!API_NOT_AVAILABLE!>Since_1_1_Alias<!>
|
||||||
|
val test2 = <!API_NOT_AVAILABLE!>Since_1_1_Alias<!>.x
|
||||||
Vendored
+13
@@ -0,0 +1,13 @@
|
|||||||
|
package
|
||||||
|
|
||||||
|
public val test1: [ERROR : Type for Since_1_1_Alias]
|
||||||
|
public val test2: kotlin.Int = 42
|
||||||
|
|
||||||
|
@kotlin.SinceKotlin(version = "1.1") public object Since_1_1 {
|
||||||
|
private constructor Since_1_1()
|
||||||
|
public final val x: kotlin.Int = 42
|
||||||
|
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 typealias Since_1_1_Alias = Since_1_1
|
||||||
+21
@@ -0,0 +1,21 @@
|
|||||||
|
// !API_VERSION: 1.0
|
||||||
|
|
||||||
|
@SinceKotlin("1.1")
|
||||||
|
class Since_1_1
|
||||||
|
|
||||||
|
class C
|
||||||
|
|
||||||
|
typealias Since_1_1_Alias = <!API_NOT_AVAILABLE!>Since_1_1<!>
|
||||||
|
|
||||||
|
typealias L = List<<!API_NOT_AVAILABLE!>Since_1_1<!>>
|
||||||
|
|
||||||
|
@SinceKotlin("1.1")
|
||||||
|
typealias C_1_1_Alias = C
|
||||||
|
|
||||||
|
fun test1(x: <!API_NOT_AVAILABLE!>Since_1_1_Alias<!>) = x
|
||||||
|
|
||||||
|
fun test2(x: <!API_NOT_AVAILABLE!>C_1_1_Alias<!>) = x
|
||||||
|
|
||||||
|
fun test3(x: List<<!API_NOT_AVAILABLE!>C_1_1_Alias<!>>) = x
|
||||||
|
|
||||||
|
fun test4(x: L) = x
|
||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
package
|
||||||
|
|
||||||
|
public fun test1(/*0*/ x: Since_1_1_Alias /* = Since_1_1 */): Since_1_1_Alias /* = Since_1_1 */
|
||||||
|
public fun test2(/*0*/ x: C_1_1_Alias /* = C */): C_1_1_Alias /* = C */
|
||||||
|
public fun test3(/*0*/ x: kotlin.collections.List<C_1_1_Alias /* = C */>): kotlin.collections.List<C_1_1_Alias /* = C */>
|
||||||
|
public fun test4(/*0*/ x: L /* = kotlin.collections.List<Since_1_1> */): L /* = kotlin.collections.List<Since_1_1> */
|
||||||
|
|
||||||
|
public final class C {
|
||||||
|
public constructor C()
|
||||||
|
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 final class Since_1_1 {
|
||||||
|
public constructor Since_1_1()
|
||||||
|
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 typealias C_1_1_Alias = C
|
||||||
|
public typealias L = kotlin.collections.List<Since_1_1>
|
||||||
|
public typealias Since_1_1_Alias = Since_1_1
|
||||||
+18
@@ -0,0 +1,18 @@
|
|||||||
|
// !API_VERSION: 1.0
|
||||||
|
|
||||||
|
// FILE: a.kt
|
||||||
|
package a
|
||||||
|
|
||||||
|
@SinceKotlin("1.1")
|
||||||
|
class Since_1_1
|
||||||
|
|
||||||
|
typealias Since_1_1_Alias = <!API_NOT_AVAILABLE!>Since_1_1<!>
|
||||||
|
|
||||||
|
@SinceKotlin("1.1")
|
||||||
|
typealias Alias_1_1 = String
|
||||||
|
|
||||||
|
// FILE: b.kt
|
||||||
|
package b
|
||||||
|
|
||||||
|
import a.<!API_NOT_AVAILABLE!>Since_1_1_Alias<!>
|
||||||
|
import a.<!API_NOT_AVAILABLE!>Alias_1_1<!>
|
||||||
+16
@@ -0,0 +1,16 @@
|
|||||||
|
package
|
||||||
|
|
||||||
|
package a {
|
||||||
|
|
||||||
|
@kotlin.SinceKotlin(version = "1.1") public final class Since_1_1 {
|
||||||
|
public constructor Since_1_1()
|
||||||
|
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 typealias Alias_1_1 = kotlin.String
|
||||||
|
public typealias Since_1_1_Alias = a.Since_1_1
|
||||||
|
}
|
||||||
|
|
||||||
|
package b {
|
||||||
|
}
|
||||||
@@ -19573,6 +19573,30 @@ public class DiagnosticsTestGenerated extends AbstractDiagnosticsTest {
|
|||||||
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/sourceCompatibility/apiVersion/sinceOldVersionIsOK.kt");
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/sourceCompatibility/apiVersion/sinceOldVersionIsOK.kt");
|
||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("typealiasesAsConstructors.kt")
|
||||||
|
public void testTypealiasesAsConstructors() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/sourceCompatibility/apiVersion/typealiasesAsConstructors.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("typealiasesAsObjects.kt")
|
||||||
|
public void testTypealiasesAsObjects() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/sourceCompatibility/apiVersion/typealiasesAsObjects.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("typealiasesAsTypes.kt")
|
||||||
|
public void testTypealiasesAsTypes() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/sourceCompatibility/apiVersion/typealiasesAsTypes.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("typealiasesOnImport.kt")
|
||||||
|
public void testTypealiasesOnImport() throws Exception {
|
||||||
|
String fileName = KotlinTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/sourceCompatibility/apiVersion/typealiasesOnImport.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@TestMetadata("compiler/testData/diagnostics/tests/sourceCompatibility/noBoundCallableReferences")
|
@TestMetadata("compiler/testData/diagnostics/tests/sourceCompatibility/noBoundCallableReferences")
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ public annotation class UnsafeVariance
|
|||||||
* @property version the version in the following formats: `<major>.<minor>` or `<major>.<minor>.<patch>`, where major, minor and patch
|
* @property version the version in the following formats: `<major>.<minor>` or `<major>.<minor>.<patch>`, where major, minor and patch
|
||||||
* are non-negative integer numbers without leading zeros.
|
* are non-negative integer numbers without leading zeros.
|
||||||
*/
|
*/
|
||||||
@Target(CLASS, PROPERTY, CONSTRUCTOR, FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER)
|
@Target(CLASS, PROPERTY, CONSTRUCTOR, FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER, TYPEALIAS)
|
||||||
@Retention(AnnotationRetention.BINARY)
|
@Retention(AnnotationRetention.BINARY)
|
||||||
@MustBeDocumented
|
@MustBeDocumented
|
||||||
public annotation class SinceKotlin(val version: String)
|
public annotation class SinceKotlin(val version: String)
|
||||||
|
|||||||
Reference in New Issue
Block a user