Annotations on object literals are now correctly resolved #KT-9320 Fixed

This commit is contained in:
Mikhail Glukhikh
2016-01-28 20:13:24 +03:00
parent a041414f35
commit 84100abd9e
10 changed files with 110 additions and 4 deletions
@@ -0,0 +1,11 @@
annotation class Ann
@Ann open class My
@Target(AnnotationTarget.EXPRESSION)
annotation class AnnExpr
fun foo() {
val v = @Ann @AnnExpr object: My() {}
val w = @Ann @AnnExpr { v: My -> v.hashCode() }
}
@@ -0,0 +1,46 @@
@java.lang.annotation.Retention
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class Ann
@kotlin.annotation.Target
@java.lang.annotation.Retention
@java.lang.annotation.Target
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public abstract class AnnExpr
@Ann
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public final class Kt9320Kt$foo$v$1 {
inner class Kt9320Kt$foo$v$1
method <init>(): void
}
@kotlin.jvm.internal.KotlinSyntheticClass
@kotlin.Metadata
@kotlin.jvm.internal.KotlinFunction
final class Kt9320Kt$foo$w$1 {
public final static field INSTANCE: Kt9320Kt$foo$w$1
inner class Kt9320Kt$foo$w$1
static method <clinit>(): void
method <init>(): void
public final @Ann method invoke(@org.jetbrains.annotations.NotNull p0: My): int
public synthetic method invoke(p0: java.lang.Object): java.lang.Object
}
@kotlin.Metadata
@kotlin.jvm.internal.KotlinFileFacade
public final class Kt9320Kt {
inner class Kt9320Kt$foo$v$1
inner class Kt9320Kt$foo$w$1
public final static method foo(): void
}
@Ann
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public class My {
public method <init>(): void
}
@@ -15,6 +15,5 @@ fun foo(arg: Int): My {
bar @FunAnn { arg }
bar @ExprAnn { arg }
val x = @FunAnn fun() = arg
// TODO: KT-9320: ClsAnn does not appear in bytecode
return (@ClsAnn object: My() {})
}
@@ -41,6 +41,7 @@ final class LiteralsKt$foo$2 {
public synthetic method invoke(): java.lang.Object
}
@ClsAnn
@kotlin.Metadata
@kotlin.jvm.internal.KotlinClass
public final class LiteralsKt$foo$3 {