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 d79d3b0c21a..2b23d83b92b 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 @@ -70,11 +70,7 @@ public class AlternativeFieldSignatureData extends ElementAlternativeSignatureDa } private static void checkFieldAnnotation(JetProperty altProperty, PsiFieldWrapper fieldWrapper, boolean isVar) { - PsiClass containingClass = fieldWrapper.getPsiField().getContainingClass(); - String fieldLink = containingClass != null ? - String.format("%s.%s", containingClass.getQualifiedName(), fieldWrapper.getName()) : - fieldWrapper.getName(); - assert (fieldLink != null); + String fieldLink = getFieldQualifiedName(fieldWrapper); if (!ComparatorUtil.equalsNullable(fieldWrapper.getName(), altProperty.getName())) { throw new AlternativeSignatureMismatchException( @@ -99,5 +95,22 @@ public class AlternativeFieldSignatureData extends ElementAlternativeSignatureDa "Wrong mutability in annotation for field '%s'", fieldLink); } + + if (altProperty.getInitializer() != null) { + throw new AlternativeSignatureMismatchException( + "Default value is not expected in annotation for field '%s'", + fieldLink); + } + } + + @NotNull + private static String getFieldQualifiedName(PsiFieldWrapper fieldWrapper) { + PsiClass containingClass = fieldWrapper.getPsiField().getContainingClass(); + String fieldLink = containingClass != null ? + String.format("%s.%s", containingClass.getQualifiedName(), fieldWrapper.getName()) : + fieldWrapper.getName(); + assert (fieldLink != null); + + return fieldLink; } } diff --git a/compiler/testData/loadJava/kotlinSignature/error/WrongFieldInitializer.java b/compiler/testData/loadJava/kotlinSignature/error/WrongFieldInitializer.java new file mode 100644 index 00000000000..45f4ea8fdb1 --- /dev/null +++ b/compiler/testData/loadJava/kotlinSignature/error/WrongFieldInitializer.java @@ -0,0 +1,10 @@ +package test; + +import jet.runtime.typeinfo.KotlinSignature; + +import java.lang.String; + +public class WrongFieldInitializer { + @KotlinSignature("var foo : String = \"Test\"") + public String foo; +} diff --git a/compiler/testData/loadJava/kotlinSignature/error/WrongFieldInitializer.kt b/compiler/testData/loadJava/kotlinSignature/error/WrongFieldInitializer.kt new file mode 100644 index 00000000000..79f06cf45b2 --- /dev/null +++ b/compiler/testData/loadJava/kotlinSignature/error/WrongFieldInitializer.kt @@ -0,0 +1,7 @@ +package test + +import java.util.* + +public open class WrongFieldInitializer : Object() { + public var foo : String? = "" +} diff --git a/compiler/testData/loadJava/kotlinSignature/error/WrongFieldInitializer.txt b/compiler/testData/loadJava/kotlinSignature/error/WrongFieldInitializer.txt new file mode 100644 index 00000000000..caf3310f92e --- /dev/null +++ b/compiler/testData/loadJava/kotlinSignature/error/WrongFieldInitializer.txt @@ -0,0 +1,6 @@ +namespace test + +public open class test.WrongFieldInitializer : java.lang.Object { + public final /*constructor*/ fun (): test.WrongFieldInitializer + public final var 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 0a6a24f2214..1cb86016756 100644 --- a/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/jvm/compiler/LoadJavaTestGenerated.java @@ -353,6 +353,11 @@ public class LoadJavaTestGenerated extends AbstractLoadJavaTest { doTest("compiler/testData/loadJava/kotlinSignature/error/VarargReplacedWithNotVararg.java"); } + @TestMetadata("WrongFieldInitializer.java") + public void testWrongFieldInitializer() throws Exception { + doTest("compiler/testData/loadJava/kotlinSignature/error/WrongFieldInitializer.java"); + } + @TestMetadata("WrongFieldMutability.java") public void testWrongFieldMutability() throws Exception { doTest("compiler/testData/loadJava/kotlinSignature/error/WrongFieldMutability.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 4a17ae4654d..40ffc7a9474 100644 --- a/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveNamespaceComparingTestGenerated.java +++ b/compiler/tests/org/jetbrains/jet/lang/resolve/lazy/LazyResolveNamespaceComparingTestGenerated.java @@ -1190,7 +1190,9 @@ public class LazyResolveNamespaceComparingTestGenerated extends AbstractLazyReso } public void testAllFilesPresentInError() throws Exception { - JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), "org.jetbrains.jet.lang.resolve.lazy.AbstractLazyResolveNamespaceComparingTest", new File("compiler/testData/loadJava/kotlinSignature/error"), "kt", true); + JetTestUtils.assertAllTestsPresentByMetadata(this.getClass(), + "org.jetbrains.jet.lang.resolve.lazy.AbstractLazyResolveNamespaceComparingTest", + new File("compiler/testData/loadJava/kotlinSignature/error"), "kt", true); } @TestMetadata("ExplicitFieldGettersAndSetters.kt") @@ -1238,6 +1240,11 @@ public class LazyResolveNamespaceComparingTestGenerated extends AbstractLazyReso doTestSinglePackage("compiler/testData/loadJava/kotlinSignature/error/VarargReplacedWithNotVararg.kt"); } + @TestMetadata("WrongFieldInitializer.kt") + public void testWrongFieldInitializer() throws Exception { + doTestSinglePackage("compiler/testData/loadJava/kotlinSignature/error/WrongFieldInitializer.kt"); + } + @TestMetadata("WrongFieldMutability.kt") public void testWrongFieldMutability() throws Exception { doTestSinglePackage("compiler/testData/loadJava/kotlinSignature/error/WrongFieldMutability.kt");