From 6ffd1aceaada5cf99f538548e5f8c26e7043f7ec Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Mon, 8 Oct 2012 13:37:14 +0400 Subject: [PATCH] Check field signature name --- .../AlternativeFieldSignatureData.java | 11 +++++++++++ .../kotlinSignature/error/WrongFieldName.java | 10 ++++++++++ .../loadJava/kotlinSignature/error/WrongFieldName.kt | 7 +++++++ .../loadJava/kotlinSignature/error/WrongFieldName.txt | 6 ++++++ .../jet/jvm/compiler/LoadJavaTestGenerated.java | 7 ++++++- .../LazyResolveNamespaceComparingTestGenerated.java | 5 +++++ 6 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 compiler/testData/loadJava/kotlinSignature/error/WrongFieldName.java create mode 100644 compiler/testData/loadJava/kotlinSignature/error/WrongFieldName.kt create mode 100644 compiler/testData/loadJava/kotlinSignature/error/WrongFieldName.txt diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/AlternativeFieldSignatureData.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/AlternativeFieldSignatureData.java index 47802eb118a..232770a4b6b 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/AlternativeFieldSignatureData.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/kotlinSignature/AlternativeFieldSignatureData.java @@ -17,6 +17,8 @@ package org.jetbrains.jet.lang.resolve.java.kotlinSignature; import com.intellij.openapi.project.Project; +import com.intellij.psi.PsiNamedElement; +import com.intellij.util.containers.ComparatorUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor; import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptorImpl; @@ -48,6 +50,7 @@ public class AlternativeFieldSignatureData extends ElementAlternativeSignatureDa try { checkForSyntaxErrors(altPropertyDeclaration); + checkEqualNames(altPropertyDeclaration, field); altReturnType = computeReturnType(originalReturnType, altPropertyDeclaration.getTypeRef(), new HashMap()); } @@ -66,4 +69,12 @@ public class AlternativeFieldSignatureData extends ElementAlternativeSignatureDa public String getSignature() { return field.getPsiField().getText(); } + + private static void checkEqualNames(PsiNamedElement namedElement, PsiFieldWrapper fieldWrapper) { + if (!ComparatorUtil.equalsNullable(fieldWrapper.getName(), namedElement.getName())) { + throw new AlternativeSignatureMismatchException( + "Field name mismatch, original: %s, alternative: %s", + fieldWrapper.getName(), namedElement.getName()); + } + } } diff --git a/compiler/testData/loadJava/kotlinSignature/error/WrongFieldName.java b/compiler/testData/loadJava/kotlinSignature/error/WrongFieldName.java new file mode 100644 index 00000000000..fbfee28fb3d --- /dev/null +++ b/compiler/testData/loadJava/kotlinSignature/error/WrongFieldName.java @@ -0,0 +1,10 @@ +package test; + +import jet.runtime.typeinfo.KotlinSignature; + +import java.lang.String; + +public class WrongFieldName { + @KotlinSignature("val bar: String") + public String foo; +} diff --git a/compiler/testData/loadJava/kotlinSignature/error/WrongFieldName.kt b/compiler/testData/loadJava/kotlinSignature/error/WrongFieldName.kt new file mode 100644 index 00000000000..0f73bc557fb --- /dev/null +++ b/compiler/testData/loadJava/kotlinSignature/error/WrongFieldName.kt @@ -0,0 +1,7 @@ +package test + +import java.util.* + +public open class WrongFieldName : Object() { + public val foo : String? = "" +} diff --git a/compiler/testData/loadJava/kotlinSignature/error/WrongFieldName.txt b/compiler/testData/loadJava/kotlinSignature/error/WrongFieldName.txt new file mode 100644 index 00000000000..058116c5377 --- /dev/null +++ b/compiler/testData/loadJava/kotlinSignature/error/WrongFieldName.txt @@ -0,0 +1,6 @@ +namespace test + +public open class test.WrongFieldName : java.lang.Object { + public final /*constructor*/ fun (): test.WrongFieldName + public final val foo: jet.String? +} diff --git a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java index be67df0a048..dd40989025f 100644 --- a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java @@ -338,11 +338,16 @@ public class LoadJavaTestGenerated extends AbstractLoadJavaTest { doTest("compiler/testData/loadJava/kotlinSignature/error/VarargReplacedWithNotVararg.java"); } + @TestMetadata("WrongFieldName.java") + public void testWrongFieldName() throws Exception { + doTest("compiler/testData/loadJava/kotlinSignature/error/WrongFieldName.java"); + } + @TestMetadata("WrongMethodName.java") public void testWrongMethodName() throws Exception { doTest("compiler/testData/loadJava/kotlinSignature/error/WrongMethodName.java"); } - + @TestMetadata("WrongReturnTypeStructure.java") public void testWrongReturnTypeStructure() throws Exception { doTest("compiler/testData/loadJava/kotlinSignature/error/WrongReturnTypeStructure.java"); diff --git a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveNamespaceComparingTestGenerated.java b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveNamespaceComparingTestGenerated.java index 77694f100c4..a1778a957ac 100644 --- a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveNamespaceComparingTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveNamespaceComparingTestGenerated.java @@ -1223,6 +1223,11 @@ public class LazyResolveNamespaceComparingTestGenerated extends AbstractLazyReso doTestSinglePackage("compiler/testData/loadJava/kotlinSignature/error/VarargReplacedWithNotVararg.kt"); } + @TestMetadata("WrongFieldName.kt") + public void testWrongFieldName() throws Exception { + doTestSinglePackage("compiler/testData/loadJava/kotlinSignature/error/WrongFieldName.kt"); + } + @TestMetadata("WrongMethodName.kt") public void testWrongMethodName() throws Exception { doTestSinglePackage("compiler/testData/loadJava/kotlinSignature/error/WrongMethodName.kt");