diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java
index 8763c34e28f..db2278350d2 100644
--- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java
+++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorResolver.java
@@ -758,12 +758,15 @@ public class DescriptorResolver {
boolean isVar = property.isVar();
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(
containingDeclaration,
annotationResolver.resolveAnnotations(scope, modifierList, trace),
- ModifiersChecker.resolveModalityFromModifiers(property, defaultModality),
- ModifiersChecker.resolveVisibilityFromModifiers(property),
+ modality,
+ visibility,
isVar,
JetPsiUtil.safeName(property.getName()),
CallableMemberDescriptor.Kind.DECLARATION
diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ModifiersChecker.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ModifiersChecker.java
index f1bbb9d0f99..8428536d29b 100644
--- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ModifiersChecker.java
+++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/ModifiersChecker.java
@@ -179,11 +179,7 @@ public class ModifiersChecker {
@NotNull
public static Visibility resolveVisibilityFromModifiers(@NotNull JetModifierListOwner modifierListOwner) {
- JetModifierList modifierList = modifierListOwner.getModifierList();
- Visibility defaultVisibility = modifierList != null && modifierList.hasModifier(OVERRIDE_KEYWORD)
- ? Visibilities.INHERITED
- : Visibilities.INTERNAL;
- return resolveVisibilityFromModifiers(modifierListOwner, defaultVisibility);
+ return resolveVisibilityFromModifiers(modifierListOwner, Visibilities.INTERNAL);
}
@NotNull
diff --git a/compiler/testData/diagnostics/tests/Abstract.kt b/compiler/testData/diagnostics/tests/Abstract.kt
index 4a25ee0088e..053733611b7 100644
--- a/compiler/testData/diagnostics/tests/Abstract.kt
+++ b/compiler/testData/diagnostics/tests/Abstract.kt
@@ -3,23 +3,23 @@ package MyNamespace
//properties
val a: Int
val a1: Int = 1
- abstract val a2: Int
+ abstract val a2: Int
abstract val a3: Int = 1
var b: Int private set
var b1: Int = 0; private set
- abstract var b2: Int private set
+ abstract var b2: Int private set
abstract var b3: Int = 0; private set
var c: Int set(v: Int) { $c = v }
var c1: Int = 0; set(v: Int) { $c1 = v }
- abstract var c2: Int set(v: Int) { $c2 = v }
+ abstract var c2: Int set(v: Int) { $c2 = v }
abstract var c3: Int = 0; set(v: Int) { $c3 = v }
val e: Int get() = a
val e1: Int = 0; get() = a
abstract val e2: Int get() = a
- abstract val e3: Int = 0; get() = a
+ abstract val e3: Int = 0; get() = a
//methods
fun f()
diff --git a/compiler/testData/diagnostics/tests/declarationChecks/packageDeclarationModifiers.kt b/compiler/testData/diagnostics/tests/declarationChecks/packageDeclarationModifiers.kt
index d14b50f33e4..77cfcadb8b5 100644
--- a/compiler/testData/diagnostics/tests/declarationChecks/packageDeclarationModifiers.kt
+++ b/compiler/testData/diagnostics/tests/declarationChecks/packageDeclarationModifiers.kt
@@ -1,6 +1,6 @@
package d
-abstract val a : Int
+abstract val a : Int = 1
override val c : Int = 1
diff --git a/compiler/testData/diagnostics/tests/declarationChecks/propertyInPackageHasNoInheritVisibility.kt b/compiler/testData/diagnostics/tests/declarationChecks/propertyInPackageHasNoInheritVisibility.kt
new file mode 100644
index 00000000000..442c90edb71
--- /dev/null
+++ b/compiler/testData/diagnostics/tests/declarationChecks/propertyInPackageHasNoInheritVisibility.kt
@@ -0,0 +1,7 @@
+package d
+
+override val f : ()-> Int = { 12 }
+
+fun test() {
+ f()
+}
\ No newline at end of file
diff --git a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java
index b694569404e..d7f2a905697 100644
--- a/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java
+++ b/compiler/tests/org/jetbrains/jet/checkers/JetDiagnosticsTestGenerated.java
@@ -1123,6 +1123,11 @@ public class JetDiagnosticsTestGenerated extends AbstractDiagnosticsTestWithEage
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")
public void testRedeclarationsInMultiDecl() throws Exception {
doTest("compiler/testData/diagnostics/tests/declarationChecks/RedeclarationsInMultiDecl.kt");
diff --git a/idea/testData/checker/Abstract.jet b/idea/testData/checker/Abstract.jet
index 22c81201d83..0bd15ad48b3 100644
--- a/idea/testData/checker/Abstract.jet
+++ b/idea/testData/checker/Abstract.jet
@@ -122,23 +122,23 @@ abstract enum class MyAbstractEnum() {}
//properties
val a: Int
val a1: Int = 1
- abstract val a2: Int
+ abstract val a2: Int
abstract val a3: Int = 1
var b: Int private set
var b1: Int = 0; private set
- abstract var b2: Int private set
+ abstract var b2: Int private set
abstract var b3: Int = 0; private set
var c: Int set(v: Int) { $c = v }
var c1: Int = 0; set(v: Int) { $c1 = v }
- abstract var c2: Int set(v: Int) { $c2 = v }
+ abstract var c2: Int set(v: Int) { $c2 = v }
abstract var c3: Int = 0; set(v: Int) { $c3 = v }
val e: Int get() = a
val e1: Int = 0; get() = a
abstract val e2: Int get() = a
- abstract val e3: Int = 0; get() = a
+ abstract val e3: Int = 0; get() = a
//methods
fun f()
@@ -160,6 +160,6 @@ abstract class B3(i: Int) {
}
fun foo(a: B3) {
- val a = B3(1)
+ val a = B3(1)
val b = B1(2, "s")
}
\ No newline at end of file