diff --git a/compiler/testData/builtin-classes.txt b/compiler/testData/builtin-classes.txt index fe0faf78f13..5b5f063a4f6 100644 --- a/compiler/testData/builtin-classes.txt +++ b/compiler/testData/builtin-classes.txt @@ -1497,6 +1497,10 @@ 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/core/builtins/src/kotlin/Annotations.kt b/core/builtins/src/kotlin/Annotations.kt index c314f5174a7..a4b51818eeb 100644 --- a/core/builtins/src/kotlin/Annotations.kt +++ b/core/builtins/src/kotlin/Annotations.kt @@ -23,3 +23,5 @@ 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 6297b116a6a..62c883d406e 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,6 +333,11 @@ public class KotlinBuiltIns { return getBuiltInClassByName("tailRecursive"); } + @NotNull + public ClassDescriptor getPlatforStaticAnnotationClass() { + return getBuiltInClassByName("platformStatic"); + } + @NotNull public ClassDescriptor getDeprecatedAnnotation() { return getBuiltInClassByName("deprecated"); @@ -862,6 +867,10 @@ public class KotlinBuiltIns { return containsAnnotation(declarationDescriptor, getTailRecursiveAnnotationClass()); } + public boolean isPlatformStatic(@NotNull CallableDescriptor callableDescriptor) { + return containsAnnotation(callableDescriptor, getPlatforStaticAnnotationClass()); + } + public boolean isSuppressAnnotation(@NotNull AnnotationDescriptor annotationDescriptor) { ClassifierDescriptor classifier = annotationDescriptor.getType().getConstructor().getDeclarationDescriptor(); return classifier != null && fqNames.suppress.equals(DescriptorUtils.getFqName(classifier));