get rid of 'internal protected' visibility

This commit is contained in:
Svetlana Isakova
2012-06-09 19:43:53 +04:00
parent f556485db0
commit 2286022307
9 changed files with 12 additions and 48 deletions
@@ -84,13 +84,6 @@ public class Visibilities {
}
};
public static final Visibility INTERNAL_PROTECTED = new Visibility("internal protected", false) {
@Override
protected boolean isVisible(@NotNull DeclarationDescriptorWithVisibility what, @NotNull DeclarationDescriptor from) {
return PROTECTED.isVisible(what, from) && INTERNAL.isVisible(what, from);
}
};
public static final Visibility LOCAL = new Visibility("local", false) {
@Override
protected boolean isVisible(@NotNull DeclarationDescriptorWithVisibility what, @NotNull DeclarationDescriptor from) {
@@ -113,7 +106,7 @@ public class Visibilities {
}
};
public static final Set<Visibility> INTERNAL_VISIBILITIES = Sets.newHashSet(PRIVATE, INTERNAL, INTERNAL_PROTECTED, LOCAL);
public static final Set<Visibility> INTERNAL_VISIBILITIES = Sets.newHashSet(PRIVATE, INTERNAL, LOCAL);
private Visibilities() {
}
@@ -136,10 +129,9 @@ public class Visibilities {
static {
ORDERED_VISIBILITIES.put(PRIVATE, 0);
ORDERED_VISIBILITIES.put(INTERNAL_PROTECTED, 1);
ORDERED_VISIBILITIES.put(INTERNAL, 2);
ORDERED_VISIBILITIES.put(PROTECTED, 2);
ORDERED_VISIBILITIES.put(PUBLIC, 3);
ORDERED_VISIBILITIES.put(INTERNAL, 1);
ORDERED_VISIBILITIES.put(PROTECTED, 1);
ORDERED_VISIBILITIES.put(PUBLIC, 2);
}
/*package*/
@@ -318,8 +318,7 @@ public class DeclarationsChecker {
}
}
checkCompatibility(modifierList, Lists.newArrayList(JetTokens.PRIVATE_KEYWORD, JetTokens.PROTECTED_KEYWORD, JetTokens.PUBLIC_KEYWORD, JetTokens.INTERNAL_KEYWORD),
Lists.<JetToken>newArrayList(JetTokens.PROTECTED_KEYWORD, JetTokens.INTERNAL_KEYWORD));
checkCompatibility(modifierList, Lists.newArrayList(JetTokens.PRIVATE_KEYWORD, JetTokens.PROTECTED_KEYWORD, JetTokens.PUBLIC_KEYWORD, JetTokens.INTERNAL_KEYWORD));
}
private void checkCompatibility(@Nullable JetModifierList modifierList, Collection<JetKeywordToken> availableModifiers, Collection<JetToken>... availableCombinations) {
@@ -743,15 +743,8 @@ public class DescriptorResolver {
if (modifierList == null) return defaultVisibility;
if (modifierList.hasModifier(JetTokens.PRIVATE_KEYWORD)) return Visibilities.PRIVATE;
if (modifierList.hasModifier(JetTokens.PUBLIC_KEYWORD)) return Visibilities.PUBLIC;
if (modifierList.hasModifier(JetTokens.PROTECTED_KEYWORD)) {
if (modifierList.hasModifier(JetTokens.INTERNAL_KEYWORD)) {
return Visibilities.INTERNAL_PROTECTED;
}
return Visibilities.PROTECTED;
}
if (modifierList.hasModifier(JetTokens.INTERNAL_KEYWORD)) {
return Visibilities.INTERNAL;
}
if (modifierList.hasModifier(JetTokens.PROTECTED_KEYWORD)) return Visibilities.PROTECTED;
if (modifierList.hasModifier(JetTokens.INTERNAL_KEYWORD)) return Visibilities.INTERNAL;
return defaultVisibility;
}
@@ -7,12 +7,10 @@ fun test() {
val p = test.Public()
if (p.public is Int) <!AUTOCAST_IMPOSSIBLE!>p.public<!> + 1
if (p.<!INVISIBLE_MEMBER!>protected<!> is Int) <!AUTOCAST_IMPOSSIBLE!>p.<!INVISIBLE_MEMBER!>protected<!><!> + 1
if (p.<!INVISIBLE_MEMBER!>i_protected<!> is Int) p.<!INVISIBLE_MEMBER!>i_protected<!> + 1
if (p.internal is Int) p.internal + 1
val i = test.Public()
if (i.public is Int) <!AUTOCAST_IMPOSSIBLE!>i.public<!> + 1
if (i.<!INVISIBLE_MEMBER!>protected<!> is Int) <!AUTOCAST_IMPOSSIBLE!>i.<!INVISIBLE_MEMBER!>protected<!><!> + 1
if (i.<!INVISIBLE_MEMBER!>i_protected<!> is Int) i.<!INVISIBLE_MEMBER!>i_protected<!> + 1
if (i.internal is Int) i.internal + 1
}
@@ -22,12 +20,10 @@ package test
public class Public() {
public val public : Int? = 1;
protected val protected : Int? = 1;
internal protected val i_protected : Int? = 1;
val internal : Int? = 1
}
internal class Internal() {
public val public : Int? = 1;
protected val protected : Int? = 1;
internal protected val i_protected : Int? = 1;
val internal : Int? = 1
}
@@ -40,7 +40,7 @@ fun test_fun_stays_protected(g: G) {
//------------
open class H {
internal protected open fun pi_fun() {}
protected open fun pi_fun() {}
}
class I : H() {
@@ -48,7 +48,7 @@ class I : H() {
}
class J : H() {
internal override fun pi_fun() {}
<!CANNOT_CHANGE_ACCESS_PRIVILEGE!>internal<!> override fun pi_fun() {}
}
class K : H() {
@@ -69,11 +69,11 @@ class M : L() {
}
//---------------
trait R {
internal protected fun foo() {}
<!INCOMPATIBLE_MODIFIERS!>internal<!> <!INCOMPATIBLE_MODIFIERS!>protected<!> fun foo() {}
}
trait P : R {
internal override fun foo() {}
<!CANNOT_CHANGE_ACCESS_PRIVILEGE!>internal<!> override fun foo() {}
}
trait Q : R {
@@ -55,7 +55,7 @@ public final class JetDescriptorIconProvider {
return PlatformIcons.PUBLIC_ICON;
}
if (visibility == Visibilities.PROTECTED || visibility == Visibilities.INTERNAL_PROTECTED) {
if (visibility == Visibilities.PROTECTED) {
return PlatformIcons.PROTECTED_ICON;
}
@@ -113,10 +113,6 @@ public class ChangeVisibilityModifierFix extends JetIntentionAction<JetModifierL
else if (maxVisibility == Visibilities.INTERNAL) {
modifier = JetTokens.INTERNAL_KEYWORD;
}
else if (maxVisibility == Visibilities.INTERNAL_PROTECTED) {
//todo should be internal and protected keywords
modifier = JetTokens.INTERNAL_KEYWORD;
}
return modifier;
}
@@ -1,6 +0,0 @@
// "Specify Return Type Explicitly" "true"
package a
class A() {
internal protected fun foo(): Int = 1
}
@@ -1,6 +0,0 @@
// "Specify Return Type Explicitly" "true"
package a
class A() {
internal protected fun <caret>foo() = 1
}