From 1f6ce874a1c7078b9d8c6e3225f952d9ed528e83 Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Thu, 4 Mar 2021 15:09:12 +0300 Subject: [PATCH] Don't fail on unsupported default values of java annotations --- .../load/java/structure/impl/annotationArgumentsImpl.kt | 6 ++++-- .../kotlin/load/java/structure/annotationArguments.kt | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/annotationArgumentsImpl.kt b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/annotationArgumentsImpl.kt index abddf924618..bcaa969b539 100644 --- a/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/annotationArgumentsImpl.kt +++ b/compiler/resolution.common.jvm/src/org/jetbrains/kotlin/load/java/structure/impl/annotationArgumentsImpl.kt @@ -22,7 +22,7 @@ import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.name.Name -abstract class JavaAnnotationArgumentImpl( +sealed class JavaAnnotationArgumentImpl( override val name: Name? ) : JavaAnnotationArgument { companion object Factory { @@ -44,7 +44,7 @@ abstract class JavaAnnotationArgumentImpl( is PsiReferenceExpression -> JavaEnumValueAnnotationArgumentImpl(argument, name) is PsiArrayInitializerMemberValue -> JavaArrayAnnotationArgumentImpl(argument, name) is PsiAnnotation -> JavaAnnotationAsAnnotationArgumentImpl(argument, name) - else -> throw UnsupportedOperationException("Unsupported annotation argument type: $argument") + else -> JavaUnknownAnnotationArgumentImpl(name) } } } @@ -95,3 +95,5 @@ class JavaAnnotationAsAnnotationArgumentImpl( ) : JavaAnnotationArgumentImpl(name), JavaAnnotationAsAnnotationArgument { override fun getAnnotation() = JavaAnnotationImpl(psiAnnotation) } + +class JavaUnknownAnnotationArgumentImpl(name: Name?) : JavaAnnotationArgumentImpl(name), JavaUnknownAnnotationArgument diff --git a/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/structure/annotationArguments.kt b/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/structure/annotationArguments.kt index dcbc99b44cd..115fd691f30 100644 --- a/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/structure/annotationArguments.kt +++ b/core/compiler.common.jvm/src/org/jetbrains/kotlin/load/java/structure/annotationArguments.kt @@ -43,3 +43,5 @@ interface JavaClassObjectAnnotationArgument : JavaAnnotationArgument { interface JavaAnnotationAsAnnotationArgument : JavaAnnotationArgument { fun getAnnotation(): JavaAnnotation } + +interface JavaUnknownAnnotationArgument : JavaAnnotationArgument