diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AlternativeSignatureParsing.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AlternativeSignatureParsing.java index e79a90b14cd..435f2b405c7 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AlternativeSignatureParsing.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AlternativeSignatureParsing.java @@ -204,6 +204,12 @@ class AlternativeSignatureParsing { static List computeAlternativeTypeParameters(List typeParameterDescriptors, JetNamedFunction altFunDeclaration) throws AlternativeSignatureMismatchException { + if (typeParameterDescriptors.size() != altFunDeclaration.getTypeParameters().size()) { + throw new AlternativeSignatureMismatchException( + String.format("Method signature has %d type parameters, but alternative signature has %d", + typeParameterDescriptors.size(), altFunDeclaration.getTypeParameters().size())); + } + List altParamDescriptors = new ArrayList(); for (int i = 0, size = typeParameterDescriptors.size(); i < size; i++) { TypeParameterDescriptor pd = typeParameterDescriptors.get(i); diff --git a/compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongTypeParametersCount.java b/compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongTypeParametersCount.java new file mode 100644 index 00000000000..ade3f30faf5 --- /dev/null +++ b/compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongTypeParametersCount.java @@ -0,0 +1,14 @@ +package test; + +import java.lang.UnsupportedOperationException; +import java.util.*; +import java.util.BitSet; +import java.util.List; + +import jet.runtime.typeinfo.KotlinSignature; + +public class WrongTypeParametersCount { + @KotlinSignature("fun foo(a : A, b : List)") + public void foo(A a, List b) { + } +} diff --git a/compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongTypeParametersCount.kt b/compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongTypeParametersCount.kt new file mode 100644 index 00000000000..f3009306e7d --- /dev/null +++ b/compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongTypeParametersCount.kt @@ -0,0 +1,8 @@ +package test + +import java.util.* + +public open class WrongTypeParametersCount : Object() { + public open fun foo(p0 : A?, p1 : List?) { + } +} diff --git a/compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongTypeParametersCount.txt b/compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongTypeParametersCount.txt new file mode 100644 index 00000000000..0a2850ab168 --- /dev/null +++ b/compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongTypeParametersCount.txt @@ -0,0 +1,6 @@ +namespace test + +public open class test.WrongTypeParametersCount : java.lang.Object { + public final /*constructor*/ fun (): test.WrongTypeParametersCount + public open fun foo(/*0*/ p0: A?, /*1*/ p1: java.util.List?): jet.Tuple0 +}