make modality 'FINAL' for non-class members
not depend on actual modifier since it's not legal there
This commit is contained in:
@@ -758,12 +758,15 @@ public class DescriptorResolver {
|
|||||||
boolean isVar = property.isVar();
|
boolean isVar = property.isVar();
|
||||||
|
|
||||||
boolean hasBody = hasBody(property);
|
boolean hasBody = hasBody(property);
|
||||||
Modality defaultModality = getDefaultModality(containingDeclaration, hasBody);
|
Modality modality = containingDeclaration instanceof ClassDescriptor
|
||||||
|
? ModifiersChecker.resolveModalityFromModifiers(property, getDefaultModality(containingDeclaration, hasBody))
|
||||||
|
: Modality.FINAL;
|
||||||
|
Visibility visibility = ModifiersChecker.resolveVisibilityFromModifiers(property, getDefaultVisibility(property, containingDeclaration));
|
||||||
PropertyDescriptor propertyDescriptor = new PropertyDescriptor(
|
PropertyDescriptor propertyDescriptor = new PropertyDescriptor(
|
||||||
containingDeclaration,
|
containingDeclaration,
|
||||||
annotationResolver.resolveAnnotations(scope, modifierList, trace),
|
annotationResolver.resolveAnnotations(scope, modifierList, trace),
|
||||||
ModifiersChecker.resolveModalityFromModifiers(property, defaultModality),
|
modality,
|
||||||
ModifiersChecker.resolveVisibilityFromModifiers(property),
|
visibility,
|
||||||
isVar,
|
isVar,
|
||||||
JetPsiUtil.safeName(property.getName()),
|
JetPsiUtil.safeName(property.getName()),
|
||||||
CallableMemberDescriptor.Kind.DECLARATION
|
CallableMemberDescriptor.Kind.DECLARATION
|
||||||
|
|||||||
@@ -179,11 +179,7 @@ public class ModifiersChecker {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static Visibility resolveVisibilityFromModifiers(@NotNull JetModifierListOwner modifierListOwner) {
|
public static Visibility resolveVisibilityFromModifiers(@NotNull JetModifierListOwner modifierListOwner) {
|
||||||
JetModifierList modifierList = modifierListOwner.getModifierList();
|
return resolveVisibilityFromModifiers(modifierListOwner, Visibilities.INTERNAL);
|
||||||
Visibility defaultVisibility = modifierList != null && modifierList.hasModifier(OVERRIDE_KEYWORD)
|
|
||||||
? Visibilities.INHERITED
|
|
||||||
: Visibilities.INTERNAL;
|
|
||||||
return resolveVisibilityFromModifiers(modifierListOwner, defaultVisibility);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
@@ -3,23 +3,23 @@ package MyNamespace
|
|||||||
//properties
|
//properties
|
||||||
<!MUST_BE_INITIALIZED!>val a: Int<!>
|
<!MUST_BE_INITIALIZED!>val a: Int<!>
|
||||||
val a1: Int = 1
|
val a1: Int = 1
|
||||||
<!ILLEGAL_MODIFIER!>abstract<!> val a2: Int
|
<!MUST_BE_INITIALIZED!><!ILLEGAL_MODIFIER!>abstract<!> val a2: Int<!>
|
||||||
<!ILLEGAL_MODIFIER!>abstract<!> val a3: Int = 1
|
<!ILLEGAL_MODIFIER!>abstract<!> val a3: Int = 1
|
||||||
|
|
||||||
<!MUST_BE_INITIALIZED!>var b: Int<!> private set
|
<!MUST_BE_INITIALIZED!>var b: Int<!> private set
|
||||||
var b1: Int = 0; private set
|
var b1: Int = 0; private set
|
||||||
<!ILLEGAL_MODIFIER!>abstract<!> var b2: Int private set
|
<!MUST_BE_INITIALIZED!><!ILLEGAL_MODIFIER!>abstract<!> var b2: Int<!> private set
|
||||||
<!ILLEGAL_MODIFIER!>abstract<!> var b3: Int = 0; private set
|
<!ILLEGAL_MODIFIER!>abstract<!> var b3: Int = 0; private set
|
||||||
|
|
||||||
<!MUST_BE_INITIALIZED!>var c: Int<!> set(v: Int) { $c = v }
|
<!MUST_BE_INITIALIZED!>var c: Int<!> set(v: Int) { $c = v }
|
||||||
var c1: Int = 0; set(v: Int) { $c1 = v }
|
var c1: Int = 0; set(v: Int) { $c1 = v }
|
||||||
<!ILLEGAL_MODIFIER!>abstract<!> var c2: Int set(v: Int) { $c2 = v }
|
<!MUST_BE_INITIALIZED!><!ILLEGAL_MODIFIER!>abstract<!> var c2: Int<!> set(v: Int) { $c2 = v }
|
||||||
<!ILLEGAL_MODIFIER!>abstract<!> var c3: Int = 0; set(v: Int) { $c3 = v }
|
<!ILLEGAL_MODIFIER!>abstract<!> var c3: Int = 0; set(v: Int) { $c3 = v }
|
||||||
|
|
||||||
val e: Int get() = a
|
val e: Int get() = a
|
||||||
val e1: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>0<!>; get() = a
|
val e1: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>0<!>; get() = a
|
||||||
<!ILLEGAL_MODIFIER!>abstract<!> val e2: Int get() = a
|
<!ILLEGAL_MODIFIER!>abstract<!> val e2: Int get() = a
|
||||||
<!ILLEGAL_MODIFIER!>abstract<!> val e3: Int = 0; get() = a
|
<!ILLEGAL_MODIFIER!>abstract<!> val e3: Int = <!PROPERTY_INITIALIZER_NO_BACKING_FIELD!>0<!>; get() = a
|
||||||
|
|
||||||
//methods
|
//methods
|
||||||
<!NON_MEMBER_FUNCTION_NO_BODY!>fun f()<!>
|
<!NON_MEMBER_FUNCTION_NO_BODY!>fun f()<!>
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
package d
|
package d
|
||||||
|
|
||||||
<!ILLEGAL_MODIFIER!>abstract<!> val a : Int
|
<!ILLEGAL_MODIFIER!>abstract<!> val a : Int = 1
|
||||||
|
|
||||||
<!ILLEGAL_MODIFIER!>override<!> val c : Int = 1
|
<!ILLEGAL_MODIFIER!>override<!> val c : Int = 1
|
||||||
|
|
||||||
|
|||||||
+7
@@ -0,0 +1,7 @@
|
|||||||
|
package d
|
||||||
|
|
||||||
|
<!ILLEGAL_MODIFIER!>override<!> val f : ()-> Int = { 12 }
|
||||||
|
|
||||||
|
fun test() {
|
||||||
|
f()
|
||||||
|
}
|
||||||
@@ -1123,6 +1123,11 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage
|
|||||||
doTest("compiler/testData/diagnostics/tests/declarationChecks/packageDeclarationModifiers.kt");
|
doTest("compiler/testData/diagnostics/tests/declarationChecks/packageDeclarationModifiers.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("propertyInPackageHasNoInheritVisibility.kt")
|
||||||
|
public void testPropertyInPackageHasNoInheritVisibility() throws Exception {
|
||||||
|
doTest("compiler/testData/diagnostics/tests/declarationChecks/propertyInPackageHasNoInheritVisibility.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("RedeclarationsInMultiDecl.kt")
|
@TestMetadata("RedeclarationsInMultiDecl.kt")
|
||||||
public void testRedeclarationsInMultiDecl() throws Exception {
|
public void testRedeclarationsInMultiDecl() throws Exception {
|
||||||
doTest("compiler/testData/diagnostics/tests/declarationChecks/RedeclarationsInMultiDecl.kt");
|
doTest("compiler/testData/diagnostics/tests/declarationChecks/RedeclarationsInMultiDecl.kt");
|
||||||
|
|||||||
@@ -122,23 +122,23 @@ abstract enum class MyAbstractEnum() {}
|
|||||||
//properties
|
//properties
|
||||||
<error>val a: Int</error>
|
<error>val a: Int</error>
|
||||||
val a1: Int = 1
|
val a1: Int = 1
|
||||||
<error>abstract</error> val a2: Int
|
<error><error>abstract</error> val a2: Int</error>
|
||||||
<error>abstract</error> val a3: Int = 1
|
<error>abstract</error> val a3: Int = 1
|
||||||
|
|
||||||
<error>var b: Int</error> private set
|
<error>var b: Int</error> private set
|
||||||
var b1: Int = 0; private set
|
var b1: Int = 0; private set
|
||||||
<error>abstract</error> var b2: Int private set
|
<error><error>abstract</error> var b2: Int</error> private set
|
||||||
<error>abstract</error> var b3: Int = 0; private set
|
<error>abstract</error> var b3: Int = 0; private set
|
||||||
|
|
||||||
<error>var c: Int</error> set(v: Int) { $c = v }
|
<error>var c: Int</error> set(v: Int) { $c = v }
|
||||||
var c1: Int = 0; set(v: Int) { $c1 = v }
|
var c1: Int = 0; set(v: Int) { $c1 = v }
|
||||||
<error>abstract</error> var c2: Int set(v: Int) { $c2 = v }
|
<error><error>abstract</error> var c2: Int</error> set(v: Int) { $c2 = v }
|
||||||
<error>abstract</error> var c3: Int = 0; set(v: Int) { $c3 = v }
|
<error>abstract</error> var c3: Int = 0; set(v: Int) { $c3 = v }
|
||||||
|
|
||||||
val e: Int get() = a
|
val e: Int get() = a
|
||||||
val e1: Int = <error>0</error>; get() = a
|
val e1: Int = <error>0</error>; get() = a
|
||||||
<error>abstract</error> val e2: Int get() = a
|
<error>abstract</error> val e2: Int get() = a
|
||||||
<error>abstract</error> val e3: Int = 0; get() = a
|
<error>abstract</error> val e3: Int = <error>0</error>; get() = a
|
||||||
|
|
||||||
//methods
|
//methods
|
||||||
<error>fun f()</error>
|
<error>fun f()</error>
|
||||||
@@ -160,6 +160,6 @@ abstract class B3(i: Int) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun foo(<warning>a</warning>: B3) {
|
fun foo(<warning>a</warning>: B3) {
|
||||||
val <warning>a</warning> = <error>B3(1)</error>
|
val <warning><warning>a</warning></warning> = <error>B3(1)</error>
|
||||||
val <warning>b</warning> = <error>B1(2, "s")</error>
|
val <warning>b</warning> = <error>B1(2, "s")</error>
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user