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