diff --git a/compiler/testData/codegen/box/properties/classObjectProperties.kt b/compiler/testData/codegen/box/properties/classObjectProperties.kt new file mode 100644 index 00000000000..17afac79eb2 --- /dev/null +++ b/compiler/testData/codegen/box/properties/classObjectProperties.kt @@ -0,0 +1,58 @@ +class Test { + + class object { + + public val prop1 : Int = 10 + + public var prop2 : Int = 11 + protected set + + public val prop3: Int = 12 + get() { + return $prop3 + } + + var prop4 : Int = 13 + + fun incProp4() { + $prop4++ + } + + + public var prop5 : Int = 14 + + public var prop7 : Int = 20 + set(i: Int) { + $prop7++ + } + } + +} + + +fun box(): String { + val t = Test; + + if (t.prop1 != 10) return "fail1"; + + if (t.prop2 != 11) return "fail2"; + + if (t.prop3 != 12) return "fail3"; + + if (t.prop4 != 13) return "fail4"; + + t.incProp4() + if (t.prop4 != 14) return "fail4.inc"; + + if (t.prop5 != 14) return "fail5"; + + t.prop5 = 1414 + if (t.prop5 != 1414) return "fail6"; + + if (t.prop7 != 20) return "fail7"; + + t.prop7 = 1000000 + if (t.prop7 != 21) return "fail8"; + + return "OK" +} \ No newline at end of file diff --git a/compiler/testData/compileJavaAgainstKotlin/staticFields/staticClassProperty.java b/compiler/testData/compileJavaAgainstKotlin/staticFields/staticClassProperty.java new file mode 100644 index 00000000000..7b4a231ad93 --- /dev/null +++ b/compiler/testData/compileJavaAgainstKotlin/staticFields/staticClassProperty.java @@ -0,0 +1,8 @@ +class staticProperty { + + public static void main(String[] args) { + int i = Test.valProp; + int j = Test.varProp; + Test.varProp = 100; + } +} \ No newline at end of file diff --git a/compiler/testData/compileJavaAgainstKotlin/staticFields/staticClassProperty.kt b/compiler/testData/compileJavaAgainstKotlin/staticFields/staticClassProperty.kt new file mode 100644 index 00000000000..30261421a54 --- /dev/null +++ b/compiler/testData/compileJavaAgainstKotlin/staticFields/staticClassProperty.kt @@ -0,0 +1,9 @@ +class Test { + + class object { + public val valProp: Int = 10 + + public var varProp: Int = 10 + } + +} \ No newline at end of file diff --git a/compiler/testData/compileJavaAgainstKotlin/staticFields/staticTraitProperty.java b/compiler/testData/compileJavaAgainstKotlin/staticFields/staticTraitProperty.java new file mode 100644 index 00000000000..7b4a231ad93 --- /dev/null +++ b/compiler/testData/compileJavaAgainstKotlin/staticFields/staticTraitProperty.java @@ -0,0 +1,8 @@ +class staticProperty { + + public static void main(String[] args) { + int i = Test.valProp; + int j = Test.varProp; + Test.varProp = 100; + } +} \ No newline at end of file diff --git a/compiler/testData/compileJavaAgainstKotlin/staticFields/staticTraitProperty.kt b/compiler/testData/compileJavaAgainstKotlin/staticFields/staticTraitProperty.kt new file mode 100644 index 00000000000..19d8e7c1fa2 --- /dev/null +++ b/compiler/testData/compileJavaAgainstKotlin/staticFields/staticTraitProperty.kt @@ -0,0 +1,9 @@ +trait Test { + + class object { + public val valProp: Int = 10 + + public var varProp: Int = 10 + } + +} \ No newline at end of file diff --git a/compiler/testData/loadKotlin/classObject/classObjectInClassStaticFields.kt b/compiler/testData/loadKotlin/classObject/classObjectInClassStaticFields.kt new file mode 100644 index 00000000000..70b2b81f04c --- /dev/null +++ b/compiler/testData/loadKotlin/classObject/classObjectInClassStaticFields.kt @@ -0,0 +1,30 @@ +package test + +class Test { + + class object { + + public val prop1 : Int = 10 + + public var prop2 : Int = 11 + protected set + + public val prop3: Int = 12 + get() { + return $prop3 + } + + var prop4 : Int = 13 + + fun incProp4() { + $prop4++ + } + + public var prop5 : Int = 14 + + public var prop7 : Int = 20 + set(i: Int) { + $prop7++ + } + } +} \ No newline at end of file diff --git a/compiler/testData/loadKotlin/classObject/classObjectInClassStaticFields.txt b/compiler/testData/loadKotlin/classObject/classObjectInClassStaticFields.txt new file mode 100644 index 00000000000..d75e4b1e99c --- /dev/null +++ b/compiler/testData/loadKotlin/classObject/classObjectInClassStaticFields.txt @@ -0,0 +1,26 @@ +package test + +internal final class Test { + /*primary*/ public constructor Test() + + internal class object { + /*primary*/ private constructor () + public final val prop1: jet.Int + public final fun (): jet.Int + public final var prop2: jet.Int + public final fun (): jet.Int + protected final fun (/*0*/ : jet.Int): jet.Unit + public final val prop3: jet.Int + public final fun (): jet.Int + internal final var prop4: jet.Int + internal final fun (): jet.Int + internal final fun (/*0*/ : jet.Int): jet.Unit + public final var prop5: jet.Int + public final fun (): jet.Int + public final fun (/*0*/ : jet.Int): jet.Unit + public final var prop7: jet.Int + public final fun (): jet.Int + public final fun (/*0*/ i: jet.Int): jet.Unit + internal final fun incProp4(): jet.Unit + } +} diff --git a/compiler/testData/loadKotlin/classObject/classObjectInTraitStaticFields.kt b/compiler/testData/loadKotlin/classObject/classObjectInTraitStaticFields.kt new file mode 100644 index 00000000000..395d216fc20 --- /dev/null +++ b/compiler/testData/loadKotlin/classObject/classObjectInTraitStaticFields.kt @@ -0,0 +1,30 @@ +package test + +trait Test { + + class object { + + public val prop1 : Int = 10 + + public var prop2 : Int = 11 + protected set + + public val prop3: Int = 12 + get() { + return $prop3 + } + + var prop4 : Int = 13 + + fun incProp4() { + $prop4++ + } + + public var prop5 : Int = 14 + + public var prop7 : Int = 20 + set(i: Int) { + $prop7++ + } + } +} \ No newline at end of file diff --git a/compiler/testData/loadKotlin/classObject/classObjectInTraitStaticFields.txt b/compiler/testData/loadKotlin/classObject/classObjectInTraitStaticFields.txt new file mode 100644 index 00000000000..e4687a6dc33 --- /dev/null +++ b/compiler/testData/loadKotlin/classObject/classObjectInTraitStaticFields.txt @@ -0,0 +1,25 @@ +package test + +internal trait Test { + + internal class object { + /*primary*/ private constructor () + public final val prop1: jet.Int + public final fun (): jet.Int + public final var prop2: jet.Int + public final fun (): jet.Int + protected final fun (/*0*/ : jet.Int): jet.Unit + public final val prop3: jet.Int + public final fun (): jet.Int + internal final var prop4: jet.Int + internal final fun (): jet.Int + internal final fun (/*0*/ : jet.Int): jet.Unit + public final var prop5: jet.Int + public final fun (): jet.Int + public final fun (/*0*/ : jet.Int): jet.Unit + public final var prop7: jet.Int + public final fun (): jet.Int + public final fun (/*0*/ i: jet.Int): jet.Unit + internal final fun incProp4(): jet.Unit + } +} diff --git a/compiler/testData/writeFlags/property/classObject/class/delegatedProtectedVar.kt b/compiler/testData/writeFlags/property/classObject/class/delegatedProtectedVar.kt new file mode 100644 index 00000000000..8d0fa5bb006 --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/class/delegatedProtectedVar.kt @@ -0,0 +1,32 @@ +class TestDelegate() { + fun get(thisRef: Any?, desc: PropertyMetadata): Int { + return 10 + } + + public open fun set(thisRef: Any?, desc: PropertyMetadata, svalue : Int) { + + } +} + + +class Test { + class object { + protected var prop: Int by TestDelegate() + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// ABSENT: TRUE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// ABSENT: TRUE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop$delegate +// ABSENT: TRUE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop$delegate +// FLAGS: ACC_STATIC, ACC_FINAL, ACC_PRIVATE diff --git a/compiler/testData/writeFlags/property/classObject/class/delegatedPublicVal.kt b/compiler/testData/writeFlags/property/classObject/class/delegatedPublicVal.kt new file mode 100644 index 00000000000..bf44cb09219 --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/class/delegatedPublicVal.kt @@ -0,0 +1,27 @@ +class TestDelegate() { + fun get(thisRef: Any?, desc: PropertyMetadata): Int { + return 10 + } +} + +class Test { + class object { + public val prop: Int by TestDelegate() + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// ABSENT: TRUE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// ABSENT: TRUE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop$delegate +// ABSENT: TRUE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop$delegate +// FLAGS: ACC_STATIC, ACC_FINAL, ACC_PRIVATE diff --git a/compiler/testData/writeFlags/property/classObject/class/extensionPublicVal.kt b/compiler/testData/writeFlags/property/classObject/class/extensionPublicVal.kt new file mode 100644 index 00000000000..ade829c8e40 --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/class/extensionPublicVal.kt @@ -0,0 +1,13 @@ +class Test { + class object { + public val Test.prop: Int = 0; + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// FLAGS: ACC_FINAL, ACC_STATIC, ACC_PRIVATE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// ABSENT: TRUE \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/class/extensionPublicVar.kt b/compiler/testData/writeFlags/property/classObject/class/extensionPublicVar.kt new file mode 100644 index 00000000000..a7ce2e266ee --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/class/extensionPublicVar.kt @@ -0,0 +1,13 @@ +class Test { + class object { + public var Test.prop: Int = 0; + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// FLAGS: ACC_STATIC, ACC_PRIVATE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// ABSENT: TRUE \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/class/internalVal.kt b/compiler/testData/writeFlags/property/classObject/class/internalVal.kt new file mode 100644 index 00000000000..b9165253dca --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/class/internalVal.kt @@ -0,0 +1,13 @@ +class Test { + class object { + var prop: Int = 0; + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// FLAGS: ACC_STATIC, ACC_PUBLIC + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// ABSENT: TRUE diff --git a/compiler/testData/writeFlags/property/classObject/class/internalVar.kt b/compiler/testData/writeFlags/property/classObject/class/internalVar.kt new file mode 100644 index 00000000000..b9165253dca --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/class/internalVar.kt @@ -0,0 +1,13 @@ +class Test { + class object { + var prop: Int = 0; + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// FLAGS: ACC_STATIC, ACC_PUBLIC + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// ABSENT: TRUE diff --git a/compiler/testData/writeFlags/property/classObject/class/internalVarPrivateSet.kt b/compiler/testData/writeFlags/property/classObject/class/internalVarPrivateSet.kt new file mode 100644 index 00000000000..f55b91a1102 --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/class/internalVarPrivateSet.kt @@ -0,0 +1,14 @@ +class Test { + class object { + var prop: Int = 0 + private set + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// FLAGS: ACC_STATIC, ACC_PRIVATE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// ABSENT: TRUE \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/class/noBackingField.kt b/compiler/testData/writeFlags/property/classObject/class/noBackingField.kt new file mode 100644 index 00000000000..44287db4f69 --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/class/noBackingField.kt @@ -0,0 +1,19 @@ +class Test { + class object { + var prop: Int + get() { + return 10 + } + set(i : Int) { + + } + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// ABSENT: TRUE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// ABSENT: TRUE diff --git a/compiler/testData/writeFlags/property/classObject/class/privateVal.kt b/compiler/testData/writeFlags/property/classObject/class/privateVal.kt new file mode 100644 index 00000000000..a38e09beba5 --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/class/privateVal.kt @@ -0,0 +1,13 @@ +class Test { + class object { + private val prop = 0; + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// FLAGS: ACC_STATIC, ACC_PRIVATE, ACC_FINAL + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// ABSENT: TRUE \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/class/privateVar.kt b/compiler/testData/writeFlags/property/classObject/class/privateVar.kt new file mode 100644 index 00000000000..9c5aea21403 --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/class/privateVar.kt @@ -0,0 +1,13 @@ +class Test { + class object { + private var prop = 0; + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// FLAGS: ACC_STATIC, ACC_PRIVATE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// ABSENT: TRUE \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/class/protectedVal.kt b/compiler/testData/writeFlags/property/classObject/class/protectedVal.kt new file mode 100644 index 00000000000..974c2c68d72 --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/class/protectedVal.kt @@ -0,0 +1,13 @@ +class Test { + class object { + protected val prop: Int = 0; + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// FLAGS: ACC_STATIC, ACC_PROTECTED, ACC_FINAL + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// ABSENT: TRUE \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/class/protectedVarPrivateSet.kt b/compiler/testData/writeFlags/property/classObject/class/protectedVarPrivateSet.kt new file mode 100644 index 00000000000..65e5efddbf8 --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/class/protectedVarPrivateSet.kt @@ -0,0 +1,14 @@ +class Test { + class object { + protected var prop: Int = 0 + private set + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// FLAGS: ACC_STATIC, ACC_PRIVATE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// ABSENT: TRUE diff --git a/compiler/testData/writeFlags/property/classObject/class/publicVal.kt b/compiler/testData/writeFlags/property/classObject/class/publicVal.kt new file mode 100644 index 00000000000..3b8abf2797d --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/class/publicVal.kt @@ -0,0 +1,13 @@ +class Test { + class object { + public val prop: Int = 0; + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// FLAGS: ACC_STATIC, ACC_PUBLIC, ACC_FINAL + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// ABSENT: TRUE \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/class/publicValNonDefault.kt b/compiler/testData/writeFlags/property/classObject/class/publicValNonDefault.kt new file mode 100644 index 00000000000..d25a4c26e20 --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/class/publicValNonDefault.kt @@ -0,0 +1,16 @@ +class Test { + class object { + public val prop: Int = 0 + get() { + return $prop + } + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// FLAGS: ACC_STATIC, ACC_PRIVATE, ACC_FINAL + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// ABSENT: TRUE \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/class/publicVar.kt b/compiler/testData/writeFlags/property/classObject/class/publicVar.kt new file mode 100644 index 00000000000..a487d869eb4 --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/class/publicVar.kt @@ -0,0 +1,13 @@ +class Test { + class object { + public var prop: Int = 0; + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// FLAGS: ACC_STATIC, ACC_PUBLIC + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// ABSENT: TRUE \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/class/publicVarNonDefault.kt b/compiler/testData/writeFlags/property/classObject/class/publicVarNonDefault.kt new file mode 100644 index 00000000000..704581972b3 --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/class/publicVarNonDefault.kt @@ -0,0 +1,16 @@ +class Test { + class object { + public var prop: Int = 0 + set(i : Int) { + $prop = i + } + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// FLAGS: ACC_STATIC, ACC_PRIVATE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// ABSENT: TRUE \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/class/publicVarPrivateSet.kt b/compiler/testData/writeFlags/property/classObject/class/publicVarPrivateSet.kt new file mode 100644 index 00000000000..83f4a5c3a0f --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/class/publicVarPrivateSet.kt @@ -0,0 +1,14 @@ +class Test { + class object { + public var prop: Int = 0 + private set + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// FLAGS: ACC_STATIC, ACC_PRIVATE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// ABSENT: TRUE \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/class/publicVarProtectedSet.kt b/compiler/testData/writeFlags/property/classObject/class/publicVarProtectedSet.kt new file mode 100644 index 00000000000..a06c623f919 --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/class/publicVarProtectedSet.kt @@ -0,0 +1,14 @@ +class Test { + class object { + public var prop: Int = 0 + protected set + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// FLAGS: ACC_STATIC, ACC_PROTECTED + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// ABSENT: TRUE \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/class/publicVarPublicSet.kt b/compiler/testData/writeFlags/property/classObject/class/publicVarPublicSet.kt new file mode 100644 index 00000000000..b068834c168 --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/class/publicVarPublicSet.kt @@ -0,0 +1,14 @@ +class Test { + class object { + public var prop: Int = 0 + public set + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// FLAGS: ACC_STATIC, ACC_PUBLIC + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// ABSENT: TRUE diff --git a/compiler/testData/writeFlags/property/classObject/trait/delegatedProtectedVar.kt b/compiler/testData/writeFlags/property/classObject/trait/delegatedProtectedVar.kt new file mode 100644 index 00000000000..2d2940c852a --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/trait/delegatedProtectedVar.kt @@ -0,0 +1,32 @@ +class TestDelegate() { + fun get(thisRef: Any?, desc: PropertyMetadata): Int { + return 10 + } + + public open fun set(thisRef: Any?, desc: PropertyMetadata, svalue : Int) { + + } +} + +trait Test { + class object { + protected var prop: Int by TestDelegate() + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// ABSENT: TRUE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// ABSENT: TRUE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop$delegate +// FLAGS: ACC_FINAL, ACC_PRIVATE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop$delegate +// FLAGS: ACC_FINAL, ACC_PRIVATE +// ABSENT: TRUE \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/trait/delegatedPublicVal.kt b/compiler/testData/writeFlags/property/classObject/trait/delegatedPublicVal.kt new file mode 100644 index 00000000000..67ebd828754 --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/trait/delegatedPublicVal.kt @@ -0,0 +1,27 @@ +class TestDelegate() { + fun get(thisRef: Any?, desc: PropertyMetadata): Int { + return 10 + } +} + +trait Test { + class object { + public val prop: Int by TestDelegate() + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// ABSENT: TRUE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// ABSENT: TRUE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop$delegate +// FLAGS: ACC_FINAL, ACC_PRIVATE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop$delegate +// ABSENT: TRUE \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/trait/extensionPublicVal.kt b/compiler/testData/writeFlags/property/classObject/trait/extensionPublicVal.kt new file mode 100644 index 00000000000..0f9fd18d933 --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/trait/extensionPublicVal.kt @@ -0,0 +1,13 @@ +trait Test { + class object { + public val Test.prop: Int = 0; + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// ABSENT: TRUE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// FLAGS: ACC_FINAL, ACC_PRIVATE \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/trait/extensionPublicVar.kt b/compiler/testData/writeFlags/property/classObject/trait/extensionPublicVar.kt new file mode 100644 index 00000000000..4fd4b033c49 --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/trait/extensionPublicVar.kt @@ -0,0 +1,13 @@ +trait Test { + class object { + public var Test.prop: Int = 0; + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// ABSENT: TRUE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// FLAGS: ACC_PRIVATE \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/trait/internalVal.kt b/compiler/testData/writeFlags/property/classObject/trait/internalVal.kt new file mode 100644 index 00000000000..f5b6ae2fd41 --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/trait/internalVal.kt @@ -0,0 +1,13 @@ +trait Test { + class object { + val prop: Int = 0; + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// FLAGS: ACC_STATIC, ACC_PUBLIC, ACC_FINAL + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// FLAGS: ACC_PRIVATE, ACC_FINAL \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/trait/internalVar.kt b/compiler/testData/writeFlags/property/classObject/trait/internalVar.kt new file mode 100644 index 00000000000..d292799f925 --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/trait/internalVar.kt @@ -0,0 +1,13 @@ +trait Test { + class object { + var prop: Int = 0; + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// ABSENT: TRUE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// FLAGS: ACC_PRIVATE diff --git a/compiler/testData/writeFlags/property/classObject/trait/internalVarPrivateSet.kt b/compiler/testData/writeFlags/property/classObject/trait/internalVarPrivateSet.kt new file mode 100644 index 00000000000..0264cad45c5 --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/trait/internalVarPrivateSet.kt @@ -0,0 +1,14 @@ +trait Test { + class object { + var prop: Int = 0 + private set + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// ABSENT: TRUE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// FLAGS: ACC_PRIVATE \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/trait/noBackingField.kt b/compiler/testData/writeFlags/property/classObject/trait/noBackingField.kt new file mode 100644 index 00000000000..34a12ca105b --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/trait/noBackingField.kt @@ -0,0 +1,19 @@ +trait Test { + class object { + var prop: Int + get() { + return 10 + } + set(i : Int) { + + } + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// ABSENT: TRUE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// ABSENT: TRUE diff --git a/compiler/testData/writeFlags/property/classObject/trait/privateVal.kt b/compiler/testData/writeFlags/property/classObject/trait/privateVal.kt new file mode 100644 index 00000000000..f751ecb6822 --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/trait/privateVal.kt @@ -0,0 +1,13 @@ +trait Test { + class object { + private val prop = 0; + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// ABSENT: TRUE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// FLAGS: ACC_PRIVATE, ACC_FINAL \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/trait/privateVar.kt b/compiler/testData/writeFlags/property/classObject/trait/privateVar.kt new file mode 100644 index 00000000000..8f02ea9198e --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/trait/privateVar.kt @@ -0,0 +1,13 @@ +trait Test { + class object { + private var prop = 0; + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// ABSENT: TRUE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// FLAGS: ACC_PRIVATE \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/trait/protectedVal.kt b/compiler/testData/writeFlags/property/classObject/trait/protectedVal.kt new file mode 100644 index 00000000000..1a83c26b481 --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/trait/protectedVal.kt @@ -0,0 +1,13 @@ +trait Test { + class object { + protected val prop: Int = 0 + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// ABSENT: TRUE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// FLAGS: ACC_PRIVATE, ACC_FINAL \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/trait/protectedVarPrivateSet.kt b/compiler/testData/writeFlags/property/classObject/trait/protectedVarPrivateSet.kt new file mode 100644 index 00000000000..6baa56b9ba1 --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/trait/protectedVarPrivateSet.kt @@ -0,0 +1,14 @@ +trait Test { + class object { + protected var prop: Int = 0 + private set + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// ABSENT: TRUE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// FLAGS: ACC_PRIVATE \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/trait/publicVal.kt b/compiler/testData/writeFlags/property/classObject/trait/publicVal.kt new file mode 100644 index 00000000000..1a7541e66ca --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/trait/publicVal.kt @@ -0,0 +1,13 @@ +trait Test { + class object { + public val prop: Int = 0; + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// FLAGS: ACC_STATIC, ACC_PUBLIC, ACC_FINAL + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// FLAGS: ACC_PRIVATE, ACC_FINAL \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/trait/publicValNonDefault.kt b/compiler/testData/writeFlags/property/classObject/trait/publicValNonDefault.kt new file mode 100644 index 00000000000..4fcca650f7d --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/trait/publicValNonDefault.kt @@ -0,0 +1,16 @@ +trait Test { + class object { + public val prop: Int = 0 + get() { + return $prop + } + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// ABSENT: TRUE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// FLAGS: ACC_PRIVATE, ACC_FINAL \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/trait/publicVar.kt b/compiler/testData/writeFlags/property/classObject/trait/publicVar.kt new file mode 100644 index 00000000000..02b1f3195f1 --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/trait/publicVar.kt @@ -0,0 +1,13 @@ +trait Test { + class object { + public var prop: Int = 0 + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// ABSENT: TRUE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// FLAGS: ACC_PRIVATE \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/trait/publicVarNonDefault.kt b/compiler/testData/writeFlags/property/classObject/trait/publicVarNonDefault.kt new file mode 100644 index 00000000000..d7a6267d384 --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/trait/publicVarNonDefault.kt @@ -0,0 +1,16 @@ +trait Test { + class object { + public var prop: Int = 0 + set(i : Int) { + $prop = i + } + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// ABSENT: TRUE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// FLAGS: ACC_PRIVATE \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/trait/publicVarPrivateSet.kt b/compiler/testData/writeFlags/property/classObject/trait/publicVarPrivateSet.kt new file mode 100644 index 00000000000..0d099680e5c --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/trait/publicVarPrivateSet.kt @@ -0,0 +1,14 @@ +trait Test { + class object { + public var prop: Int = 0 + private set + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// ABSENT: TRUE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// FLAGS: ACC_PRIVATE \ No newline at end of file diff --git a/compiler/testData/writeFlags/property/classObject/trait/publicVarProtectedSet.kt b/compiler/testData/writeFlags/property/classObject/trait/publicVarProtectedSet.kt new file mode 100644 index 00000000000..765e9a3c1a8 --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/trait/publicVarProtectedSet.kt @@ -0,0 +1,14 @@ +trait Test { + class object { + public var prop: Int = 0 + protected set + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// ABSENT: TRUE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// FLAGS: ACC_PRIVATE diff --git a/compiler/testData/writeFlags/property/classObject/trait/publicVarPublicSet.kt b/compiler/testData/writeFlags/property/classObject/trait/publicVarPublicSet.kt new file mode 100644 index 00000000000..d753c5bbae6 --- /dev/null +++ b/compiler/testData/writeFlags/property/classObject/trait/publicVarPublicSet.kt @@ -0,0 +1,14 @@ +trait Test { + class object { + public var prop: Int = 0 + public set + } +} + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test, prop +// ABSENT: TRUE + +// TESTED_OBJECT_KIND: property +// TESTED_OBJECTS: Test$object, prop +// FLAGS: ACC_PRIVATE diff --git a/compiler/tests/org/jetbrains/jet/codegen/flags/AbstractWriteFlagsTest.java b/compiler/tests/org/jetbrains/jet/codegen/flags/AbstractWriteFlagsTest.java index f18d9ca666b..cad9423b32d 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/flags/AbstractWriteFlagsTest.java +++ b/compiler/tests/org/jetbrains/jet/codegen/flags/AbstractWriteFlagsTest.java @@ -29,6 +29,7 @@ import org.jetbrains.jet.lang.psi.JetFile; import java.io.File; import java.io.IOException; import java.lang.reflect.Field; +import java.util.ArrayList; import java.util.List; import static org.jetbrains.jet.InTextDirectivesUtils.findListWithPrefixes; @@ -39,7 +40,17 @@ import static org.jetbrains.jet.InTextDirectivesUtils.findStringWithPrefixes; * * TESTED_OBJECT_KIND - maybe class, function or property * TESTED_OBJECTS - className, [function/property name] - * FLAGS - only flags which must be true + * FLAGS - only flags which must be true (could be skipped if ABSENT is TRUE) + * ABSENT - true or false, optional (false by default) + * + * There is could be specified several tested objects separated by empty line, e.g: + * TESTED_OBJECT_KIND: property + * TESTED_OBJECTS: Test$object, prop + * ABSENT: TRUE + * + * TESTED_OBJECT_KIND: property + * TESTED_OBJECTS: Test, prop$delegate + * FLAGS: ACC_STATIC, ACC_FINAL, ACC_PRIVATE */ public abstract class AbstractWriteFlagsTest extends UsefulTestCase { @@ -61,59 +72,78 @@ public abstract class AbstractWriteFlagsTest extends UsefulTestCase { File ktFile = new File(path); assertTrue("Cannot find a file " + ktFile.getAbsolutePath(), ktFile.exists()); - String fileText = FileUtil.loadFile(ktFile); + String fileText = FileUtil.loadFile(ktFile, true); JetFile psiFile = JetTestUtils.createFile(ktFile.getName(), fileText, jetCoreEnvironment.getProject()); assertTrue("Cannot create JetFile from text", psiFile != null); ClassFileFactory factory = GenerationUtils.compileFileGetClassFileFactoryForTest(psiFile); - TestedObject testedObject = parseExpectedTestedObject(fileText); - - String className = null; - for (String filename : factory.files()) { - if (testedObject.isFullContainingClassName && filename.equals(testedObject.containingClass + ".class")) { - className = filename; + List testedObjects = parseExpectedTestedObject(fileText); + for (TestedObject testedObject : testedObjects) { + String className = null; + for (String filename : factory.files()) { + if (testedObject.isFullContainingClassName && filename.equals(testedObject.containingClass + ".class")) { + className = filename; + } + else if (!testedObject.isFullContainingClassName && filename.startsWith(testedObject.containingClass)) { + className = filename; + } } - else if (!testedObject.isFullContainingClassName && filename.startsWith(testedObject.containingClass)) { - className = filename; + + if (className == null) { + throw new AssertionError("Couldn't find a class file with name " + testedObject.containingClass); + } + + ClassReader cr = new ClassReader(factory.asBytes(className)); + TestClassVisitor classVisitor; + classVisitor = getClassVisitor(testedObject.kind, testedObject.name); + cr.accept(classVisitor, ClassReader.SKIP_CODE); + + boolean isObjectExists = false == Boolean.valueOf(findStringWithPrefixes(testedObject.textData, "// ABSENT: ")); + assertEquals( "Wrong object existence state: " + testedObject, isObjectExists, classVisitor.isExists()); + int expectedAccess = getExpectedFlags(testedObject.textData); + + if (isObjectExists) { + assertEquals("Wrong access flag \n" + factory.asText(className), expectedAccess, classVisitor.getAccess()); } } - - if (className == null) { - throw new AssertionError("Couldn't find a class file with name " + testedObject.containingClass); - } - - ClassReader cr = new ClassReader(factory.asBytes(className)); - TestClassVisitor classVisitor; - classVisitor = getClassVisitor(testedObject.kind, testedObject.name); - cr.accept(classVisitor, ClassReader.SKIP_CODE); - int expectedAccess = getExpectedFlags(fileText); - assertEquals("Wrong access flag \n" + factory.asText(className), expectedAccess, classVisitor.getAccess()); } - private static TestedObject parseExpectedTestedObject(String fileText) { - TestedObject result = new TestedObject(); - List testedObjects = findListWithPrefixes(fileText, "// TESTED_OBJECTS: "); - assertTrue("Cannot find TESTED_OBJECTS instruction", !testedObjects.isEmpty()); - result.containingClass = testedObjects.get(0); - if (testedObjects.size() == 1) { - result.name = testedObjects.get(0); - } - else if (testedObjects.size() == 2) { - result.name = testedObjects.get(1); - } - else { - throw new IllegalArgumentException( - "TESTED_OBJECTS instruction must contains one (for class) or two (for function and property) values"); - } + private static List parseExpectedTestedObject(String testDescription) { + testDescription = testDescription.substring(testDescription.indexOf("// TESTED_OBJECT_KIND")); + String [] testObjectData = testDescription.split("\n\n"); + ArrayList objects = new ArrayList(); - result.kind = findStringWithPrefixes(fileText, "// TESTED_OBJECT_KIND: "); - List isFullName = findListWithPrefixes(fileText, "// IS_FULL_CONTAINING_CLASS_NAME: "); - if (isFullName.size() == 1) { - result.isFullContainingClassName = Boolean.parseBoolean(isFullName.get(0)); + for (int i = 0; i < testObjectData.length; i++) { + String testData = testObjectData[i]; + if (!testData.isEmpty()) { + TestedObject testObject = new TestedObject(); + testObject.textData = testData; + List testedObjects = findListWithPrefixes(testData, "// TESTED_OBJECTS: "); + assertTrue("Cannot find TESTED_OBJECTS instruction", !testedObjects.isEmpty()); + testObject.containingClass = testedObjects.get(0); + if (testedObjects.size() == 1) { + testObject.name = testedObjects.get(0); + } + else if (testedObjects.size() == 2) { + testObject.name = testedObjects.get(1); + } + else { + throw new IllegalArgumentException( + "TESTED_OBJECTS instruction must contains one (for class) or two (for function and property) values"); + } + + testObject.kind = findStringWithPrefixes(testData, "// TESTED_OBJECT_KIND: "); + List isFullName = findListWithPrefixes(testData, "// IS_FULL_CONTAINING_CLASS_NAME: "); + if (isFullName.size() == 1) { + testObject.isFullContainingClassName = Boolean.parseBoolean(isFullName.get(0)); + } + objects.add(testObject); + } } - return result; + assertTrue("Test description not present!", !objects.isEmpty()); + return objects; } private static class TestedObject { @@ -121,6 +151,12 @@ public abstract class AbstractWriteFlagsTest extends UsefulTestCase { public String containingClass = ""; public boolean isFullContainingClassName = true; public String kind; + public String textData; + + @Override + public String toString() { + return "Class = " + containingClass + ", name = " + name + ", kind = " + kind; + } } private static TestClassVisitor getClassVisitor(String visitorKind, String testedObjectName) { @@ -136,15 +172,23 @@ public abstract class AbstractWriteFlagsTest extends UsefulTestCase { else if (visitorKind.equals("innerClass")) { return new InnerClassFlagsVisitor(testedObjectName); } + throw new IllegalArgumentException("Value of TESTED_OBJECT_KIND is incorrect: " + visitorKind); } protected static abstract class TestClassVisitor extends ClassVisitor { + + protected boolean isExists; + public TestClassVisitor() { super(Opcodes.ASM4); } abstract public int getAccess(); + + public boolean isExists() { + return isExists; + } } private static int getExpectedFlags(String text) { @@ -172,6 +216,7 @@ public abstract class AbstractWriteFlagsTest extends UsefulTestCase { @Override public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { this.access = access; + isExists = true; } @Override @@ -192,6 +237,7 @@ public abstract class AbstractWriteFlagsTest extends UsefulTestCase { public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { if (name.equals(funName)) { this.access = access; + isExists = true; } return null; } @@ -214,6 +260,7 @@ public abstract class AbstractWriteFlagsTest extends UsefulTestCase { public FieldVisitor visitField(int access, String name, String desc, String signature, Object value) { if (name.equals(propertyName)) { this.access = access; + isExists = true; } return null; } @@ -236,6 +283,7 @@ public abstract class AbstractWriteFlagsTest extends UsefulTestCase { public void visitInnerClass(String innerClassInternalName, String outerClassInternalName, String name, int access) { if (name.equals(innerClassName)) { this.access = access; + isExists = true; } } diff --git a/compiler/tests/org/jetbrains/jet/codegen/flags/WriteFlagsTestGenerated.java b/compiler/tests/org/jetbrains/jet/codegen/flags/WriteFlagsTestGenerated.java index a71dae112dc..245663a34e8 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/flags/WriteFlagsTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/codegen/flags/WriteFlagsTestGenerated.java @@ -466,12 +466,234 @@ public class WriteFlagsTestGenerated extends AbstractWriteFlagsTest { } @TestMetadata("compiler/testData/writeFlags/property") - @InnerTestClasses({Property.DeprecatedFlag.class, Property.Visibility.class}) + @InnerTestClasses({Property.ClassObject.class, Property.DeprecatedFlag.class, Property.Visibility.class}) public static class Property extends AbstractWriteFlagsTest { public void testAllFilesPresentInProperty() throws Exception { JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/writeFlags/property"), Pattern.compile("^(.+)\\.kt$"), true); } + @TestMetadata("compiler/testData/writeFlags/property/classObject") + @InnerTestClasses({ClassObject.Class.class, ClassObject.Trait.class}) + public static class ClassObject extends AbstractWriteFlagsTest { + public void testAllFilesPresentInClassObject() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/writeFlags/property/classObject"), Pattern.compile("^(.+)\\.kt$"), true); + } + + @TestMetadata("compiler/testData/writeFlags/property/classObject/class") + public static class Class extends AbstractWriteFlagsTest { + public void testAllFilesPresentInClass() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/writeFlags/property/classObject/class"), Pattern.compile("^(.+)\\.kt$"), true); + } + + @TestMetadata("delegatedProtectedVar.kt") + public void testDelegatedProtectedVar() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/class/delegatedProtectedVar.kt"); + } + + @TestMetadata("delegatedPublicVal.kt") + public void testDelegatedPublicVal() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/class/delegatedPublicVal.kt"); + } + + @TestMetadata("extensionPublicVal.kt") + public void testExtensionPublicVal() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/class/extensionPublicVal.kt"); + } + + @TestMetadata("extensionPublicVar.kt") + public void testExtensionPublicVar() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/class/extensionPublicVar.kt"); + } + + @TestMetadata("internalVal.kt") + public void testInternalVal() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/class/internalVal.kt"); + } + + @TestMetadata("internalVar.kt") + public void testInternalVar() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/class/internalVar.kt"); + } + + @TestMetadata("internalVarPrivateSet.kt") + public void testInternalVarPrivateSet() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/class/internalVarPrivateSet.kt"); + } + + @TestMetadata("noBackingField.kt") + public void testNoBackingField() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/class/noBackingField.kt"); + } + + @TestMetadata("privateVal.kt") + public void testPrivateVal() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/class/privateVal.kt"); + } + + @TestMetadata("privateVar.kt") + public void testPrivateVar() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/class/privateVar.kt"); + } + + @TestMetadata("protectedVal.kt") + public void testProtectedVal() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/class/protectedVal.kt"); + } + + @TestMetadata("protectedVarPrivateSet.kt") + public void testProtectedVarPrivateSet() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/class/protectedVarPrivateSet.kt"); + } + + @TestMetadata("publicVal.kt") + public void testPublicVal() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/class/publicVal.kt"); + } + + @TestMetadata("publicValNonDefault.kt") + public void testPublicValNonDefault() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/class/publicValNonDefault.kt"); + } + + @TestMetadata("publicVar.kt") + public void testPublicVar() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/class/publicVar.kt"); + } + + @TestMetadata("publicVarNonDefault.kt") + public void testPublicVarNonDefault() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/class/publicVarNonDefault.kt"); + } + + @TestMetadata("publicVarPrivateSet.kt") + public void testPublicVarPrivateSet() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/class/publicVarPrivateSet.kt"); + } + + @TestMetadata("publicVarProtectedSet.kt") + public void testPublicVarProtectedSet() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/class/publicVarProtectedSet.kt"); + } + + @TestMetadata("publicVarPublicSet.kt") + public void testPublicVarPublicSet() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/class/publicVarPublicSet.kt"); + } + + } + + @TestMetadata("compiler/testData/writeFlags/property/classObject/trait") + public static class Trait extends AbstractWriteFlagsTest { + public void testAllFilesPresentInTrait() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/writeFlags/property/classObject/trait"), Pattern.compile("^(.+)\\.kt$"), true); + } + + @TestMetadata("delegatedProtectedVar.kt") + public void testDelegatedProtectedVar() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/trait/delegatedProtectedVar.kt"); + } + + @TestMetadata("delegatedPublicVal.kt") + public void testDelegatedPublicVal() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/trait/delegatedPublicVal.kt"); + } + + @TestMetadata("extensionPublicVal.kt") + public void testExtensionPublicVal() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/trait/extensionPublicVal.kt"); + } + + @TestMetadata("extensionPublicVar.kt") + public void testExtensionPublicVar() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/trait/extensionPublicVar.kt"); + } + + @TestMetadata("internalVal.kt") + public void testInternalVal() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/trait/internalVal.kt"); + } + + @TestMetadata("internalVar.kt") + public void testInternalVar() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/trait/internalVar.kt"); + } + + @TestMetadata("internalVarPrivateSet.kt") + public void testInternalVarPrivateSet() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/trait/internalVarPrivateSet.kt"); + } + + @TestMetadata("noBackingField.kt") + public void testNoBackingField() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/trait/noBackingField.kt"); + } + + @TestMetadata("privateVal.kt") + public void testPrivateVal() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/trait/privateVal.kt"); + } + + @TestMetadata("privateVar.kt") + public void testPrivateVar() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/trait/privateVar.kt"); + } + + @TestMetadata("protectedVal.kt") + public void testProtectedVal() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/trait/protectedVal.kt"); + } + + @TestMetadata("protectedVarPrivateSet.kt") + public void testProtectedVarPrivateSet() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/trait/protectedVarPrivateSet.kt"); + } + + @TestMetadata("publicVal.kt") + public void testPublicVal() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/trait/publicVal.kt"); + } + + @TestMetadata("publicValNonDefault.kt") + public void testPublicValNonDefault() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/trait/publicValNonDefault.kt"); + } + + @TestMetadata("publicVar.kt") + public void testPublicVar() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/trait/publicVar.kt"); + } + + @TestMetadata("publicVarNonDefault.kt") + public void testPublicVarNonDefault() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/trait/publicVarNonDefault.kt"); + } + + @TestMetadata("publicVarPrivateSet.kt") + public void testPublicVarPrivateSet() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/trait/publicVarPrivateSet.kt"); + } + + @TestMetadata("publicVarProtectedSet.kt") + public void testPublicVarProtectedSet() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/trait/publicVarProtectedSet.kt"); + } + + @TestMetadata("publicVarPublicSet.kt") + public void testPublicVarPublicSet() throws Exception { + doTest("compiler/testData/writeFlags/property/classObject/trait/publicVarPublicSet.kt"); + } + + } + + public static Test innerSuite() { + TestSuite suite = new TestSuite("ClassObject"); + suite.addTestSuite(ClassObject.class); + suite.addTestSuite(Class.class); + suite.addTestSuite(Trait.class); + return suite; + } + } + @TestMetadata("compiler/testData/writeFlags/property/deprecatedFlag") public static class DeprecatedFlag extends AbstractWriteFlagsTest { public void testAllFilesPresentInDeprecatedFlag() throws Exception { @@ -516,6 +738,7 @@ public class WriteFlagsTestGenerated extends AbstractWriteFlagsTest { public static Test innerSuite() { TestSuite suite = new TestSuite("Property"); suite.addTestSuite(Property.class); + suite.addTest(ClassObject.innerSuite()); suite.addTestSuite(DeprecatedFlag.class); suite.addTestSuite(Visibility.class); return suite; diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java index bcc33435963..d874af8313d 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxCodegenTestGenerated.java @@ -3459,6 +3459,11 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest { JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/codegen/box/properties"), Pattern.compile("^(.+)\\.kt$"), true); } + @TestMetadata("classObjectProperties.kt") + public void testClassObjectProperties() throws Exception { + doTest("compiler/testData/codegen/box/properties/classObjectProperties.kt"); + } + @TestMetadata("generalAccess.kt") public void testGeneralAccess() throws Exception { doTest("compiler/testData/codegen/box/properties/generalAccess.kt"); diff --git a/compiler/tests/org/jetbrains/jet/jvm/compiler/CompileJavaAgainstKotlinTestGenerated.java b/compiler/tests/org/jetbrains/jet/jvm/compiler/CompileJavaAgainstKotlinTestGenerated.java index c6f6c63623f..107b0044382 100644 --- a/compiler/tests/org/jetbrains/jet/jvm/compiler/CompileJavaAgainstKotlinTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/jvm/compiler/CompileJavaAgainstKotlinTestGenerated.java @@ -31,7 +31,7 @@ import org.jetbrains.jet.jvm.compiler.AbstractCompileJavaAgainstKotlinTest; /** This class is generated by {@link org.jetbrains.jet.generators.tests.GenerateTests}. DO NOT MODIFY MANUALLY */ @SuppressWarnings("all") @TestMetadata("compiler/testData/compileJavaAgainstKotlin") -@InnerTestClasses({CompileJavaAgainstKotlinTestGenerated.Class.class, CompileJavaAgainstKotlinTestGenerated.Method.class}) +@InnerTestClasses({CompileJavaAgainstKotlinTestGenerated.Class.class, CompileJavaAgainstKotlinTestGenerated.Method.class, CompileJavaAgainstKotlinTestGenerated.StaticFields.class}) public class CompileJavaAgainstKotlinTestGenerated extends AbstractCompileJavaAgainstKotlinTest { public void testAllFilesPresentInCompileJavaAgainstKotlin() throws Exception { JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/compileJavaAgainstKotlin"), Pattern.compile("^(.+)\\.kt$"), true); @@ -183,11 +183,30 @@ public class CompileJavaAgainstKotlinTestGenerated extends AbstractCompileJavaAg } + @TestMetadata("compiler/testData/compileJavaAgainstKotlin/staticFields") + public static class StaticFields extends AbstractCompileJavaAgainstKotlinTest { + public void testAllFilesPresentInStaticFields() throws Exception { + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.generators.tests.GenerateTests", new File("compiler/testData/compileJavaAgainstKotlin/staticFields"), Pattern.compile("^(.+)\\.kt$"), true); + } + + @TestMetadata("staticClassProperty.kt") + public void testStaticClassProperty() throws Exception { + doTest("compiler/testData/compileJavaAgainstKotlin/staticFields/staticClassProperty.kt"); + } + + @TestMetadata("staticTraitProperty.kt") + public void testStaticTraitProperty() throws Exception { + doTest("compiler/testData/compileJavaAgainstKotlin/staticFields/staticTraitProperty.kt"); + } + + } + public static Test suite() { TestSuite suite = new TestSuite("CompileJavaAgainstKotlinTestGenerated"); suite.addTestSuite(CompileJavaAgainstKotlinTestGenerated.class); suite.addTestSuite(Class.class); suite.addTestSuite(Method.class); + suite.addTestSuite(StaticFields.class); return suite; } } diff --git a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadCompiledKotlinTestGenerated.java b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadCompiledKotlinTestGenerated.java index 036177825ea..5a3b33e8e68 100644 --- a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadCompiledKotlinTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadCompiledKotlinTestGenerated.java @@ -269,6 +269,16 @@ public class LoadCompiledKotlinTestGenerated extends AbstractLoadCompiledKotlinT doTestWithAccessors("compiler/testData/loadKotlin/classObject/ClassObjectExtendsTraitWithTP.kt"); } + @TestMetadata("classObjectInClassStaticFields.kt") + public void testClassObjectInClassStaticFields() throws Exception { + doTestWithAccessors("compiler/testData/loadKotlin/classObject/classObjectInClassStaticFields.kt"); + } + + @TestMetadata("classObjectInTraitStaticFields.kt") + public void testClassObjectInTraitStaticFields() throws Exception { + doTestWithAccessors("compiler/testData/loadKotlin/classObject/classObjectInTraitStaticFields.kt"); + } + @TestMetadata("ClassObjectPropertyInClass.kt") public void testClassObjectPropertyInClass() throws Exception { doTestWithAccessors("compiler/testData/loadKotlin/classObject/ClassObjectPropertyInClass.kt"); diff --git a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveNamespaceComparingTestGenerated.java b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveNamespaceComparingTestGenerated.java index f6e5a1cdd7f..4e5a10b0deb 100644 --- a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveNamespaceComparingTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveNamespaceComparingTestGenerated.java @@ -271,6 +271,16 @@ public class LazyResolveNamespaceComparingTestGenerated extends AbstractLazyReso doTestCheckingPrimaryConstructorsAndAccessors("compiler/testData/loadKotlin/classObject/ClassObjectExtendsTraitWithTP.kt"); } + @TestMetadata("classObjectInClassStaticFields.kt") + public void testClassObjectInClassStaticFields() throws Exception { + doTestCheckingPrimaryConstructorsAndAccessors("compiler/testData/loadKotlin/classObject/classObjectInClassStaticFields.kt"); + } + + @TestMetadata("classObjectInTraitStaticFields.kt") + public void testClassObjectInTraitStaticFields() throws Exception { + doTestCheckingPrimaryConstructorsAndAccessors("compiler/testData/loadKotlin/classObject/classObjectInTraitStaticFields.kt"); + } + @TestMetadata("ClassObjectPropertyInClass.kt") public void testClassObjectPropertyInClass() throws Exception { doTestCheckingPrimaryConstructorsAndAccessors("compiler/testData/loadKotlin/classObject/ClassObjectPropertyInClass.kt");