Concatenate annotations in type alias expansion.

This commit is contained in:
Dmitry Petrov
2016-10-11 17:57:30 +03:00
parent 7a41d13b41
commit c6350e1afb
5 changed files with 71 additions and 12 deletions
@@ -0,0 +1,21 @@
@Target(AnnotationTarget.TYPE)
annotation class Ann1
@Target(AnnotationTarget.TYPE)
annotation class Ann2
typealias Alias1 = @Ann1 String
typealias Alias2 = @Ann2 Alias1
fun test1(a: Alias2) = a
// NB @ExtensionFunctionType on non-functional type is not an error
typealias Alias3 = @ExtensionFunctionType Alias1
fun test2(a: Alias3) = a
typealias LA1 = List<@Ann2 Alias1>
fun test3(la1: LA1) = la1
// see KT-14318
typealias AliasRepeated = @Ann1 Alias1
fun test4(a: AliasRepeated) = a
fun test4a(a: @Ann1 Alias1) = a
@@ -0,0 +1,26 @@
package
public fun test1(/*0*/ a: Alias2 /* = @Ann2 @Ann1 kotlin.String */): Alias2 /* = @Ann2 @Ann1 kotlin.String */
public fun test2(/*0*/ a: Alias3 /* = @kotlin.ExtensionFunctionType @Ann1 kotlin.String */): Alias3 /* = @kotlin.ExtensionFunctionType @Ann1 kotlin.String */
public fun test3(/*0*/ la1: LA1 /* = kotlin.collections.List<@Ann2 Alias1 /* = @Ann2 @Ann1 kotlin.String */> */): LA1 /* = kotlin.collections.List<@Ann2 Alias1 /* = @Ann2 @Ann1 kotlin.String */> */
public fun test4(/*0*/ a: AliasRepeated /* = @Ann1 @Ann1 kotlin.String */): AliasRepeated /* = @Ann1 @Ann1 kotlin.String */
public fun test4a(/*0*/ a: @Ann1 Alias1 /* = @Ann1 @Ann1 kotlin.String */): @Ann1 Alias1 /* = @Ann1 @Ann1 kotlin.String */
@kotlin.annotation.Target(allowedTargets = {AnnotationTarget.TYPE}) public final annotation class Ann1 : kotlin.Annotation {
public constructor Ann1()
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.annotation.Target(allowedTargets = {AnnotationTarget.TYPE}) public final annotation class Ann2 : kotlin.Annotation {
public constructor Ann2()
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 Alias1 = @Ann1 kotlin.String
public typealias Alias2 = @Ann2 Alias1
public typealias Alias3 = @kotlin.ExtensionFunctionType Alias1
public typealias AliasRepeated = @Ann1 Alias1
public typealias LA1 = kotlin.collections.List<@Ann2 Alias1>