diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/JvmCodegenUtil.java b/compiler/backend/src/org/jetbrains/jet/codegen/JvmCodegenUtil.java index 08003f2c108..b74fd6393ab 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/JvmCodegenUtil.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/JvmCodegenUtil.java @@ -31,6 +31,7 @@ import org.jetbrains.jet.codegen.context.PackageContext; import org.jetbrains.jet.codegen.state.JetTypeMapper; import org.jetbrains.jet.descriptors.serialization.descriptors.DeserializedCallableMemberDescriptor; import org.jetbrains.jet.lang.descriptors.*; +import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.codeFragmentUtil.CodeFragmentUtilPackage; import org.jetbrains.jet.lang.resolve.DescriptorToSourceUtils; @@ -39,8 +40,8 @@ import org.jetbrains.jet.lang.resolve.java.lazy.descriptors.LazyJavaPackageFragm import org.jetbrains.jet.lang.resolve.kotlin.KotlinJvmBinaryClass; import org.jetbrains.jet.lang.resolve.kotlin.VirtualFileKotlinClass; import org.jetbrains.jet.lang.resolve.kotlin.incremental.IncrementalPackageFragmentProvider; +import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.types.JetType; -import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import java.io.File; @@ -241,15 +242,20 @@ public class JvmCodegenUtil { public static boolean isPlatformStaticInObject(CallableDescriptor descriptor) { if (DescriptorUtils.isObject(descriptor.getContainingDeclaration())) { - return KotlinBuiltIns.getInstance().isPlatformStatic(descriptor); + return hasPlatformStaticAnnotation(descriptor); } return false; } public static boolean isPlatformStaticInClassObject(CallableDescriptor descriptor) { if (DescriptorUtils.isClassObject(descriptor.getContainingDeclaration())) { - return KotlinBuiltIns.getInstance().isPlatformStatic(descriptor); + return hasPlatformStaticAnnotation(descriptor); } return false; } + + public static boolean hasPlatformStaticAnnotation(@NotNull CallableDescriptor descriptor) { + AnnotationDescriptor platformStaticAnnotation = descriptor.getAnnotations().findAnnotation(new FqName("kotlin.platform.platformStatic")); + return platformStaticAnnotation != null; + } } diff --git a/compiler/testData/builtin-classes.txt b/compiler/testData/builtin-classes.txt index 53d6cee47db..f87999680df 100644 --- a/compiler/testData/builtin-classes.txt +++ b/compiler/testData/builtin-classes.txt @@ -1493,10 +1493,6 @@ public final annotation class noinline : kotlin.Annotation { /*primary*/ public constructor noinline() } -public final annotation class platformStatic : kotlin.Annotation { - /*primary*/ public constructor platformStatic() -} - public final annotation class suppress : kotlin.Annotation { /*primary*/ public constructor suppress(/*0*/ vararg names: kotlin.String /*kotlin.Array*/) internal final val names: kotlin.Array diff --git a/compiler/testData/codegen/boxWithJava/platformStatic/annotations/simpleClassObject.kt b/compiler/testData/codegen/boxWithJava/platformStatic/annotations/simpleClassObject.kt index 550e0f00eba..057922da3eb 100644 --- a/compiler/testData/codegen/boxWithJava/platformStatic/annotations/simpleClassObject.kt +++ b/compiler/testData/codegen/boxWithJava/platformStatic/annotations/simpleClassObject.kt @@ -1,5 +1,6 @@ import java.lang.annotation.Retention import java.lang.annotation.RetentionPolicy +import kotlin.platform.platformStatic Retention(RetentionPolicy.RUNTIME) annotation class testAnnotation diff --git a/compiler/testData/codegen/boxWithJava/platformStatic/classObject/simpleClassObject.kt b/compiler/testData/codegen/boxWithJava/platformStatic/classObject/simpleClassObject.kt index 6031ebd4b29..3605a3974d8 100644 --- a/compiler/testData/codegen/boxWithJava/platformStatic/classObject/simpleClassObject.kt +++ b/compiler/testData/codegen/boxWithJava/platformStatic/classObject/simpleClassObject.kt @@ -1,3 +1,5 @@ +import kotlin.platform.platformStatic + class A { class object { diff --git a/compiler/testData/codegen/boxWithJava/platformStatic/object/simpleObject.kt b/compiler/testData/codegen/boxWithJava/platformStatic/object/simpleObject.kt index 15b8ec8db35..7e7a01d8f56 100644 --- a/compiler/testData/codegen/boxWithJava/platformStatic/object/simpleObject.kt +++ b/compiler/testData/codegen/boxWithJava/platformStatic/object/simpleObject.kt @@ -1,3 +1,5 @@ +import kotlin.platform.platformStatic + object A { val b: String = "OK" diff --git a/compiler/testData/codegen/boxWithStdlib/platformStatic/callableRef.kt b/compiler/testData/codegen/boxWithStdlib/platformStatic/callableRef.kt index 816e4b4504d..a77d682d117 100644 --- a/compiler/testData/codegen/boxWithStdlib/platformStatic/callableRef.kt +++ b/compiler/testData/codegen/boxWithStdlib/platformStatic/callableRef.kt @@ -1,3 +1,5 @@ +import kotlin.platform.platformStatic + object A { val b: String = "OK" diff --git a/compiler/testData/codegen/boxWithStdlib/platformStatic/closure.kt b/compiler/testData/codegen/boxWithStdlib/platformStatic/closure.kt index dab5cfccaa1..018cb227e5e 100644 --- a/compiler/testData/codegen/boxWithStdlib/platformStatic/closure.kt +++ b/compiler/testData/codegen/boxWithStdlib/platformStatic/closure.kt @@ -1,3 +1,5 @@ +import kotlin.platform.platformStatic + object A { val b: String = "OK" diff --git a/compiler/testData/codegen/boxWithStdlib/platformStatic/convention.kt b/compiler/testData/codegen/boxWithStdlib/platformStatic/convention.kt index 6010aa5ba74..7dd0d6ab328 100644 --- a/compiler/testData/codegen/boxWithStdlib/platformStatic/convention.kt +++ b/compiler/testData/codegen/boxWithStdlib/platformStatic/convention.kt @@ -1,3 +1,5 @@ +import kotlin.platform.platformStatic + class B(var s: Int = 0) { } diff --git a/compiler/testData/codegen/boxWithStdlib/platformStatic/default.kt b/compiler/testData/codegen/boxWithStdlib/platformStatic/default.kt index 4d73ba984f3..b4892461353 100644 --- a/compiler/testData/codegen/boxWithStdlib/platformStatic/default.kt +++ b/compiler/testData/codegen/boxWithStdlib/platformStatic/default.kt @@ -1,3 +1,4 @@ +import kotlin.platform.platformStatic object A { diff --git a/compiler/testData/codegen/boxWithStdlib/platformStatic/explicitObject.kt b/compiler/testData/codegen/boxWithStdlib/platformStatic/explicitObject.kt index 9ed5be8f2cc..7e418fb9b4c 100644 --- a/compiler/testData/codegen/boxWithStdlib/platformStatic/explicitObject.kt +++ b/compiler/testData/codegen/boxWithStdlib/platformStatic/explicitObject.kt @@ -1,3 +1,5 @@ +import kotlin.platform.platformStatic + object AX { platformStatic fun aStatic(): String { diff --git a/compiler/testData/codegen/boxWithStdlib/platformStatic/inline.kt b/compiler/testData/codegen/boxWithStdlib/platformStatic/inline.kt index d1422283c87..4b1a20f3d39 100644 --- a/compiler/testData/codegen/boxWithStdlib/platformStatic/inline.kt +++ b/compiler/testData/codegen/boxWithStdlib/platformStatic/inline.kt @@ -1,3 +1,4 @@ +import kotlin.platform.platformStatic object A { diff --git a/compiler/testData/codegen/boxWithStdlib/platformStatic/simple.kt b/compiler/testData/codegen/boxWithStdlib/platformStatic/simple.kt index e633e42fbcd..8e59ad853d6 100644 --- a/compiler/testData/codegen/boxWithStdlib/platformStatic/simple.kt +++ b/compiler/testData/codegen/boxWithStdlib/platformStatic/simple.kt @@ -1,3 +1,5 @@ +import kotlin.platform.platformStatic + object A { val b: String = "OK" diff --git a/compiler/testData/compileJavaAgainstKotlin/platformStatic/simpleClassObject.kt b/compiler/testData/compileJavaAgainstKotlin/platformStatic/simpleClassObject.kt index 5ca73bb37e2..ba3c4845cde 100644 --- a/compiler/testData/compileJavaAgainstKotlin/platformStatic/simpleClassObject.kt +++ b/compiler/testData/compileJavaAgainstKotlin/platformStatic/simpleClassObject.kt @@ -1,5 +1,7 @@ package test +import kotlin.platform.platformStatic + class A { class object { diff --git a/compiler/testData/compileJavaAgainstKotlin/platformStatic/simpleObject.kt b/compiler/testData/compileJavaAgainstKotlin/platformStatic/simpleObject.kt index d047b580a43..546233c91ed 100644 --- a/compiler/testData/compileJavaAgainstKotlin/platformStatic/simpleObject.kt +++ b/compiler/testData/compileJavaAgainstKotlin/platformStatic/simpleObject.kt @@ -1,5 +1,7 @@ package test +import kotlin.platform.platformStatic + object A { val b: String = "OK" diff --git a/core/builtins/src/kotlin/Annotations.kt b/core/builtins/src/kotlin/Annotations.kt index a4b51818eeb..c314f5174a7 100644 --- a/core/builtins/src/kotlin/Annotations.kt +++ b/core/builtins/src/kotlin/Annotations.kt @@ -23,5 +23,3 @@ public annotation class deprecated(val value: String) public annotation class suppress(vararg val names: String) public annotation class tailRecursive - -public annotation class platformStatic diff --git a/core/descriptors/src/org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java b/core/descriptors/src/org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java index 4cbf3f41e2f..6297b116a6a 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java @@ -333,11 +333,6 @@ public class KotlinBuiltIns { return getBuiltInClassByName("tailRecursive"); } - @NotNull - public ClassDescriptor getPlatformStaticAnnotationClass() { - return getBuiltInClassByName("platformStatic"); - } - @NotNull public ClassDescriptor getDeprecatedAnnotation() { return getBuiltInClassByName("deprecated"); @@ -867,10 +862,6 @@ public class KotlinBuiltIns { return containsAnnotation(declarationDescriptor, getTailRecursiveAnnotationClass()); } - public boolean isPlatformStatic(@NotNull CallableDescriptor callableDescriptor) { - return containsAnnotation(callableDescriptor, getPlatformStaticAnnotationClass()); - } - public boolean isSuppressAnnotation(@NotNull AnnotationDescriptor annotationDescriptor) { ClassifierDescriptor classifier = annotationDescriptor.getType().getConstructor().getDeclarationDescriptor(); return classifier != null && fqNames.suppress.equals(DescriptorUtils.getFqName(classifier)); diff --git a/libraries/stdlib/src/kotlin/platform/annotations.kt b/libraries/stdlib/src/kotlin/platform/annotations.kt index 1eb961566c2..a7a894a16ad 100644 --- a/libraries/stdlib/src/kotlin/platform/annotations.kt +++ b/libraries/stdlib/src/kotlin/platform/annotations.kt @@ -16,4 +16,6 @@ package kotlin.platform -public annotation class platformName(public val name: String) \ No newline at end of file +public annotation class platformName(public val name: String) + +public annotation class platformStatic \ No newline at end of file