Check absence of explicit initializer in field annotation

This commit is contained in:
Nikolay Krasko
2012-10-08 20:39:12 +04:00
parent 3a410064be
commit d0b41ff153
6 changed files with 54 additions and 6 deletions
@@ -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");
@@ -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");