Support nested classes in annotation classes

#KT-16962 In Progress
This commit is contained in:
Alexander Udalov
2017-12-28 16:51:42 +01:00
parent 5947b4eb8e
commit a46a2b9b1c
20 changed files with 207 additions and 34 deletions
@@ -1,28 +1,28 @@
annotation class Annotation2() <!ANNOTATION_CLASS_WITH_BODY!>{
public val s: String = ""
}<!>
annotation class Annotation2() {
<!ANNOTATION_CLASS_MEMBER!>public val s: String = ""<!>
}
annotation class Annotation3() <!ANNOTATION_CLASS_WITH_BODY!>{
public fun foo() {}
}<!>
annotation class Annotation3() {
<!ANNOTATION_CLASS_MEMBER!>public fun foo() {}<!>
}
annotation class Annotation4() <!ANNOTATION_CLASS_WITH_BODY!>{
class Foo() {}
}<!>
annotation class Annotation4() {
<!ANNOTATION_CLASS_MEMBER!>class Foo() {}<!>
}
annotation class Annotation5() <!ANNOTATION_CLASS_WITH_BODY!>{
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>companion<!> object {}
}<!>
annotation class Annotation5() {
companion <!ANNOTATION_CLASS_MEMBER!>object<!> {}
}
annotation class Annotation6() <!ANNOTATION_CLASS_WITH_BODY!>{
init {}
}<!>
annotation class Annotation6() {
<!ANNOTATION_CLASS_MEMBER!>init {}<!>
}
annotation class Annotation1() <!ANNOTATION_CLASS_WITH_BODY!>{}<!>
annotation class Annotation1() {}
annotation class Annotation7(val name: String) <!ANNOTATION_CLASS_WITH_BODY!>{}<!>
annotation class Annotation7(val name: String) {}
annotation class Annotation8(<!VAR_ANNOTATION_PARAMETER!>var<!> name: String = "") <!ANNOTATION_CLASS_WITH_BODY!>{}<!>
annotation class Annotation8(<!VAR_ANNOTATION_PARAMETER!>var<!> name: String = "") {}
annotation class Annotation9(val name: String)
@@ -0,0 +1,23 @@
// !LANGUAGE: +NestedClassesInAnnotations
annotation class Foo {
class Nested
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>inner<!> class Inner
enum class E { A, B }
object O
interface I
annotation class Anno(val e: E)
companion object {
val x = 1
const val y = ""
}
<!ANNOTATION_CLASS_MEMBER!>constructor(<!UNUSED_PARAMETER!>s<!>: Int) {}<!>
<!ANNOTATION_CLASS_MEMBER!>init {}<!>
<!ANNOTATION_CLASS_MEMBER!>fun function() {}<!>
<!ANNOTATION_CLASS_MEMBER!>val property get() = Unit<!>
}
@@ -0,0 +1,75 @@
package
public final annotation class Foo : kotlin.Annotation {
public constructor Foo(/*0*/ s: kotlin.Int)
public final val property: kotlin.Unit
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public final fun function(): kotlin.Unit
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
public final annotation class Anno : kotlin.Annotation {
public constructor Anno(/*0*/ e: Foo.E)
public final val e: Foo.E
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 companion object Companion {
private constructor Companion()
public final val x: kotlin.Int = 1
public const final val y: 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 enum class E : kotlin.Enum<Foo.E> {
enum entry A
enum entry B
private constructor E()
public final override /*1*/ /*fake_override*/ val name: kotlin.String
public final override /*1*/ /*fake_override*/ val ordinal: kotlin.Int
protected final override /*1*/ /*fake_override*/ fun clone(): kotlin.Any
public final override /*1*/ /*fake_override*/ fun compareTo(/*0*/ other: Foo.E): kotlin.Int
public final override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
protected/*protected and package*/ final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun finalize(): kotlin.Unit
public final override /*1*/ /*fake_override*/ /*isHiddenForResolutionEverywhereBesideSupercalls*/ fun getDeclaringClass(): java.lang.Class<Foo.E!>!
public final override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String
// Static members
public final /*synthesized*/ fun valueOf(/*0*/ value: kotlin.String): Foo.E
public final /*synthesized*/ fun values(): kotlin.Array<Foo.E>
}
public interface I {
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 inner class Inner {
public constructor Inner()
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 Nested {
public constructor Nested()
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 object O {
private constructor O()
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
}
}
@@ -25,9 +25,9 @@ enum class<!SYNTAX!><!> {
}
annotation class<!SYNTAX!><!> <!ANNOTATION_CLASS_WITH_BODY!>{
annotation class<!SYNTAX!><!> {
}<!>
}
class Outer {
<!FUNCTION_DECLARATION_WITH_NO_NAME!>fun ()<!> {
@@ -52,9 +52,9 @@ class Outer {
}<!>
<!REDECLARATION!>annotation class<!SYNTAX!><!> <!ANNOTATION_CLASS_WITH_BODY!>{
<!REDECLARATION!>annotation class<!SYNTAX!><!> {
}<!><!>
}<!>
}
fun outerFun() {
@@ -23,4 +23,4 @@ object<!SYNTAX!><!> {
enum class<!SYNTAX!><!> {}
annotation class<!SYNTAX!><!> <!ANNOTATION_CLASS_WITH_BODY!>{}<!>
annotation class<!SYNTAX!><!> {}