New J2K: reduce boilerplate code in post-processings for registerDiagnosticBasedProcessing's
This commit is contained in:
@@ -235,13 +235,8 @@ object NewJ2KPostProcessingRegistrar {
|
|||||||
action.invoke(element.project, null, element.containingFile)
|
action.invoke(element.project, null, element.containingFile)
|
||||||
},
|
},
|
||||||
|
|
||||||
registerDiagnosticBasedProcessing(Errors.SMARTCAST_IMPOSSIBLE) { element: PsiElement, diagnostic ->
|
registerDiagnosticBasedProcessingWithFixFactory(MissingIteratorExclExclFixFactory, Errors.ITERATOR_ON_NULLABLE),
|
||||||
val action =
|
registerDiagnosticBasedProcessingWithFixFactory(SmartCastImpossibleExclExclFixFactory, Errors.SMARTCAST_IMPOSSIBLE),
|
||||||
SmartCastImpossibleExclExclFixFactory.createActions(diagnostic).singleOrNull()
|
|
||||||
?: return@registerDiagnosticBasedProcessing
|
|
||||||
action.invoke(element.project, null, element.containingFile)
|
|
||||||
},
|
|
||||||
|
|
||||||
registerDiagnosticBasedProcessing(Errors.TYPE_MISMATCH) { element: PsiElement, diagnostic ->
|
registerDiagnosticBasedProcessing(Errors.TYPE_MISMATCH) { element: PsiElement, diagnostic ->
|
||||||
val diagnosticWithParameters = diagnostic as? DiagnosticWithParameters2<KtExpression, KotlinType, KotlinType>
|
val diagnosticWithParameters = diagnostic as? DiagnosticWithParameters2<KtExpression, KotlinType, KotlinType>
|
||||||
?: return@registerDiagnosticBasedProcessing
|
?: return@registerDiagnosticBasedProcessing
|
||||||
@@ -256,19 +251,14 @@ object NewJ2KPostProcessingRegistrar {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
registerDiagnosticBasedProcessing(Errors.CAST_NEVER_SUCCEEDS) { element: KtSimpleNameExpression, diagnostic ->
|
registerDiagnosticBasedProcessingWithFixFactory(
|
||||||
val action =
|
ReplacePrimitiveCastWithNumberConversionFix.Factory,
|
||||||
ReplacePrimitiveCastWithNumberConversionFix.createActionsForAllProblems(listOf(diagnostic)).singleOrNull()
|
Errors.CAST_NEVER_SUCCEEDS
|
||||||
?: return@registerDiagnosticBasedProcessing
|
),
|
||||||
action.invoke(element.project, null, element.containingKtFile)
|
registerDiagnosticBasedProcessingWithFixFactory(
|
||||||
},
|
ChangeCallableReturnTypeFix.ReturnTypeMismatchOnOverrideFactory,
|
||||||
registerDiagnosticBasedProcessing(Errors.RETURN_TYPE_MISMATCH_ON_OVERRIDE) { element: KtNamedDeclaration, diagnostic ->
|
Errors.RETURN_TYPE_MISMATCH_ON_OVERRIDE
|
||||||
val action =
|
),
|
||||||
ChangeCallableReturnTypeFix.ReturnTypeMismatchOnOverrideFactory
|
|
||||||
.createActionsForAllProblems(listOf(diagnostic)).singleOrNull()
|
|
||||||
?: return@registerDiagnosticBasedProcessing
|
|
||||||
action.invoke(element.project, null, element.containingKtFile)
|
|
||||||
},
|
|
||||||
|
|
||||||
RemoveRedundantTypeQualifierProcessing(),
|
RemoveRedundantTypeQualifierProcessing(),
|
||||||
RemoveRedundantExpressionQualifierProcessing(),
|
RemoveRedundantExpressionQualifierProcessing(),
|
||||||
@@ -287,34 +277,18 @@ object NewJ2KPostProcessingRegistrar {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
registerDiagnosticBasedProcessing<KtTypeProjection>(Errors.REDUNDANT_PROJECTION) { _, diagnostic ->
|
registerDiagnosticBasedProcessingWithFixFactory(
|
||||||
val fix = RemoveModifierFix.createRemoveProjectionFactory(true).createActions(diagnostic).single() as RemoveModifierFix
|
RemoveModifierFix.createRemoveProjectionFactory(true),
|
||||||
fix.invoke()
|
Errors.REDUNDANT_PROJECTION
|
||||||
},
|
),
|
||||||
|
registerDiagnosticBasedProcessingWithFixFactory(
|
||||||
registerDiagnosticBasedProcessing<KtModifierListOwner>(Errors.VIRTUAL_MEMBER_HIDDEN) { element, diagnostic ->
|
AddModifierFix.createFactory(KtTokens.OVERRIDE_KEYWORD),
|
||||||
val action = AddModifierFix
|
Errors.VIRTUAL_MEMBER_HIDDEN
|
||||||
.createFactory(KtTokens.OVERRIDE_KEYWORD)
|
),
|
||||||
.createActions(diagnostic)
|
registerDiagnosticBasedProcessingWithFixFactory(
|
||||||
.singleOrNull() ?: return@registerDiagnosticBasedProcessing
|
RemoveModifierFix.createRemoveModifierFromListOwnerFactory(KtTokens.OPEN_KEYWORD),
|
||||||
action.invoke(element.project, null, element.containingKtFile)
|
Errors.NON_FINAL_MEMBER_IN_FINAL_CLASS, Errors.NON_FINAL_MEMBER_IN_OBJECT
|
||||||
},
|
),
|
||||||
|
|
||||||
registerDiagnosticBasedProcessing<KtModifierListOwner>(Errors.NON_FINAL_MEMBER_IN_FINAL_CLASS) { _, diagnostic ->
|
|
||||||
val fix =
|
|
||||||
RemoveModifierFix
|
|
||||||
.createRemoveModifierFromListOwnerFactory(KtTokens.OPEN_KEYWORD)
|
|
||||||
.createActions(diagnostic).single() as RemoveModifierFix
|
|
||||||
fix.invoke()
|
|
||||||
},
|
|
||||||
registerDiagnosticBasedProcessing<KtModifierListOwner>(Errors.NON_FINAL_MEMBER_IN_OBJECT) { _, diagnostic ->
|
|
||||||
val fix =
|
|
||||||
RemoveModifierFix
|
|
||||||
.createRemoveModifierFromListOwnerFactory(KtTokens.OPEN_KEYWORD)
|
|
||||||
.createActions(diagnostic).single() as RemoveModifierFix
|
|
||||||
fix.invoke()
|
|
||||||
},
|
|
||||||
|
|
||||||
registerDiagnosticBasedProcessingFactory(
|
registerDiagnosticBasedProcessingFactory(
|
||||||
Errors.VAL_REASSIGNMENT, Errors.CAPTURED_VAL_INITIALIZATION, Errors.CAPTURED_MEMBER_VAL_INITIALIZATION
|
Errors.VAL_REASSIGNMENT, Errors.CAPTURED_VAL_INITIALIZATION, Errors.CAPTURED_MEMBER_VAL_INITIALIZATION
|
||||||
) { element: KtSimpleNameExpression, _: Diagnostic ->
|
) { element: KtSimpleNameExpression, _: Diagnostic ->
|
||||||
@@ -469,6 +443,15 @@ object NewJ2KPostProcessingRegistrar {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private inline fun registerDiagnosticBasedProcessingWithFixFactory(
|
||||||
|
fixFactory: KotlinIntentionActionsFactory,
|
||||||
|
vararg diagnosticFactory: DiagnosticFactory<*>
|
||||||
|
): NewJ2kPostProcessing = registerDiagnosticBasedProcessing(*diagnosticFactory) { element: PsiElement, diagnostic: Diagnostic ->
|
||||||
|
fixFactory.createActions(diagnostic).singleOrNull()
|
||||||
|
?.invoke(element.project, null, element.containingFile)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private inline fun <reified TElement : PsiElement> registerDiagnosticBasedProcessing(
|
private inline fun <reified TElement : PsiElement> registerDiagnosticBasedProcessing(
|
||||||
vararg diagnosticFactory: DiagnosticFactory<*>,
|
vararg diagnosticFactory: DiagnosticFactory<*>,
|
||||||
|
|||||||
Reference in New Issue
Block a user