From 2840f6d3ba8c2632d861f8c077fecd79c364e3fe Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Thu, 21 Jun 2012 17:14:03 +0400 Subject: [PATCH] Added checking for function name in alternative signature. --- .../lang/resolve/java/AlternativeSignatureParsing.java | 7 +++++++ .../kotlinSignature/error/WrongMethodName.java | 10 ++++++++++ .../kotlinSignature/error/WrongMethodName.kt | 7 +++++++ .../kotlinSignature/error/WrongMethodName.txt | 6 ++++++ 4 files changed, 30 insertions(+) create mode 100644 compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongMethodName.java create mode 100644 compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongMethodName.kt create mode 100644 compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongMethodName.txt 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 6b51c766c49..c396fa4592e 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 @@ -22,6 +22,7 @@ import com.intellij.psi.PsiErrorElement; import com.intellij.psi.PsiSubstitutor; import com.intellij.psi.PsiType; import com.intellij.util.Function; +import com.intellij.util.containers.ComparatorUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.*; @@ -304,5 +305,11 @@ class AlternativeSignatureParsing { syntaxErrors.size(), errorOffset, syntaxErrorDescription); throw new AlternativeSignatureMismatchException(errorText); } + + if (!ComparatorUtil.equalsNullable(method.getName(), altFunDeclaration.getName())) { + throw new AlternativeSignatureMismatchException(String.format( + "Function names mismatch, original: %s, alternative: %s", + method.getName(), altFunDeclaration.getName())); + } } } diff --git a/compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongMethodName.java b/compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongMethodName.java new file mode 100644 index 00000000000..52aadd8a7e3 --- /dev/null +++ b/compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongMethodName.java @@ -0,0 +1,10 @@ +package test; + +import jet.runtime.typeinfo.KotlinSignature; + +public class WrongMethodName { + @KotlinSignature("fun bar() : String") + public String foo() { + throw new UnsupportedOperationException(); + } +} diff --git a/compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongMethodName.kt b/compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongMethodName.kt new file mode 100644 index 00000000000..f0eb308e794 --- /dev/null +++ b/compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongMethodName.kt @@ -0,0 +1,7 @@ +package test + +import java.util.* + +public open class WrongMethodName : Object() { + public open fun foo() : String? = "" +} diff --git a/compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongMethodName.txt b/compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongMethodName.txt new file mode 100644 index 00000000000..6e53d498a7f --- /dev/null +++ b/compiler/testData/readJavaBinaryClass/kotlinSignature/error/WrongMethodName.txt @@ -0,0 +1,6 @@ +namespace test + +public open class test.WrongMethodName : java.lang.Object { + public final /*constructor*/ fun (): test.WrongMethodName + public open fun foo(): jet.String? +}