Add [tailRecursive] annotation to built-ins

This commit is contained in:
Sergey Mashkov
2013-12-04 17:38:59 +04:00
committed by Andrey Breslav
parent d2a31d88cd
commit b62e5e3ef5
9 changed files with 47 additions and 2 deletions
@@ -401,6 +401,11 @@ public class KotlinBuiltIns {
return getBuiltInClassByName("volatile");
}
@NotNull
public ClassDescriptor getTailRecursiveAnnotationClass() {
return getBuiltInClassByName("tailRecursive");
}
@NotNull
public ClassDescriptor getDeprecatedAnnotation() {
return getBuiltInClassByName("deprecated");
@@ -955,6 +960,10 @@ public class KotlinBuiltIns {
return containsAnnotation(declarationDescriptor, getDeprecatedAnnotation());
}
public boolean isTailRecursive(@NotNull DeclarationDescriptor declarationDescriptor) {
return containsAnnotation(declarationDescriptor, getTailRecursiveAnnotationClass());
}
static boolean containsAnnotation(DeclarationDescriptor descriptor, ClassDescriptor annotationClass) {
List<AnnotationDescriptor> annotations = descriptor.getOriginal().getAnnotations();
if (annotations != null) {