Check absence of explicit initializer in field annotation
This commit is contained in:
+18
-5
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package test
|
||||
|
||||
import java.util.*
|
||||
|
||||
public open class WrongFieldInitializer : Object() {
|
||||
public var foo : String? = ""
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
namespace test
|
||||
|
||||
public open class test.WrongFieldInitializer : java.lang.Object {
|
||||
public final /*constructor*/ fun <init>(): test.WrongFieldInitializer
|
||||
public final var foo: jet.String?
|
||||
}
|
||||
@@ -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");
|
||||
|
||||
+8
-1
@@ -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");
|
||||
|
||||
Reference in New Issue
Block a user