From e42017a4687b9990a1145b3b509f9e1f5c87e1f5 Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Thu, 19 Jul 2018 17:33:22 +0200 Subject: [PATCH] Fix ISE in ReflectJavaMember.getValueParameters on Java 6 The exception was incorrectly introduced in 0f0602230ac. We should not fail when `names` is null, only when there's no element at the corresponding index. On Java 6, `names` is always null. On Java 8, `names` is never null (it's an empty list if the class was compiled without "-parameters") --- .../reflect/jvm/internal/structure/ReflectJavaMember.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/descriptors.runtime/src/kotlin/reflect/jvm/internal/structure/ReflectJavaMember.kt b/core/descriptors.runtime/src/kotlin/reflect/jvm/internal/structure/ReflectJavaMember.kt index fa1437156ca..3d3c2c49d1d 100644 --- a/core/descriptors.runtime/src/kotlin/reflect/jvm/internal/structure/ReflectJavaMember.kt +++ b/core/descriptors.runtime/src/kotlin/reflect/jvm/internal/structure/ReflectJavaMember.kt @@ -52,7 +52,9 @@ abstract class ReflectJavaMember : ReflectJavaElement(), ReflectJavaAnnotationOw for (i in parameterTypes.indices) { val type = ReflectJavaType.create(parameterTypes[i]) - val name = names?.getOrNull(i + shift) ?: error("No parameter with index $i+$shift (name=$name type=$type) in $this") + val name = names?.run { + getOrNull(i + shift) ?: error("No parameter with index $i+$shift (name=$name type=$type) in $this@ReflectJavaMember") + } val isParamVararg = isVararg && i == parameterTypes.lastIndex result.add(ReflectJavaValueParameter(type, parameterAnnotations[i], name, isParamVararg)) }