AnnotationUtil: Do not throw on ErrorValue constant

This commit is contained in:
Pavel V. Talanov
2016-01-11 17:16:01 +03:00
parent 657b9ff808
commit 9fea22885e
@@ -24,6 +24,8 @@ import org.jetbrains.kotlin.descriptors.annotations.AnnotationUseSiteTarget
import org.jetbrains.kotlin.descriptors.annotations.Annotations
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.resolve.DescriptorUtils
import org.jetbrains.kotlin.resolve.constants.ConstantValue
import org.jetbrains.kotlin.resolve.constants.ErrorValue
fun DeclarationDescriptor.hasJvmStaticAnnotation(): Boolean {
return annotations.findAnnotation(FqName("kotlin.jvm.JvmStatic")) != null
@@ -52,7 +54,12 @@ private fun CallableDescriptor.isPlatformStaticIn(predicate: (DeclarationDescrip
}
fun AnnotationDescriptor.argumentValue(parameterName: String): Any? {
return allValueArguments.entries
val constant: ConstantValue<*>? = allValueArguments.entries
.singleOrNull { it.key.name.asString() == parameterName }
?.value?.value
?.value
if (constant == null || constant is ErrorValue)
return null
return constant.value
}