Visibility modifiers are no longer allowed on local classes
This commit is contained in:
@@ -47,6 +47,10 @@ public object ModifierCheckerCore {
|
|||||||
COMPATIBLE_FOR_CLASSES_ONLY
|
COMPATIBLE_FOR_CLASSES_ONLY
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val defaultVisibilityTargets = EnumSet.of(CLASS_ONLY, OBJECT, INTERFACE, INNER_CLASS, ENUM_CLASS, ANNOTATION_CLASS,
|
||||||
|
MEMBER_FUNCTION, TOP_LEVEL_FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER,
|
||||||
|
MEMBER_PROPERTY, TOP_LEVEL_PROPERTY, CONSTRUCTOR)
|
||||||
|
|
||||||
private val possibleTargetMap = mapOf<JetModifierKeywordToken, Set<KotlinTarget>>(
|
private val possibleTargetMap = mapOf<JetModifierKeywordToken, Set<KotlinTarget>>(
|
||||||
ENUM_KEYWORD to EnumSet.of(ENUM_CLASS),
|
ENUM_KEYWORD to EnumSet.of(ENUM_CLASS),
|
||||||
ABSTRACT_KEYWORD to EnumSet.of(CLASS_ONLY, LOCAL_CLASS, INNER_CLASS, INTERFACE, MEMBER_PROPERTY, MEMBER_FUNCTION),
|
ABSTRACT_KEYWORD to EnumSet.of(CLASS_ONLY, LOCAL_CLASS, INNER_CLASS, INTERFACE, MEMBER_PROPERTY, MEMBER_FUNCTION),
|
||||||
@@ -56,13 +60,11 @@ public object ModifierCheckerCore {
|
|||||||
// We should have also CLASS_ONLY here because INNER_CLASS is not always perfectly identified
|
// We should have also CLASS_ONLY here because INNER_CLASS is not always perfectly identified
|
||||||
INNER_KEYWORD to EnumSet.of(CLASS_ONLY, INNER_CLASS),
|
INNER_KEYWORD to EnumSet.of(CLASS_ONLY, INNER_CLASS),
|
||||||
OVERRIDE_KEYWORD to EnumSet.of(MEMBER_PROPERTY, MEMBER_FUNCTION),
|
OVERRIDE_KEYWORD to EnumSet.of(MEMBER_PROPERTY, MEMBER_FUNCTION),
|
||||||
PRIVATE_KEYWORD to EnumSet.of(CLASS, MEMBER_FUNCTION, TOP_LEVEL_FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER,
|
PRIVATE_KEYWORD to defaultVisibilityTargets,
|
||||||
MEMBER_PROPERTY, TOP_LEVEL_PROPERTY, CONSTRUCTOR),
|
PUBLIC_KEYWORD to defaultVisibilityTargets,
|
||||||
PUBLIC_KEYWORD to EnumSet.of(CLASS, MEMBER_FUNCTION, TOP_LEVEL_FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER,
|
INTERNAL_KEYWORD to defaultVisibilityTargets,
|
||||||
MEMBER_PROPERTY, TOP_LEVEL_PROPERTY, CONSTRUCTOR),
|
PROTECTED_KEYWORD to EnumSet.of(CLASS_ONLY, OBJECT, INTERFACE, INNER_CLASS, ENUM_CLASS, ANNOTATION_CLASS,
|
||||||
INTERNAL_KEYWORD to EnumSet.of(CLASS, MEMBER_FUNCTION, TOP_LEVEL_FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER,
|
MEMBER_FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER, MEMBER_PROPERTY, CONSTRUCTOR),
|
||||||
MEMBER_PROPERTY, TOP_LEVEL_PROPERTY, CONSTRUCTOR),
|
|
||||||
PROTECTED_KEYWORD to EnumSet.of(CLASS, MEMBER_FUNCTION, PROPERTY_GETTER, PROPERTY_SETTER, MEMBER_PROPERTY, CONSTRUCTOR),
|
|
||||||
IN_KEYWORD to EnumSet.of(TYPE_PARAMETER, TYPE_PROJECTION),
|
IN_KEYWORD to EnumSet.of(TYPE_PARAMETER, TYPE_PROJECTION),
|
||||||
OUT_KEYWORD to EnumSet.of(TYPE_PARAMETER, TYPE_PROJECTION),
|
OUT_KEYWORD to EnumSet.of(TYPE_PARAMETER, TYPE_PROJECTION),
|
||||||
REIFIED_KEYWORD to EnumSet.of(TYPE_PARAMETER),
|
REIFIED_KEYWORD to EnumSet.of(TYPE_PARAMETER),
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
fun foo() {
|
||||||
|
<!WRONG_MODIFIER_TARGET!>public<!> class A
|
||||||
|
<!WRONG_MODIFIER_TARGET!>private<!> class B
|
||||||
|
<!WRONG_MODIFIER_TARGET!>protected<!> class C
|
||||||
|
<!WRONG_MODIFIER_TARGET!>internal<!> class D
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
package
|
||||||
|
|
||||||
|
public fun foo(): kotlin.Unit
|
||||||
@@ -31,7 +31,7 @@ public <!REPEATED_MODIFIER!>public<!> val bar: Int = 1
|
|||||||
public <!REPEATED_MODIFIER!>public<!> fun foo(): Int = 1
|
public <!REPEATED_MODIFIER!>public<!> fun foo(): Int = 1
|
||||||
|
|
||||||
fun test() {
|
fun test() {
|
||||||
public <!REPEATED_MODIFIER!>public<!> class B(public <!REPEATED_MODIFIER!>public<!> val z: Int = 1) {
|
<!WRONG_MODIFIER_TARGET!>public<!> <!REPEATED_MODIFIER!>public<!> class B(public <!REPEATED_MODIFIER!>public<!> val z: Int = 1) {
|
||||||
public <!REPEATED_MODIFIER!>public<!> val y: Int = 2
|
public <!REPEATED_MODIFIER!>public<!> val y: Int = 2
|
||||||
|
|
||||||
public val x: Int
|
public val x: Int
|
||||||
|
|||||||
@@ -9156,6 +9156,12 @@ public class JetDiagnosticsTestGenerated extends AbstractJetDiagnosticsTest {
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("NoLocalVisibility.kt")
|
||||||
|
public void testNoLocalVisibility() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/modifiers/NoLocalVisibility.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("primaryConstructorMissingKeyword.kt")
|
@TestMetadata("primaryConstructorMissingKeyword.kt")
|
||||||
public void testPrimaryConstructorMissingKeyword() throws Exception {
|
public void testPrimaryConstructorMissingKeyword() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/modifiers/primaryConstructorMissingKeyword.kt");
|
String fileName = JetTestUtils.navigationMetadata("compiler/testData/diagnostics/tests/modifiers/primaryConstructorMissingKeyword.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user