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 d304e5c1ece..dc39a985b96 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 @@ -56,7 +56,11 @@ internal abstract class KtUltraLightMethod( abstract override fun buildTypeParameterList(): PsiTypeParameterList private val _throwsList: PsiReferenceList by lazyPub { - val list = KotlinLightReferenceListBuilder(manager, language, PsiReferenceList.Role.THROWS_LIST) + val list = + object : KotlinLightReferenceListBuilder(manager, language, PsiReferenceList.Role.THROWS_LIST) { + override fun getParent() = this@KtUltraLightMethod + override fun getContainingFile() = this@KtUltraLightMethod.containingFile + } computeDescriptor()?.let { for (ex in FunctionCodegen.getThrownExceptions(it)) { val psiClassType = ex.defaultType.asPsiType(support, TypeMappingMode.DEFAULT, list) as? PsiClassType ?: continue diff --git a/idea/testData/kotlinAndJavaChecker/javaAgainstKotlin/ThrowsOnGenericMethod.java b/idea/testData/kotlinAndJavaChecker/javaAgainstKotlin/ThrowsOnGenericMethod.java new file mode 100644 index 00000000000..bb99dbc04af --- /dev/null +++ b/idea/testData/kotlinAndJavaChecker/javaAgainstKotlin/ThrowsOnGenericMethod.java @@ -0,0 +1,8 @@ +package test; +import foo.A; + +public class ThrowsOnGenericMethod { + public static void main(String[] args) { + new A().foo(""); + } +} diff --git a/idea/testData/kotlinAndJavaChecker/javaAgainstKotlin/ThrowsOnGenericMethod.kt b/idea/testData/kotlinAndJavaChecker/javaAgainstKotlin/ThrowsOnGenericMethod.kt new file mode 100644 index 00000000000..3dcc2351f58 --- /dev/null +++ b/idea/testData/kotlinAndJavaChecker/javaAgainstKotlin/ThrowsOnGenericMethod.kt @@ -0,0 +1,9 @@ +package foo; +import java.io.IOException + +class A { + @Throws(IOException::class) + fun foo(y: E) {} +} + +// ALLOW_AST_ACCESS diff --git a/idea/testData/kotlinAndJavaChecker/javaAgainstKotlin/ThrowsOnGenericMethod.txt b/idea/testData/kotlinAndJavaChecker/javaAgainstKotlin/ThrowsOnGenericMethod.txt new file mode 100644 index 00000000000..e0b1a6e6745 --- /dev/null +++ b/idea/testData/kotlinAndJavaChecker/javaAgainstKotlin/ThrowsOnGenericMethod.txt @@ -0,0 +1 @@ +// WITH_RUNTIME diff --git a/idea/tests/org/jetbrains/kotlin/checkers/JavaAgainstKotlinBinariesCheckerTestGenerated.java b/idea/tests/org/jetbrains/kotlin/checkers/JavaAgainstKotlinBinariesCheckerTestGenerated.java index 1d3621f5363..f0c02892fc8 100644 --- a/idea/tests/org/jetbrains/kotlin/checkers/JavaAgainstKotlinBinariesCheckerTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/checkers/JavaAgainstKotlinBinariesCheckerTestGenerated.java @@ -139,6 +139,11 @@ public class JavaAgainstKotlinBinariesCheckerTestGenerated extends AbstractJavaA runTest("idea/testData/kotlinAndJavaChecker/javaAgainstKotlin/ReturnInnerClasses.kt"); } + @TestMetadata("ThrowsOnGenericMethod.kt") + public void testThrowsOnGenericMethod() throws Exception { + runTest("idea/testData/kotlinAndJavaChecker/javaAgainstKotlin/ThrowsOnGenericMethod.kt"); + } + @TestMetadata("TopLevelFunctionInDataFlowInspection.kt") public void testTopLevelFunctionInDataFlowInspection() throws Exception { runTest("idea/testData/kotlinAndJavaChecker/javaAgainstKotlin/TopLevelFunctionInDataFlowInspection.kt"); diff --git a/idea/tests/org/jetbrains/kotlin/checkers/JavaAgainstKotlinSourceCheckerTestGenerated.java b/idea/tests/org/jetbrains/kotlin/checkers/JavaAgainstKotlinSourceCheckerTestGenerated.java index 21176793271..d2b15d3077a 100644 --- a/idea/tests/org/jetbrains/kotlin/checkers/JavaAgainstKotlinSourceCheckerTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/checkers/JavaAgainstKotlinSourceCheckerTestGenerated.java @@ -141,6 +141,11 @@ public class JavaAgainstKotlinSourceCheckerTestGenerated extends AbstractJavaAga runTest("idea/testData/kotlinAndJavaChecker/javaAgainstKotlin/ReturnInnerClasses.kt"); } + @TestMetadata("ThrowsOnGenericMethod.kt") + public void testThrowsOnGenericMethod() throws Exception { + runTest("idea/testData/kotlinAndJavaChecker/javaAgainstKotlin/ThrowsOnGenericMethod.kt"); + } + @TestMetadata("TopLevelFunctionInDataFlowInspection.kt") public void testTopLevelFunctionInDataFlowInspection() throws Exception { runTest("idea/testData/kotlinAndJavaChecker/javaAgainstKotlin/TopLevelFunctionInDataFlowInspection.kt"); diff --git a/idea/tests/org/jetbrains/kotlin/checkers/JavaAgainstKotlinSourceCheckerWithUltraLightTestGenerated.java b/idea/tests/org/jetbrains/kotlin/checkers/JavaAgainstKotlinSourceCheckerWithUltraLightTestGenerated.java index 0e3411b64d4..c51295d2f2c 100644 --- a/idea/tests/org/jetbrains/kotlin/checkers/JavaAgainstKotlinSourceCheckerWithUltraLightTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/checkers/JavaAgainstKotlinSourceCheckerWithUltraLightTestGenerated.java @@ -141,6 +141,11 @@ public class JavaAgainstKotlinSourceCheckerWithUltraLightTestGenerated extends A runTest("idea/testData/kotlinAndJavaChecker/javaAgainstKotlin/ReturnInnerClasses.kt"); } + @TestMetadata("ThrowsOnGenericMethod.kt") + public void testThrowsOnGenericMethod() throws Exception { + runTest("idea/testData/kotlinAndJavaChecker/javaAgainstKotlin/ThrowsOnGenericMethod.kt"); + } + @TestMetadata("TopLevelFunctionInDataFlowInspection.kt") public void testTopLevelFunctionInDataFlowInspection() throws Exception { runTest("idea/testData/kotlinAndJavaChecker/javaAgainstKotlin/TopLevelFunctionInDataFlowInspection.kt");