From 859223baa20163d1312bb01c0cb3e2eabde3a093 Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Wed, 5 Dec 2018 17:49:34 +0300 Subject: [PATCH] Fix throws-list for case of kotlin.Throwable in ultra-light classes --- .../org/jetbrains/kotlin/asJava/classes/ultraLightMethod.kt | 5 +++-- .../testData/asJava/ultraLightClasses/throwsAnnotation.kt | 4 ++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightMethod.kt b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightMethod.kt index c49b813151b..77fff62f4c2 100644 --- a/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightMethod.kt +++ b/compiler/light-classes/src/org/jetbrains/kotlin/asJava/classes/ultraLightMethod.kt @@ -19,8 +19,8 @@ import org.jetbrains.kotlin.asJava.elements.KtLightSimpleModifierList import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.codegen.FunctionCodegen import org.jetbrains.kotlin.descriptors.* +import org.jetbrains.kotlin.load.kotlin.TypeMappingMode import org.jetbrains.kotlin.psi.* -import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe import org.jetbrains.kotlin.resolve.jvm.diagnostics.JvmDeclarationOriginKind import org.jetbrains.kotlin.types.KotlinType @@ -57,7 +57,8 @@ internal abstract class KtUltraLightMethod( val list = KotlinLightReferenceListBuilder(manager, language, PsiReferenceList.Role.THROWS_LIST) computeDescriptor()?.let { for (ex in FunctionCodegen.getThrownExceptions(it)) { - list.addReference(ex.fqNameSafe.asString()) + val psiClassType = ex.defaultType.asPsiType(support, TypeMappingMode.DEFAULT, list) as? PsiClassType ?: continue + list.addReference(psiClassType) } } list diff --git a/compiler/testData/asJava/ultraLightClasses/throwsAnnotation.kt b/compiler/testData/asJava/ultraLightClasses/throwsAnnotation.kt index 900ad970585..cc547c26048 100644 --- a/compiler/testData/asJava/ultraLightClasses/throwsAnnotation.kt +++ b/compiler/testData/asJava/ultraLightClasses/throwsAnnotation.kt @@ -3,4 +3,8 @@ class MyException : Exception class C @Throws(Exception::class) constructor(a: Int = 1) { @Throws(java.io.IOException::class, MyException::class) fun readFile(name: String): String {} + + // Should be mapped to java.lang.Throwable + @Throws(kotlin.Throwable::class) + fun baz() {} }