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");