private members of traits are not open by default

#KT-4171 Fixed
This commit is contained in:
Dmitry Jemerov
2015-04-15 15:26:50 +02:00
parent 036f31f36b
commit 8d922dda4d
5 changed files with 13 additions and 13 deletions
@@ -327,12 +327,12 @@ public class DescriptorResolver {
return defaultVisibility;
}
public static Modality getDefaultModality(DeclarationDescriptor containingDescriptor, boolean isBodyPresent) {
public static Modality getDefaultModality(DeclarationDescriptor containingDescriptor, Visibility visibility, boolean isBodyPresent) {
Modality defaultModality;
if (containingDescriptor instanceof ClassDescriptor) {
boolean isTrait = ((ClassDescriptor) containingDescriptor).getKind() == ClassKind.TRAIT;
boolean isDefinitelyAbstract = isTrait && !isBodyPresent;
Modality basicModality = isTrait ? Modality.OPEN : Modality.FINAL;
Modality basicModality = isTrait && !Visibilities.isPrivate(visibility) ? Modality.OPEN : Modality.FINAL;
defaultModality = isDefinitelyAbstract ? Modality.ABSTRACT : basicModality;
}
else {
@@ -710,10 +710,10 @@ public class DescriptorResolver {
boolean isVar = property.isVar();
boolean hasBody = hasBody(property);
Modality modality = containingDeclaration instanceof ClassDescriptor
? resolveModalityFromModifiers(property, getDefaultModality(containingDeclaration, hasBody))
: Modality.FINAL;
Visibility visibility = resolveVisibilityFromModifiers(property, getDefaultVisibility(property, containingDeclaration));
Modality modality = containingDeclaration instanceof ClassDescriptor
? resolveModalityFromModifiers(property, getDefaultModality(containingDeclaration, visibility, hasBody))
: Modality.FINAL;
PropertyDescriptorImpl propertyDescriptor = PropertyDescriptorImpl.create(
containingDeclaration,
annotationResolver.resolveAnnotationsWithoutArguments(scope, modifierList, trace),
@@ -155,8 +155,8 @@ class FunctionDescriptorResolver(
val returnType = function.getTypeReference()?.let { typeResolver.resolveType(innerScope, it, trace, true) }
val modality = resolveModalityFromModifiers(function, getDefaultModality(containingDescriptor, function.hasBody()))
val visibility = resolveVisibilityFromModifiers(function, getDefaultVisibility(function, containingDescriptor))
val modality = resolveModalityFromModifiers(function, getDefaultModality(containingDescriptor, visibility, function.hasBody()))
functionDescriptor.initialize(
receiverType,
getDispatchReceiverParameterIfNeeded(containingDescriptor),
@@ -1,7 +1,7 @@
package
internal trait One {
private open fun boo(): kotlin.Int
private final fun boo(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public abstract fun foo(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
@@ -9,7 +9,7 @@ internal trait One {
}
internal trait OneImpl : One {
invisible_fake open override /*1*/ /*fake_override*/ fun boo(): kotlin.Int
invisible_fake final override /*1*/ /*fake_override*/ fun boo(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ fun foo(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
@@ -18,7 +18,7 @@ internal trait OneImpl : One {
internal final class Test1 : TwoImpl, OneImpl {
public constructor Test1()
invisible_fake open override /*1*/ /*fake_override*/ fun boo(): kotlin.Int
invisible_fake final override /*1*/ /*fake_override*/ fun boo(): kotlin.Int
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*2*/ /*fake_override*/ fun foo(): kotlin.Int
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
@@ -27,7 +27,7 @@ internal final class Test1 : TwoImpl, OneImpl {
internal final class Test2 : One, Two {
public constructor Test2(/*0*/ a: One)
internal open /*delegation*/ fun boo(): kotlin.Int
invisible_fake final override /*1*/ /*fake_override*/ fun boo(): kotlin.Int
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*2*/ /*delegation*/ fun foo(): kotlin.Int
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
@@ -36,7 +36,7 @@ internal final class Test2 : One, Two {
internal final class Test3 : Two, One {
public constructor Test3(/*0*/ a: One, /*1*/ b: Two)
internal open /*delegation*/ fun boo(): kotlin.Int
invisible_fake final override /*1*/ /*fake_override*/ fun boo(): kotlin.Int
public open override /*2*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*2*/ /*delegation*/ fun foo(): kotlin.Int
public open override /*2*/ /*fake_override*/ fun hashCode(): kotlin.Int
@@ -23,7 +23,7 @@ internal abstract class A {
internal trait B {
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
kotlin.inline() private open fun good1(): kotlin.Unit
kotlin.inline() private final fun good1(): kotlin.Unit
kotlin.inline() public final fun good2(): kotlin.Unit
kotlin.inline() protected final fun good3(): kotlin.Unit
kotlin.inline() internal final fun good4(): kotlin.Unit
@@ -3,7 +3,7 @@ package
package test {
internal trait A {
private open val a: kotlin.String
private final val a: kotlin.String
public open override /*1*/ /*fake_override*/ fun equals(/*0*/ other: kotlin.Any?): kotlin.Boolean
public open override /*1*/ /*fake_override*/ fun hashCode(): kotlin.Int
public open override /*1*/ /*fake_override*/ fun toString(): kotlin.String