FE 1.0: introduce deprecation EXPOSED_FROM_PRIVATE_IN_FILE
#KT-20094 Fixed
This commit is contained in:
@@ -140,6 +140,7 @@ public interface Errors {
|
|||||||
DiagnosticFactory3<KtSuperTypeListEntry, EffectiveVisibility, DescriptorWithRelation, EffectiveVisibility> EXPOSED_SUPER_CLASS = DiagnosticFactory3.create(ERROR);
|
DiagnosticFactory3<KtSuperTypeListEntry, EffectiveVisibility, DescriptorWithRelation, EffectiveVisibility> EXPOSED_SUPER_CLASS = DiagnosticFactory3.create(ERROR);
|
||||||
DiagnosticFactory3<KtSuperTypeListEntry, EffectiveVisibility, DescriptorWithRelation, EffectiveVisibility> EXPOSED_SUPER_INTERFACE = DiagnosticFactory3.create(ERROR);
|
DiagnosticFactory3<KtSuperTypeListEntry, EffectiveVisibility, DescriptorWithRelation, EffectiveVisibility> EXPOSED_SUPER_INTERFACE = DiagnosticFactory3.create(ERROR);
|
||||||
DiagnosticFactory3<PsiElement, EffectiveVisibility, DescriptorWithRelation, EffectiveVisibility> EXPOSED_TYPEALIAS_EXPANDED_TYPE = DiagnosticFactory3.create(ERROR);
|
DiagnosticFactory3<PsiElement, EffectiveVisibility, DescriptorWithRelation, EffectiveVisibility> EXPOSED_TYPEALIAS_EXPANDED_TYPE = DiagnosticFactory3.create(ERROR);
|
||||||
|
DiagnosticFactory2<PsiElement, DescriptorWithRelation, EffectiveVisibility> EXPOSED_FROM_PRIVATE_IN_FILE = DiagnosticFactory2.create(WARNING);
|
||||||
|
|
||||||
DiagnosticFactory2<KtExpression, KotlinType, Collection<ClassDescriptor>> INACCESSIBLE_TYPE = DiagnosticFactory2.create(WARNING);
|
DiagnosticFactory2<KtExpression, KotlinType, Collection<ClassDescriptor>> INACCESSIBLE_TYPE = DiagnosticFactory2.create(WARNING);
|
||||||
|
|
||||||
|
|||||||
+1
@@ -81,6 +81,7 @@ public class DefaultErrorMessages {
|
|||||||
MAP.put(EXPOSED_SUPER_CLASS, "''{0}'' subclass exposes its ''{2}'' supertype{1}", TO_STRING, TO_STRING, TO_STRING);
|
MAP.put(EXPOSED_SUPER_CLASS, "''{0}'' subclass exposes its ''{2}'' supertype{1}", TO_STRING, TO_STRING, TO_STRING);
|
||||||
MAP.put(EXPOSED_SUPER_INTERFACE, "''{0}'' sub-interface exposes its ''{2}'' supertype{1}", TO_STRING, TO_STRING, TO_STRING);
|
MAP.put(EXPOSED_SUPER_INTERFACE, "''{0}'' sub-interface exposes its ''{2}'' supertype{1}", TO_STRING, TO_STRING, TO_STRING);
|
||||||
MAP.put(EXPOSED_TYPEALIAS_EXPANDED_TYPE, "''{0}'' typealias exposes ''{2}'' in expanded type{1}", TO_STRING, TO_STRING, TO_STRING);
|
MAP.put(EXPOSED_TYPEALIAS_EXPANDED_TYPE, "''{0}'' typealias exposes ''{2}'' in expanded type{1}", TO_STRING, TO_STRING, TO_STRING);
|
||||||
|
MAP.put(EXPOSED_FROM_PRIVATE_IN_FILE, "Deprecation: private-in-file class should not expose ''{1}'' type{0}", TO_STRING, TO_STRING);
|
||||||
|
|
||||||
MAP.put(EXTENSION_SHADOWED_BY_MEMBER, "Extension is shadowed by a member: {0}", COMPACT_WITH_MODIFIERS);
|
MAP.put(EXTENSION_SHADOWED_BY_MEMBER, "Extension is shadowed by a member: {0}", COMPACT_WITH_MODIFIERS);
|
||||||
MAP.put(EXTENSION_FUNCTION_SHADOWED_BY_INNER_CLASS_CONSTRUCTOR,
|
MAP.put(EXTENSION_FUNCTION_SHADOWED_BY_INNER_CLASS_CONSTRUCTOR,
|
||||||
|
|||||||
@@ -35,7 +35,14 @@ class ExposedVisibilityChecker(private val trace: BindingTrace? = null) {
|
|||||||
elementVisibility: EffectiveVisibility,
|
elementVisibility: EffectiveVisibility,
|
||||||
restrictingDescriptor: DescriptorWithRelation
|
restrictingDescriptor: DescriptorWithRelation
|
||||||
) {
|
) {
|
||||||
trace?.report(diagnostic.on(element, elementVisibility, restrictingDescriptor, restrictingDescriptor.effectiveVisibility()))
|
val trace = trace ?: return
|
||||||
|
val restrictingVisibility = restrictingDescriptor.effectiveVisibility()
|
||||||
|
if (elementVisibility == EffectiveVisibility.PrivateInFile) {
|
||||||
|
// Deprecation: condition ^ should be changed to false after 1.6
|
||||||
|
trace.report(EXPOSED_FROM_PRIVATE_IN_FILE.on(element, restrictingDescriptor, restrictingVisibility))
|
||||||
|
} else {
|
||||||
|
trace.report(diagnostic.on(element, elementVisibility, restrictingDescriptor, restrictingVisibility))
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// NB: does not check any members
|
// NB: does not check any members
|
||||||
|
|||||||
@@ -11,17 +11,17 @@ class Public {
|
|||||||
private class PrivateInFileClass {
|
private class PrivateInFileClass {
|
||||||
private open class NestedPrivate
|
private open class NestedPrivate
|
||||||
|
|
||||||
fun <!EXPOSED_FUNCTION_RETURN_TYPE!>test1<!>() = NestedPrivate()
|
fun <!EXPOSED_FROM_PRIVATE_IN_FILE!>test1<!>() = NestedPrivate()
|
||||||
fun test2(<!EXPOSED_PARAMETER_TYPE!>p: NestedPrivate<!>) {}
|
fun test2(<!EXPOSED_FROM_PRIVATE_IN_FILE!>p: NestedPrivate<!>) {}
|
||||||
fun <!EXPOSED_RECEIVER_TYPE!>NestedPrivate<!>.test3() {}
|
fun <!EXPOSED_FROM_PRIVATE_IN_FILE!>NestedPrivate<!>.test3() {}
|
||||||
val <!EXPOSED_PROPERTY_TYPE!>test4<!> = NestedPrivate()
|
val <!EXPOSED_FROM_PRIVATE_IN_FILE!>test4<!> = NestedPrivate()
|
||||||
class Test5 : <!EXPOSED_SUPER_CLASS!>NestedPrivate()<!>
|
class Test5 : <!EXPOSED_FROM_PRIVATE_IN_FILE!>NestedPrivate()<!>
|
||||||
}
|
}
|
||||||
|
|
||||||
private interface PrivateInFile {
|
private interface PrivateInFile {
|
||||||
private class Private
|
private class Private
|
||||||
|
|
||||||
fun <!EXPOSED_FUNCTION_RETURN_TYPE!>expose<!>() = Private()
|
fun <!EXPOSED_FROM_PRIVATE_IN_FILE!>expose<!>() = Private()
|
||||||
}
|
}
|
||||||
|
|
||||||
// Exposes 'PrivateInFile$Private' via 'expose'
|
// Exposes 'PrivateInFile$Private' via 'expose'
|
||||||
|
|||||||
@@ -11,4 +11,4 @@ package a
|
|||||||
|
|
||||||
import pack1.SomeClass.*
|
import pack1.SomeClass.*
|
||||||
|
|
||||||
private class X : <!EXPOSED_SUPER_CLASS!><!FINAL_SUPERTYPE, INVISIBLE_MEMBER, INVISIBLE_REFERENCE!>N<!>()<!>
|
private class X : <!EXPOSED_FROM_PRIVATE_IN_FILE!><!FINAL_SUPERTYPE, INVISIBLE_MEMBER, INVISIBLE_REFERENCE!>N<!>()<!>
|
||||||
|
|||||||
@@ -199,7 +199,7 @@ class QuickFixRegistrar : QuickFixContributor {
|
|||||||
|
|
||||||
for (exposed in listOf(
|
for (exposed in listOf(
|
||||||
EXPOSED_FUNCTION_RETURN_TYPE, EXPOSED_PARAMETER_TYPE, EXPOSED_PROPERTY_TYPE, EXPOSED_PROPERTY_TYPE_IN_CONSTRUCTOR,
|
EXPOSED_FUNCTION_RETURN_TYPE, EXPOSED_PARAMETER_TYPE, EXPOSED_PROPERTY_TYPE, EXPOSED_PROPERTY_TYPE_IN_CONSTRUCTOR,
|
||||||
EXPOSED_RECEIVER_TYPE, EXPOSED_SUPER_CLASS, EXPOSED_SUPER_INTERFACE, EXPOSED_TYPE_PARAMETER_BOUND
|
EXPOSED_RECEIVER_TYPE, EXPOSED_SUPER_CLASS, EXPOSED_SUPER_INTERFACE, EXPOSED_TYPE_PARAMETER_BOUND, EXPOSED_FROM_PRIVATE_IN_FILE
|
||||||
)) {
|
)) {
|
||||||
exposed.registerFactory(ChangeVisibilityOnExposureFactory)
|
exposed.registerFactory(ChangeVisibilityOnExposureFactory)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user