diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/diagnostics/DefaultErrorMessagesJvm.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/diagnostics/DefaultErrorMessagesJvm.java index 846081862a7..81e24b19fbc 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/diagnostics/DefaultErrorMessagesJvm.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/diagnostics/DefaultErrorMessagesJvm.java @@ -23,8 +23,6 @@ import org.jetbrains.jet.lang.diagnostics.rendering.DiagnosticFactoryToRendererM import org.jetbrains.jet.renderer.DescriptorRenderer; import org.jetbrains.jet.renderer.Renderer; -import static org.jetbrains.jet.lang.diagnostics.PositioningStrategies.DECLARATION_SIGNATURE; - public class DefaultErrorMessagesJvm implements DefaultErrorMessages.Extension { private static final Renderer CONFLICTING_JVM_DECLARATIONS_DATA = new Renderer() { @@ -46,8 +44,8 @@ public class DefaultErrorMessagesJvm implements DefaultErrorMessages.Extension { static { MAP.put(ErrorsJvm.CONFLICTING_JVM_DECLARATIONS, "Platform declaration clash: {0}", CONFLICTING_JVM_DECLARATIONS_DATA); MAP.put(ErrorsJvm.ACCIDENTAL_OVERRIDE, "Accidental override: {0}", CONFLICTING_JVM_DECLARATIONS_DATA); - MAP.put(ErrorsJvm.PLATFORM_STATIC_NOT_IN_OBJECT, "Only functions in named objects and class objects of classes can be annotated with ''platformStatic''", DescriptorRenderer.SHORT_NAMES_IN_TYPES); - MAP.put(ErrorsJvm.OVERRIDE_CANNOT_BE_STATIC, "Override cannot be ''platformStatic'' in object", DescriptorRenderer.SHORT_NAMES_IN_TYPES); + MAP.put(ErrorsJvm.PLATFORM_STATIC_NOT_IN_OBJECT, "Only functions in named objects and class objects of classes can be annotated with ''platformStatic''"); + MAP.put(ErrorsJvm.OVERRIDE_CANNOT_BE_STATIC, "Override cannot be ''platformStatic'' in object"); MAP.put(ErrorsJvm.PLATFORM_STATIC_ILLEGAL_USAGE, "This declaration does not support ''platformStatic''", DescriptorRenderer.SHORT_NAMES_IN_TYPES); } diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/diagnostics/ErrorsJvm.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/diagnostics/ErrorsJvm.java index 2cb1e8afb68..09f6002b39c 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/diagnostics/ErrorsJvm.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/diagnostics/ErrorsJvm.java @@ -22,7 +22,6 @@ import org.jetbrains.jet.lang.diagnostics.DiagnosticFactory0; import org.jetbrains.jet.lang.diagnostics.DiagnosticFactory1; import org.jetbrains.jet.lang.diagnostics.Errors; import org.jetbrains.jet.lang.psi.JetDeclaration; -import org.jetbrains.jet.lang.psi.JetElement; import static org.jetbrains.jet.lang.diagnostics.PositioningStrategies.DECLARATION_SIGNATURE; import static org.jetbrains.jet.lang.diagnostics.PositioningStrategies.DECLARATION_SIGNATURE_OR_DEFAULT; @@ -35,8 +34,8 @@ public interface ErrorsJvm { DiagnosticFactory1 ACCIDENTAL_OVERRIDE = DiagnosticFactory1.create(ERROR, DECLARATION_SIGNATURE_OR_DEFAULT); - DiagnosticFactory1 OVERRIDE_CANNOT_BE_STATIC = DiagnosticFactory1.create(ERROR, DECLARATION_SIGNATURE); - DiagnosticFactory1 PLATFORM_STATIC_NOT_IN_OBJECT = DiagnosticFactory1.create(ERROR, DECLARATION_SIGNATURE); + DiagnosticFactory0 OVERRIDE_CANNOT_BE_STATIC = DiagnosticFactory0.create(ERROR, DECLARATION_SIGNATURE); + DiagnosticFactory0 PLATFORM_STATIC_NOT_IN_OBJECT = DiagnosticFactory0.create(ERROR, DECLARATION_SIGNATURE); DiagnosticFactory1 PLATFORM_STATIC_ILLEGAL_USAGE = DiagnosticFactory1.create(ERROR, DECLARATION_SIGNATURE); @SuppressWarnings("UnusedDeclaration") diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/kotlin/JavaDeclarationCheckerProvider.kt b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/kotlin/JavaDeclarationCheckerProvider.kt index 0b46789e236..1d1a82a94aa 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/kotlin/JavaDeclarationCheckerProvider.kt +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/kotlin/JavaDeclarationCheckerProvider.kt @@ -44,6 +44,7 @@ import org.jetbrains.jet.lang.descriptors.PackageFragmentDescriptor import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns import org.jetbrains.jet.lang.resolve.name.Name import org.jetbrains.jet.lang.resolve.annotations.hasIntrinsicAnnotation +import org.jetbrains.jet.lang.psi.JetPropertyAccessor public object JavaDeclarationCheckerProvider : AdditionalCheckerProvider { @@ -68,18 +69,10 @@ public class PlatformStaticAnnotationChecker : AnnotationChecker { override fun check(declaration: JetDeclaration, descriptor: DeclarationDescriptor, diagnosticHolder: DiagnosticSink) { if (descriptor.hasPlatformStaticAnnotation()) { - if (declaration is JetNamedFunction) { - val insideObject = DescriptorUtils.containerKindIs(descriptor, ClassKind.OBJECT) - val insideClassObject = DescriptorUtils.containerKindIs(descriptor, ClassKind.CLASS_OBJECT) - - if (!insideObject && !(insideClassObject && DescriptorUtils.containerKindIs(descriptor.getContainingDeclaration()!!, ClassKind.CLASS))) { - diagnosticHolder.report(ErrorsJvm.PLATFORM_STATIC_NOT_IN_OBJECT.on(declaration, descriptor)); - } - - if (insideObject && declaration.hasModifier(JetTokens.OVERRIDE_KEYWORD)) { - diagnosticHolder.report(ErrorsJvm.OVERRIDE_CANNOT_BE_STATIC.on(declaration, descriptor)); - } - } else { + if (declaration is JetNamedFunction || declaration is JetProperty) { + checkDeclaration(declaration, descriptor, diagnosticHolder, declaration) + } + else { //TODO: there should be general mechanism diagnosticHolder.report(ErrorsJvm.PLATFORM_STATIC_ILLEGAL_USAGE.on(declaration, descriptor)); } @@ -88,14 +81,44 @@ public class PlatformStaticAnnotationChecker : AnnotationChecker { if (declaration is JetProperty) { val getter = declaration.getGetter() if (getter != null) { - check(getter, (descriptor as PropertyDescriptor).getGetter()!!, diagnosticHolder) + val propertyGetterDescriptor = (descriptor as PropertyDescriptor).getGetter()!! + if (propertyGetterDescriptor.hasPlatformStaticAnnotation()) { + checkDeclaration(declaration, descriptor, diagnosticHolder, getter) + } } + val setter = declaration.getSetter() if (setter != null) { - check(setter, (descriptor as PropertyDescriptor).getSetter()!!, diagnosticHolder) + val propertySetterDescriptor = (descriptor as PropertyDescriptor).getSetter()!! + if (propertySetterDescriptor.hasPlatformStaticAnnotation()) { + checkDeclaration(declaration, descriptor, diagnosticHolder, setter) + } } } } + + private fun checkDeclaration( + declaration: JetDeclaration, + descriptor: DeclarationDescriptor, + diagnosticHolder: DiagnosticSink, + reportDiagnosticOn: JetDeclaration + ) { + val insideObject = containerKindIs(descriptor, ClassKind.OBJECT) + val insideClassObject = containerKindIs(descriptor, ClassKind.CLASS_OBJECT) + + if (!insideObject && !(insideClassObject && containerKindIs(descriptor.getContainingDeclaration()!!, ClassKind.CLASS))) { + diagnosticHolder.report(ErrorsJvm.PLATFORM_STATIC_NOT_IN_OBJECT.on(reportDiagnosticOn)); + } + + if (insideObject && declaration.hasModifier(JetTokens.OVERRIDE_KEYWORD)) { + diagnosticHolder.report(ErrorsJvm.OVERRIDE_CANNOT_BE_STATIC.on(reportDiagnosticOn)); + } + } + + private fun containerKindIs(descriptor: DeclarationDescriptor, kind: ClassKind): Boolean { + val parentDeclaration = descriptor.getContainingDeclaration() + return parentDeclaration != null && DescriptorUtils.isKindOf(parentDeclaration, kind) + } } public class ReifiedTypeParameterAnnotationChecker : AnnotationChecker { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/AnnotationUtil.kt b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/AnnotationUtil.kt index fd5b085d355..e68b844baf0 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/AnnotationUtil.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/AnnotationUtil.kt @@ -21,6 +21,8 @@ import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor import org.jetbrains.jet.lang.resolve.name.FqName import org.jetbrains.jet.lang.descriptors.CallableDescriptor import org.jetbrains.jet.lang.resolve.DescriptorUtils +import org.jetbrains.jet.lang.descriptors.PropertyAccessorDescriptor +import org.jetbrains.jet.lang.descriptors.ClassKind public fun DeclarationDescriptor.hasInlineAnnotation(): Boolean { return getAnnotations().findAnnotation(FqName("kotlin.inline")) != null @@ -35,7 +37,17 @@ public fun DeclarationDescriptor.hasIntrinsicAnnotation(): Boolean { } public fun CallableDescriptor.isPlatformStaticInObject(): Boolean = - DescriptorUtils.isObject(getContainingDeclaration()) && hasPlatformStaticAnnotation() + isPlatformStaticIn(ClassKind.OBJECT) public fun CallableDescriptor.isPlatformStaticInClassObject(): Boolean = - DescriptorUtils.isClassObject(getContainingDeclaration()) && hasPlatformStaticAnnotation() \ No newline at end of file + isPlatformStaticIn(ClassKind.CLASS_OBJECT) + +private fun CallableDescriptor.isPlatformStaticIn(kind: ClassKind): Boolean = + when (this) { + is PropertyAccessorDescriptor -> { + val propertyDescriptor = getCorrespondingProperty() + DescriptorUtils.isKindOf(propertyDescriptor.getContainingDeclaration(), kind) && + (hasPlatformStaticAnnotation() || propertyDescriptor.hasPlatformStaticAnnotation()) + } + else -> DescriptorUtils.isKindOf(getContainingDeclaration(), kind) && hasPlatformStaticAnnotation() + } diff --git a/compiler/testData/codegen/boxWithJava/platformStatic/classObject/Test.java b/compiler/testData/codegen/boxWithJava/platformStatic/classObject/Test.java index b120d37aff9..db8195b5106 100644 --- a/compiler/testData/codegen/boxWithJava/platformStatic/classObject/Test.java +++ b/compiler/testData/codegen/boxWithJava/platformStatic/classObject/Test.java @@ -12,4 +12,8 @@ class Test { return A.test3("JAVA"); } + public static String test4() { + return A.getC(); + } + } diff --git a/compiler/testData/codegen/boxWithJava/platformStatic/classObject/simpleClassObject.kt b/compiler/testData/codegen/boxWithJava/platformStatic/classObject/simpleClassObject.kt index 3605a3974d8..052b521ea92 100644 --- a/compiler/testData/codegen/boxWithJava/platformStatic/classObject/simpleClassObject.kt +++ b/compiler/testData/codegen/boxWithJava/platformStatic/classObject/simpleClassObject.kt @@ -5,6 +5,8 @@ class A { class object { val b: String = "OK" + platformStatic val c: String = "OK" + platformStatic fun test1() = b platformStatic fun test2() = b @@ -20,5 +22,7 @@ fun box(): String { if (Test.test3() != "JAVAOK") return "fail 3" + if (Test.test4() != "OK") return "fail 4" + return "OK" } \ No newline at end of file diff --git a/compiler/testData/codegen/boxWithJava/platformStatic/object/Test.java b/compiler/testData/codegen/boxWithJava/platformStatic/object/Test.java index b120d37aff9..db8195b5106 100644 --- a/compiler/testData/codegen/boxWithJava/platformStatic/object/Test.java +++ b/compiler/testData/codegen/boxWithJava/platformStatic/object/Test.java @@ -12,4 +12,8 @@ class Test { return A.test3("JAVA"); } + public static String test4() { + return A.getC(); + } + } diff --git a/compiler/testData/codegen/boxWithJava/platformStatic/object/simpleObject.kt b/compiler/testData/codegen/boxWithJava/platformStatic/object/simpleObject.kt index 7e7a01d8f56..5640663e39b 100644 --- a/compiler/testData/codegen/boxWithJava/platformStatic/object/simpleObject.kt +++ b/compiler/testData/codegen/boxWithJava/platformStatic/object/simpleObject.kt @@ -4,6 +4,8 @@ object A { val b: String = "OK" + platformStatic val c: String = "OK" + platformStatic fun test1() = b platformStatic fun test2() = b @@ -18,5 +20,7 @@ fun box(): String { if (Test.test3() != "JAVAOK") return "fail 3" + if (Test.test4() != "OK") return "fail 4" + return "OK" } \ No newline at end of file diff --git a/compiler/testData/codegen/boxWithStdlib/platformStatic/callableRef.kt b/compiler/testData/codegen/boxWithStdlib/platformStatic/callableRef.kt index a77d682d117..a0f350cafc5 100644 --- a/compiler/testData/codegen/boxWithStdlib/platformStatic/callableRef.kt +++ b/compiler/testData/codegen/boxWithStdlib/platformStatic/callableRef.kt @@ -4,6 +4,8 @@ object A { val b: String = "OK" + platformStatic val c: String = "OK" + platformStatic fun test1() : String { return b } @@ -34,5 +36,7 @@ fun box(): String { if (A.(A::test4)() != "1OK") return "fail 4" + if (((A::c).get(A)) != "OK") return "fail 5" + return "OK" } \ No newline at end of file diff --git a/compiler/testData/codegen/boxWithStdlib/platformStatic/closure.kt b/compiler/testData/codegen/boxWithStdlib/platformStatic/closure.kt index 018cb227e5e..5e4a364bd17 100644 --- a/compiler/testData/codegen/boxWithStdlib/platformStatic/closure.kt +++ b/compiler/testData/codegen/boxWithStdlib/platformStatic/closure.kt @@ -4,6 +4,8 @@ object A { val b: String = "OK" + platformStatic val c: String = "OK" + platformStatic fun test1() : String { return {b}() } @@ -23,6 +25,10 @@ object A { platformStatic fun String.test5() : String { return {this + b}() } + + fun test6(): String { + return {c}() + } } fun box(): String { @@ -36,5 +42,7 @@ fun box(): String { if (with(A) {"1".test5()} != "1OK") return "fail 5" + if (A.test6() != "OK") return "fail 6" + return "OK" } \ No newline at end of file diff --git a/compiler/testData/codegen/boxWithStdlib/platformStatic/explicitObject.kt b/compiler/testData/codegen/boxWithStdlib/platformStatic/explicitObject.kt index 7e418fb9b4c..1f7d9f09d10 100644 --- a/compiler/testData/codegen/boxWithStdlib/platformStatic/explicitObject.kt +++ b/compiler/testData/codegen/boxWithStdlib/platformStatic/explicitObject.kt @@ -2,6 +2,8 @@ import kotlin.platform.platformStatic object AX { + platformStatic val c: String = "OK" + platformStatic fun aStatic(): String { return AX.b() } @@ -14,13 +16,19 @@ object AX { return "OK" } + fun getProperty(): String { + return AX.c + } + } fun box() : String { if (AX.aStatic() != "OK") return "fail 1" - if (AX.aNonStatic() != "OK") return "fail 1" + if (AX.aNonStatic() != "OK") return "fail 2" + + if (AX.getProperty() != "OK") return "fail 3" return "OK" } \ No newline at end of file diff --git a/compiler/testData/codegen/boxWithStdlib/platformStatic/propertyAsDefault.kt b/compiler/testData/codegen/boxWithStdlib/platformStatic/propertyAsDefault.kt new file mode 100644 index 00000000000..91337f476b2 --- /dev/null +++ b/compiler/testData/codegen/boxWithStdlib/platformStatic/propertyAsDefault.kt @@ -0,0 +1,11 @@ +import kotlin.platform.platformStatic + +object X { + platformStatic val x = "OK" + + fun fn(value : String = x): String = value +} + +fun box(): String { + return X.fn() +} \ No newline at end of file diff --git a/compiler/testData/codegen/boxWithStdlib/platformStatic/propertyInc.kt b/compiler/testData/codegen/boxWithStdlib/platformStatic/propertyInc.kt new file mode 100644 index 00000000000..558712c3918 --- /dev/null +++ b/compiler/testData/codegen/boxWithStdlib/platformStatic/propertyInc.kt @@ -0,0 +1,31 @@ +import kotlin.platform.platformStatic + +object A { + + platformStatic var a: Int = 1 + + var b: Int = 1 + [platformStatic] get + + var c: Int = 1 + [platformStatic] set + +} + + + +fun box(): String { + if (A.test1() != "OK") return "fail 1" + + if (A.test2() != "OK") return "fail 2" + + if (A.test3() != "1OK") return "fail 3" + + if (A.test4() != "1OK") return "fail 4" + + if (with(A) {"1".test5()} != "1OK") return "fail 5" + + if (A.c != "OK") return "fail 6" + + return "OK" +} \ No newline at end of file diff --git a/compiler/testData/codegen/boxWithStdlib/platformStatic/simple.kt b/compiler/testData/codegen/boxWithStdlib/platformStatic/simple.kt index 8e59ad853d6..ca70adfa162 100644 --- a/compiler/testData/codegen/boxWithStdlib/platformStatic/simple.kt +++ b/compiler/testData/codegen/boxWithStdlib/platformStatic/simple.kt @@ -4,6 +4,8 @@ object A { val b: String = "OK" + platformStatic val c: String = "OK" + platformStatic fun test1() : String { return b } @@ -36,5 +38,7 @@ fun box(): String { if (with(A) {"1".test5()} != "1OK") return "fail 5" + if (A.c != "OK") return "fail 6" + return "OK" } \ No newline at end of file diff --git a/compiler/testData/compileJavaAgainstKotlin/platformStatic/simpleClassObjectProperty.java b/compiler/testData/compileJavaAgainstKotlin/platformStatic/simpleClassObjectProperty.java new file mode 100644 index 00000000000..6ce0cade579 --- /dev/null +++ b/compiler/testData/compileJavaAgainstKotlin/platformStatic/simpleClassObjectProperty.java @@ -0,0 +1,10 @@ +package test; + +class Test { + + public static void main(String[] args) { + A.getB(); + A.getC(new A()); + } + +} diff --git a/compiler/testData/compileJavaAgainstKotlin/platformStatic/simpleClassObjectProperty.kt b/compiler/testData/compileJavaAgainstKotlin/platformStatic/simpleClassObjectProperty.kt new file mode 100644 index 00000000000..b37c084bb94 --- /dev/null +++ b/compiler/testData/compileJavaAgainstKotlin/platformStatic/simpleClassObjectProperty.kt @@ -0,0 +1,21 @@ +package test + +import kotlin.platform.platformStatic + +class A { + class object { + [platformStatic] val b: String = "OK" + + var A.c: String + [platformStatic] get() = "OK" + [platformStatic] set(t: String) {} + } +} + +fun main(args: Array) { + A.b + with(A) { + A().c + A().c = "123" + } +} \ No newline at end of file diff --git a/compiler/testData/compileJavaAgainstKotlin/platformStatic/simpleObjectProperty.java b/compiler/testData/compileJavaAgainstKotlin/platformStatic/simpleObjectProperty.java new file mode 100644 index 00000000000..ff4db0c85f2 --- /dev/null +++ b/compiler/testData/compileJavaAgainstKotlin/platformStatic/simpleObjectProperty.java @@ -0,0 +1,10 @@ +package test; + +class Test { + + public static void main(String[] args) { + A.getB(); + A.getC(A.INSTANCE$); + } + +} diff --git a/compiler/testData/compileJavaAgainstKotlin/platformStatic/simpleObjectProperty.kt b/compiler/testData/compileJavaAgainstKotlin/platformStatic/simpleObjectProperty.kt new file mode 100644 index 00000000000..fc0c3462116 --- /dev/null +++ b/compiler/testData/compileJavaAgainstKotlin/platformStatic/simpleObjectProperty.kt @@ -0,0 +1,20 @@ +package test + +import kotlin.platform.platformStatic + +object A { + [platformStatic] val b: String = "OK" + + var A.c: String + [platformStatic]get() = "OK" + [platformStatic]set(t: String) {} + +} + +fun main(args: Array) { + A.b + with(A) { + A.c + A.c = "123" + } +} \ No newline at end of file diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/platformStatic/property.kt b/compiler/testData/diagnostics/testsWithStdLib/annotations/platformStatic/property.kt index e005c30f4b3..20053f5dbf5 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/platformStatic/property.kt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/platformStatic/property.kt @@ -1,29 +1,44 @@ // !DIAGNOSTICS: -UNUSED_VARIABLE import kotlin.platform.platformStatic +open class B { + public open val base1 : Int = 1 + public open val base2 : Int = 1 +} + class A { - class object { + class object : B() { var p1:Int = 1 - [platformStatic] set(p: Int) { + [platformStatic] set(p: Int) { p1 = 1 } - [platformStatic] val z = 1; + [platformStatic] val z = 1; + + [platformStatic] override val base1: Int = 0 + + override val base2: Int = 0 + [platformStatic] get } - object A { + object A : B() { var p:Int = 1 - [platformStatic] set(p1: Int) { + [platformStatic] set(p1: Int) { p = 1 } - [platformStatic] val z = 1; + [platformStatic] val z = 1; + + [platformStatic] override val base1: Int = 0 + + override val base2: Int = 0 + [platformStatic] get } var p:Int = 1 - [platformStatic] set(p1: Int) { + [platformStatic] set(p1: Int) { p = 1 } - [platformStatic] val z = 1; + [platformStatic] val z2 = 1; } \ No newline at end of file diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/platformStatic/property.lazy.log b/compiler/testData/diagnostics/testsWithStdLib/annotations/platformStatic/property.lazy.log index 674b13c7dcc..ece7a026b34 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/platformStatic/property.lazy.log +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/platformStatic/property.lazy.log @@ -6,24 +6,20 @@ DescriptorResolver@3 { = IntValue@4 = IntValue@5 = IntValue@6 - = JetTypeImpl@7['Int'] - = JetTypeImpl@7['Int'] - = JetTypeImpl@7['Int'] + = IntValue@7 + = IntValue@8 + = IntValue@9 + = IntValue@10 + = IntValue@11 + = IntValue@12 + = JetTypeImpl@13['Int'] + = JetTypeImpl@13['Int'] + = JetTypeImpl@13['Int'] } DeserializedClassDescriptor@2['platformStatic'] { - containingDeclaration = LazyJavaPackageFragment@8['platform'] - primaryConstructor = ConstructorDescriptorImpl@9[''] -} - -LazyAnnotationDescriptor@10 { - resolutionResults = OverloadResolutionResultsImpl@11 - type = JetTypeImpl@12['platformStatic'] -} - -LazyAnnotationDescriptor@13 { - resolutionResults = OverloadResolutionResultsImpl@14 - type = JetTypeImpl@15['platformStatic'] + containingDeclaration = LazyJavaPackageFragment@14['platform'] + primaryConstructor = ConstructorDescriptorImpl@15[''] } LazyAnnotationDescriptor@16 { @@ -46,146 +42,211 @@ LazyAnnotationDescriptor@25 { type = JetTypeImpl@27['platformStatic'] } -LazyJavaPackageFragmentProvider@28 { - packageFragments('': FqName@29) = LazyJavaPackageFragment@30[''] - packageFragments('A': FqName@31) = null - packageFragments('Int': FqName@32) = null - packageFragments('java': FqName@33) = LazyJavaPackageFragment@34['java'] - packageFragments('java.lang': FqName@35) = LazyJavaPackageFragment@36['lang'] - packageFragments('java.lang.Int': FqName@37) = null - packageFragments('java.lang.platformStatic': FqName@38) = null - packageFragments('kotlin': FqName@39) = LazyJavaPackageFragment@40['kotlin'] - packageFragments('kotlin.Int': FqName@41) = null - packageFragments('kotlin.io': FqName@42) = LazyJavaPackageFragment@43['io'] - packageFragments('kotlin.io.Int': FqName@44) = null - packageFragments('kotlin.io.platformStatic': FqName@45) = null - packageFragments('kotlin.jvm': FqName@46) = LazyJavaPackageFragment@47['jvm'] - packageFragments('kotlin.jvm.Int': FqName@48) = null - packageFragments('kotlin.jvm.platformStatic': FqName@49) = null - packageFragments('kotlin.platform': FqName@50) = LazyJavaPackageFragment@8['platform'] - packageFragments('kotlin.platform.platformStatic': FqName@51) = null - packageFragments('kotlin.platformStatic': FqName@52) = null - packageFragments('platformStatic': FqName@53) = null +LazyAnnotationDescriptor@28 { + resolutionResults = OverloadResolutionResultsImpl@29 + type = JetTypeImpl@30['platformStatic'] } -LazyJavaPackageFragment@30[''] { - classes('Int': Name@54) = null // through LazyPackageFragmentScopeForJavaPackage@55 - classes('kotlin': Name@56) = null // through LazyPackageFragmentScopeForJavaPackage@55 - classes('p': Name@57) = null // through LazyPackageFragmentScopeForJavaPackage@55 - classes('p1': Name@58) = null // through LazyPackageFragmentScopeForJavaPackage@55 - classes('platformStatic': Name@59) = null // through LazyPackageFragmentScopeForJavaPackage@55 - deserializedPackageScope = Empty@60 // through LazyPackageFragmentScopeForJavaPackage@55 - functions('kotlin': Name@61) = EmptyList@62[empty] // through LazyPackageFragmentScopeForJavaPackage@55 - memberIndex = computeMemberIndex$1@63 // through LazyPackageFragmentScopeForJavaPackage@55 +LazyAnnotationDescriptor@31 { + resolutionResults = OverloadResolutionResultsImpl@32 + type = JetTypeImpl@33['platformStatic'] } -LazyJavaPackageFragment@43['io'] { - classes('Int': Name@54) = null // through LazyPackageFragmentScopeForJavaPackage@64 - classes('p': Name@57) = null // through LazyPackageFragmentScopeForJavaPackage@64 - classes('p1': Name@58) = null // through LazyPackageFragmentScopeForJavaPackage@64 - deserializedPackageScope = DeserializedPackageMemberScope@65 // through LazyPackageFragmentScopeForJavaPackage@64 - membersProtos = LinkedHashMap@66 // through DeserializedPackageMemberScope@65 - properties('p': Name@57) = EmptyList@62[empty] // through DeserializedPackageMemberScope@65 - properties('p1': Name@58) = EmptyList@62[empty] // through DeserializedPackageMemberScope@65 +LazyAnnotationDescriptor@34 { + resolutionResults = OverloadResolutionResultsImpl@35 + type = JetTypeImpl@36['platformStatic'] } -LazyJavaPackageFragment@34['java'] { - classes('lang': Name@67) = null // through LazyPackageFragmentScopeForJavaPackage@68 - deserializedPackageScope = Empty@60 // through LazyPackageFragmentScopeForJavaPackage@68 - functions('lang': Name@69) = EmptyList@62[empty] // through LazyPackageFragmentScopeForJavaPackage@68 - memberIndex = computeMemberIndex$1@70 // through LazyPackageFragmentScopeForJavaPackage@68 +LazyAnnotationDescriptor@37 { + resolutionResults = OverloadResolutionResultsImpl@38 + type = JetTypeImpl@39['platformStatic'] } -LazyJavaPackageFragment@47['jvm'] { - classes('Int': Name@54) = null // through LazyPackageFragmentScopeForJavaPackage@71 - classes('p': Name@57) = null // through LazyPackageFragmentScopeForJavaPackage@71 - classes('p1': Name@58) = null // through LazyPackageFragmentScopeForJavaPackage@71 - deserializedPackageScope = Empty@60 // through LazyPackageFragmentScopeForJavaPackage@71 +LazyAnnotationDescriptor@40 { + resolutionResults = OverloadResolutionResultsImpl@41 + type = JetTypeImpl@42['platformStatic'] } -LazyJavaPackageFragment@40['kotlin'] { - classes('Int': Name@54) = null // through LazyPackageFragmentScopeForJavaPackage@72 - classes('io': Name@73) = null // through LazyPackageFragmentScopeForJavaPackage@72 - classes('jvm': Name@74) = null // through LazyPackageFragmentScopeForJavaPackage@72 - classes('p': Name@57) = null // through LazyPackageFragmentScopeForJavaPackage@72 - classes('p1': Name@58) = null // through LazyPackageFragmentScopeForJavaPackage@72 - classes('platform': Name@75) = null // through LazyPackageFragmentScopeForJavaPackage@72 - deserializedPackageScope = DeserializedPackageMemberScope@76 // through LazyPackageFragmentScopeForJavaPackage@72 - functions('io': Name@77) = EmptyList@62[empty] // through DeserializedPackageMemberScope@76 - functions('io': Name@77) = EmptyList@62[empty] // through LazyPackageFragmentScopeForJavaPackage@72 - functions('jvm': Name@78) = EmptyList@62[empty] // through DeserializedPackageMemberScope@76 - functions('jvm': Name@78) = EmptyList@62[empty] // through LazyPackageFragmentScopeForJavaPackage@72 - functions('platform': Name@79) = EmptyList@62[empty] // through DeserializedPackageMemberScope@76 - functions('platform': Name@79) = EmptyList@62[empty] // through LazyPackageFragmentScopeForJavaPackage@72 - memberIndex = computeMemberIndex$1@80 // through LazyPackageFragmentScopeForJavaPackage@72 - membersProtos = LinkedHashMap@81 // through DeserializedPackageMemberScope@76 - properties('io': Name@77) = EmptyList@62[empty] // through DeserializedPackageMemberScope@76 - properties('jvm': Name@78) = EmptyList@62[empty] // through DeserializedPackageMemberScope@76 - properties('p': Name@57) = EmptyList@62[empty] // through DeserializedPackageMemberScope@76 - properties('p1': Name@58) = EmptyList@62[empty] // through DeserializedPackageMemberScope@76 - properties('platform': Name@79) = EmptyList@62[empty] // through DeserializedPackageMemberScope@76 +LazyAnnotationDescriptor@43 { + resolutionResults = OverloadResolutionResultsImpl@44 + type = JetTypeImpl@45['platformStatic'] } -LazyJavaPackageFragment@36['lang'] { - classes('p': Name@57) = null // through LazyPackageFragmentScopeForJavaPackage@82 - classes('p1': Name@58) = null // through LazyPackageFragmentScopeForJavaPackage@82 - deserializedPackageScope = Empty@60 // through LazyPackageFragmentScopeForJavaPackage@82 +LazyJavaPackageFragmentProvider@46 { + packageFragments('': FqName@47) = LazyJavaPackageFragment@48[''] + packageFragments('A': FqName@49) = null + packageFragments('B': FqName@50) = null + packageFragments('Int': FqName@51) = null + packageFragments('java': FqName@52) = LazyJavaPackageFragment@53['java'] + packageFragments('java.lang': FqName@54) = LazyJavaPackageFragment@55['lang'] + packageFragments('java.lang.B': FqName@56) = null + packageFragments('java.lang.Int': FqName@57) = null + packageFragments('java.lang.platformStatic': FqName@58) = null + packageFragments('kotlin': FqName@59) = LazyJavaPackageFragment@60['kotlin'] + packageFragments('kotlin.B': FqName@61) = null + packageFragments('kotlin.Int': FqName@62) = null + packageFragments('kotlin.io': FqName@63) = LazyJavaPackageFragment@64['io'] + packageFragments('kotlin.io.B': FqName@65) = null + packageFragments('kotlin.io.Int': FqName@66) = null + packageFragments('kotlin.io.platformStatic': FqName@67) = null + packageFragments('kotlin.jvm': FqName@68) = LazyJavaPackageFragment@69['jvm'] + packageFragments('kotlin.jvm.B': FqName@70) = null + packageFragments('kotlin.jvm.Int': FqName@71) = null + packageFragments('kotlin.jvm.platformStatic': FqName@72) = null + packageFragments('kotlin.platform': FqName@73) = LazyJavaPackageFragment@14['platform'] + packageFragments('kotlin.platform.platformStatic': FqName@74) = null + packageFragments('kotlin.platformStatic': FqName@75) = null + packageFragments('platformStatic': FqName@76) = null } -LazyJavaPackageFragment@8['platform'] { - classes('platformStatic': Name@83) = DeserializedClassDescriptor@2['platformStatic'] // through LazyPackageFragmentScopeForJavaPackage@84 - deserializedPackageScope = Empty@60 // through LazyPackageFragmentScopeForJavaPackage@84 - functions('platformStatic': Name@85) = EmptyList@62[empty] // through LazyPackageFragmentScopeForJavaPackage@84 - memberIndex = computeMemberIndex$1@86 // through LazyPackageFragmentScopeForJavaPackage@84 +LazyJavaPackageFragment@48[''] { + classes('Int': Name@77) = null // through LazyPackageFragmentScopeForJavaPackage@78 + classes('kotlin': Name@79) = null // through LazyPackageFragmentScopeForJavaPackage@78 + classes('p': Name@80) = null // through LazyPackageFragmentScopeForJavaPackage@78 + classes('p1': Name@81) = null // through LazyPackageFragmentScopeForJavaPackage@78 + classes('platformStatic': Name@82) = null // through LazyPackageFragmentScopeForJavaPackage@78 + deserializedPackageScope = Empty@83 // through LazyPackageFragmentScopeForJavaPackage@78 + functions('kotlin': Name@84) = EmptyList@85[empty] // through LazyPackageFragmentScopeForJavaPackage@78 + memberIndex = computeMemberIndex$1@86 // through LazyPackageFragmentScopeForJavaPackage@78 } -ResolutionTaskHolder@87 { - = ArrayList@88[1] { ResolutionCandidate@89 } - = ArrayList@90[1] { ResolutionCandidate@89 } - = EmptyList@62[empty] - = EmptyList@62[empty] +LazyJavaPackageFragment@64['io'] { + classes('Int': Name@77) = null // through LazyPackageFragmentScopeForJavaPackage@87 + classes('p': Name@80) = null // through LazyPackageFragmentScopeForJavaPackage@87 + classes('p1': Name@81) = null // through LazyPackageFragmentScopeForJavaPackage@87 + deserializedPackageScope = DeserializedPackageMemberScope@88 // through LazyPackageFragmentScopeForJavaPackage@87 + membersProtos = LinkedHashMap@89 // through DeserializedPackageMemberScope@88 + properties('p': Name@80) = EmptyList@85[empty] // through DeserializedPackageMemberScope@88 + properties('p1': Name@81) = EmptyList@85[empty] // through DeserializedPackageMemberScope@88 } -ResolutionTaskHolder@91 { - = ArrayList@92[1] { ResolutionCandidate@93 } - = ArrayList@94[1] { ResolutionCandidate@93 } - = EmptyList@62[empty] - = EmptyList@62[empty] +LazyJavaPackageFragment@53['java'] { + classes('lang': Name@90) = null // through LazyPackageFragmentScopeForJavaPackage@91 + deserializedPackageScope = Empty@83 // through LazyPackageFragmentScopeForJavaPackage@91 + functions('lang': Name@92) = EmptyList@85[empty] // through LazyPackageFragmentScopeForJavaPackage@91 + memberIndex = computeMemberIndex$1@93 // through LazyPackageFragmentScopeForJavaPackage@91 } -ResolutionTaskHolder@95 { - = ArrayList@96[1] { ResolutionCandidate@97 } - = ArrayList@98[1] { ResolutionCandidate@97 } - = EmptyList@62[empty] - = EmptyList@62[empty] +LazyJavaPackageFragment@69['jvm'] { + classes('Int': Name@77) = null // through LazyPackageFragmentScopeForJavaPackage@94 + classes('p': Name@80) = null // through LazyPackageFragmentScopeForJavaPackage@94 + classes('p1': Name@81) = null // through LazyPackageFragmentScopeForJavaPackage@94 + deserializedPackageScope = Empty@83 // through LazyPackageFragmentScopeForJavaPackage@94 } -ResolutionTaskHolder@99 { - = ArrayList@100[1] { ResolutionCandidate@101 } - = ArrayList@102[1] { ResolutionCandidate@101 } +LazyJavaPackageFragment@60['kotlin'] { + classes('Int': Name@77) = null // through LazyPackageFragmentScopeForJavaPackage@95 + classes('io': Name@96) = null // through LazyPackageFragmentScopeForJavaPackage@95 + classes('jvm': Name@97) = null // through LazyPackageFragmentScopeForJavaPackage@95 + classes('p': Name@80) = null // through LazyPackageFragmentScopeForJavaPackage@95 + classes('p1': Name@81) = null // through LazyPackageFragmentScopeForJavaPackage@95 + classes('platform': Name@98) = null // through LazyPackageFragmentScopeForJavaPackage@95 + deserializedPackageScope = DeserializedPackageMemberScope@99 // through LazyPackageFragmentScopeForJavaPackage@95 + functions('io': Name@100) = EmptyList@85[empty] // through DeserializedPackageMemberScope@99 + functions('io': Name@100) = EmptyList@85[empty] // through LazyPackageFragmentScopeForJavaPackage@95 + functions('jvm': Name@101) = EmptyList@85[empty] // through DeserializedPackageMemberScope@99 + functions('jvm': Name@101) = EmptyList@85[empty] // through LazyPackageFragmentScopeForJavaPackage@95 + functions('platform': Name@102) = EmptyList@85[empty] // through DeserializedPackageMemberScope@99 + functions('platform': Name@102) = EmptyList@85[empty] // through LazyPackageFragmentScopeForJavaPackage@95 + memberIndex = computeMemberIndex$1@103 // through LazyPackageFragmentScopeForJavaPackage@95 + membersProtos = LinkedHashMap@104 // through DeserializedPackageMemberScope@99 + properties('io': Name@100) = EmptyList@85[empty] // through DeserializedPackageMemberScope@99 + properties('jvm': Name@101) = EmptyList@85[empty] // through DeserializedPackageMemberScope@99 + properties('p': Name@80) = EmptyList@85[empty] // through DeserializedPackageMemberScope@99 + properties('p1': Name@81) = EmptyList@85[empty] // through DeserializedPackageMemberScope@99 + properties('platform': Name@102) = EmptyList@85[empty] // through DeserializedPackageMemberScope@99 } -ResolutionTaskHolder@103 { - = ArrayList@104[1] { ResolutionCandidate@105 } - = ArrayList@106[1] { ResolutionCandidate@105 } +LazyJavaPackageFragment@55['lang'] { + classes('p': Name@80) = null // through LazyPackageFragmentScopeForJavaPackage@105 + classes('p1': Name@81) = null // through LazyPackageFragmentScopeForJavaPackage@105 + deserializedPackageScope = Empty@83 // through LazyPackageFragmentScopeForJavaPackage@105 } -ResolutionTaskHolder@107 { - = ArrayList@108[1] { ResolutionCandidate@109 } - = ArrayList@110[1] { ResolutionCandidate@109 } +LazyJavaPackageFragment@14['platform'] { + classes('platformStatic': Name@106) = DeserializedClassDescriptor@2['platformStatic'] // through LazyPackageFragmentScopeForJavaPackage@107 + deserializedPackageScope = Empty@83 // through LazyPackageFragmentScopeForJavaPackage@107 + functions('platformStatic': Name@108) = EmptyList@85[empty] // through LazyPackageFragmentScopeForJavaPackage@107 + memberIndex = computeMemberIndex$1@109 // through LazyPackageFragmentScopeForJavaPackage@107 } -ResolutionTaskHolder@111 { - = ArrayList@112[1] { ResolutionCandidate@113 } - = ArrayList@114[1] { ResolutionCandidate@113 } +ResolutionTaskHolder@110 { + = ArrayList@111[1] { ResolutionCandidate@112 } + = ArrayList@113[1] { ResolutionCandidate@112 } + = EmptyList@85[empty] + = EmptyList@85[empty] } -ResolutionTaskHolder@115 { - = ArrayList@116[1] { ResolutionCandidate@117 } - = ArrayList@118[1] { ResolutionCandidate@117 } +ResolutionTaskHolder@114 { + = ArrayList@115[1] { ResolutionCandidate@116 } + = ArrayList@117[1] { ResolutionCandidate@116 } + = EmptyList@85[empty] + = EmptyList@85[empty] } -ResolutionTaskHolder@119 { - = ArrayList@120[1] { ResolutionCandidate@121 } - = ArrayList@122[1] { ResolutionCandidate@121 } +ResolutionTaskHolder@118 { + = ArrayList@119[1] { ResolutionCandidate@120 } + = ArrayList@121[1] { ResolutionCandidate@120 } + = EmptyList@85[empty] + = EmptyList@85[empty] +} + +ResolutionTaskHolder@122 { + = ArrayList@123[1] { ResolutionCandidate@124 } + = ArrayList@125[1] { ResolutionCandidate@124 } +} + +ResolutionTaskHolder@126 { + = ArrayList@127[1] { ResolutionCandidate@128 } + = ArrayList@129[1] { ResolutionCandidate@128 } +} + +ResolutionTaskHolder@130 { + = ArrayList@131[1] { ResolutionCandidate@132 } + = ArrayList@133[1] { ResolutionCandidate@132 } +} + +ResolutionTaskHolder@134 { + = ArrayList@135[1] { ResolutionCandidate@136 } + = ArrayList@137[1] { ResolutionCandidate@136 } +} + +ResolutionTaskHolder@138 { + = ArrayList@139[1] { ResolutionCandidate@140 } + = ArrayList@141[1] { ResolutionCandidate@140 } +} + +ResolutionTaskHolder@142 { + = ArrayList@143[1] { ResolutionCandidate@144 } + = ArrayList@145[1] { ResolutionCandidate@144 } +} + +ResolutionTaskHolder@146 { + = ArrayList@147[1] { ResolutionCandidate@148 } + = ArrayList@149[1] { ResolutionCandidate@148 } +} + +ResolutionTaskHolder@150 { + = ArrayList@151[1] { ResolutionCandidate@152 } + = ArrayList@153[1] { ResolutionCandidate@152 } +} + +ResolutionTaskHolder@154 { + = ArrayList@155[1] { ResolutionCandidate@156 } + = ArrayList@157[1] { ResolutionCandidate@156 } +} + +ResolutionTaskHolder@158 { + = ArrayList@159[1] { ResolutionCandidate@160 } + = ArrayList@161[1] { ResolutionCandidate@160 } +} + +ResolutionTaskHolder@162 { + = ArrayList@163[1] { ResolutionCandidate@164 } + = ArrayList@165[1] { ResolutionCandidate@164 } +} + +ResolutionTaskHolder@166 { + = ArrayList@167[1] { ResolutionCandidate@168 } + = ArrayList@169[1] { ResolutionCandidate@168 } } diff --git a/compiler/testData/diagnostics/testsWithStdLib/annotations/platformStatic/property.txt b/compiler/testData/diagnostics/testsWithStdLib/annotations/platformStatic/property.txt index 9ed5e1fbae2..70d17b0963f 100644 --- a/compiler/testData/diagnostics/testsWithStdLib/annotations/platformStatic/property.txt +++ b/compiler/testData/diagnostics/testsWithStdLib/annotations/platformStatic/property.txt @@ -3,13 +3,15 @@ package internal final class A { public constructor A() internal final var p: kotlin.Int - kotlin.platform.platformStatic() internal final val z: kotlin.Int = 1 + kotlin.platform.platformStatic() internal final val z2: kotlin.Int = 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 - internal class object { + internal class object : B { private constructor () + kotlin.platform.platformStatic() public open override /*1*/ val base1: kotlin.Int = 0 + public open override /*1*/ val base2: kotlin.Int = 0 internal final var p1: kotlin.Int kotlin.platform.platformStatic() internal final val z: kotlin.Int = 1 public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean @@ -17,8 +19,10 @@ internal final class A { public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String } - internal object A { + internal object A : B { private constructor A() + kotlin.platform.platformStatic() public open override /*1*/ val base1: kotlin.Int = 0 + public open override /*1*/ val base2: kotlin.Int = 0 internal final var p: kotlin.Int kotlin.platform.platformStatic() internal final val z: kotlin.Int = 1 public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean @@ -27,6 +31,8 @@ internal final class A { public class object : A.A { private constructor () + kotlin.platform.platformStatic() public open override /*1*/ /*fake_override*/ val base1: kotlin.Int + public open override /*1*/ /*fake_override*/ val base2: kotlin.Int internal final override /*1*/ /*fake_override*/ var p: kotlin.Int kotlin.platform.platformStatic() internal final override /*1*/ /*fake_override*/ val z: kotlin.Int public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean @@ -35,3 +41,12 @@ internal final class A { } } } + +internal open class B { + public constructor B() + public open val base1: kotlin.Int = 1 + public open val base2: kotlin.Int = 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 +} diff --git a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java index 18c2fb39946..3d6facad017 100644 --- a/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/codegen/generated/BlackBoxWithStdlibCodegenTestGenerated.java @@ -1664,6 +1664,18 @@ public class BlackBoxWithStdlibCodegenTestGenerated extends AbstractBlackBoxCode doTestWithStdlib(fileName); } + @TestMetadata("propertyAsDefault.kt") + public void testPropertyAsDefault() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/platformStatic/propertyAsDefault.kt"); + doTestWithStdlib(fileName); + } + + @TestMetadata("propertyInc.kt") + public void testPropertyInc() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/platformStatic/propertyInc.kt"); + doTestWithStdlib(fileName); + } + @TestMetadata("simple.kt") public void testSimple() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/codegen/boxWithStdlib/platformStatic/simple.kt"); diff --git a/compiler/tests/org/jetbrains/jet/jvm/compiler/CompileJavaAgainstKotlinTestGenerated.java b/compiler/tests/org/jetbrains/jet/jvm/compiler/CompileJavaAgainstKotlinTestGenerated.java index d8e4faf2c2a..35486784aad 100644 --- a/compiler/tests/org/jetbrains/jet/jvm/compiler/CompileJavaAgainstKotlinTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/jvm/compiler/CompileJavaAgainstKotlinTestGenerated.java @@ -427,11 +427,23 @@ public class CompileJavaAgainstKotlinTestGenerated extends AbstractCompileJavaAg doTest(fileName); } + @TestMetadata("simpleClassObjectProperty.kt") + public void testSimpleClassObjectProperty() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/compileJavaAgainstKotlin/platformStatic/simpleClassObjectProperty.kt"); + doTest(fileName); + } + @TestMetadata("simpleObject.kt") public void testSimpleObject() throws Exception { String fileName = JetTestUtils.navigationMetadata("compiler/testData/compileJavaAgainstKotlin/platformStatic/simpleObject.kt"); doTest(fileName); } + + @TestMetadata("simpleObjectProperty.kt") + public void testSimpleObjectProperty() throws Exception { + String fileName = JetTestUtils.navigationMetadata("compiler/testData/compileJavaAgainstKotlin/platformStatic/simpleObjectProperty.kt"); + doTest(fileName); + } } @TestMetadata("compiler/testData/compileJavaAgainstKotlin/property") diff --git a/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java b/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java index b0a09d0f18f..87d107d0e0a 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java @@ -266,11 +266,6 @@ public class DescriptorUtils { return isKindOf(descriptor, ClassKind.CLASS); } - public static boolean containerKindIs(@NotNull DeclarationDescriptor descriptor, @NotNull ClassKind kind) { - DeclarationDescriptor parentDeclaration = descriptor.getContainingDeclaration(); - return parentDeclaration != null && isKindOf(parentDeclaration, kind); - } - public static boolean isKindOf(@Nullable DeclarationDescriptor descriptor, @NotNull ClassKind classKind) { return descriptor instanceof ClassDescriptor && ((ClassDescriptor) descriptor).getKind() == classKind; }