Use descriptor modality in IDE inspections/intentions
This fixes KT-18160, KT-18194, KT-18195, KT-18197 ~
This commit is contained in:
+2
-1
@@ -36,7 +36,8 @@ interface DeclarationAttributeAltererExtension {
|
||||
declaration: DeclarationDescriptor?,
|
||||
containingDeclaration: DeclarationDescriptor?,
|
||||
currentModality: Modality,
|
||||
bindingContext: BindingContext
|
||||
bindingContext: BindingContext,
|
||||
isImplicitModality: Boolean
|
||||
): Modality? = null
|
||||
|
||||
fun shouldConvertFirstSAMParameterToReceiver(function: FunctionDescriptor) : Boolean = false
|
||||
|
||||
@@ -178,27 +178,6 @@ fun KtBlockExpression.contentRange(): PsiChildRange {
|
||||
|
||||
// ----------- Inheritance -----------------------------------------------------------------------------------------------------------------
|
||||
|
||||
fun KtClass.isInheritable(): Boolean {
|
||||
return isInterface() || hasModifier(KtTokens.OPEN_KEYWORD) ||
|
||||
hasModifier(KtTokens.ABSTRACT_KEYWORD) || hasModifier(KtTokens.SEALED_KEYWORD)
|
||||
}
|
||||
|
||||
fun KtDeclaration.isOverridable(): Boolean {
|
||||
val parent = parent
|
||||
if (!(parent is KtClassBody || parent is KtParameterList)) return false
|
||||
|
||||
val klass = if (parent.parent is KtPrimaryConstructor)
|
||||
parent.parent.parent as? KtClass
|
||||
else
|
||||
parent.parent as? KtClass
|
||||
if (klass == null || (!klass.isInheritable() && !klass.isEnum())) return false
|
||||
|
||||
if (hasModifier(KtTokens.FINAL_KEYWORD) || hasModifier(KtTokens.PRIVATE_KEYWORD)) return false
|
||||
|
||||
return klass.isInterface() ||
|
||||
hasModifier(KtTokens.ABSTRACT_KEYWORD) || hasModifier(KtTokens.OPEN_KEYWORD) || hasModifier(KtTokens.OVERRIDE_KEYWORD)
|
||||
}
|
||||
|
||||
fun KtClass.isAbstract(): Boolean = isInterface() || hasModifier(KtTokens.ABSTRACT_KEYWORD)
|
||||
|
||||
/**
|
||||
|
||||
@@ -131,7 +131,7 @@ public class ModifiersChecker {
|
||||
DeclarationDescriptor descriptor = bindingContext.get(BindingContext.DECLARATION_TO_DESCRIPTOR, modifierListOwner);
|
||||
for (DeclarationAttributeAltererExtension extension : extensions) {
|
||||
Modality newModality = extension.refineDeclarationModality(
|
||||
modifierListOwner, descriptor, containingDescriptor, modality, bindingContext);
|
||||
modifierListOwner, descriptor, containingDescriptor, modality, bindingContext, false);
|
||||
|
||||
if (newModality != null) {
|
||||
modality = newModality;
|
||||
|
||||
Reference in New Issue
Block a user