Minor optimization

This commit is contained in:
Valentin Kipyatkov
2015-08-12 16:02:41 +03:00
parent 0d27e7a259
commit a5306d9e4b
@@ -76,13 +76,17 @@ object J2KPostProcessingRegistrar {
exclExclExpr.replace(exclExclExpr.baseExpression!!) exclExclExpr.replace(exclExclExpr.baseExpression!!)
} }
registerDiagnosticBasedProcessing<JetSimpleNameExpression>(Errors.VAL_REASSIGNMENT) { element, diagnostic -> registerDiagnosticBasedProcessingFactory(
val property = element.mainReference.resolve() as? JetProperty Errors.VAL_REASSIGNMENT,
if (property != null && !property.isVar) { fun (element: JetSimpleNameExpression, diagnostic: Diagnostic): (() -> Unit)? {
val factory = JetPsiFactory(element.project) val property = element.mainReference.resolve() as? JetProperty ?: return null
property.valOrVarKeyword.replace(factory.createVarKeyword()) return {
} if (!property.isVar) {
} property.valOrVarKeyword.replace(JetPsiFactory(element.project).createVarKeyword())
}
}
}
)
} }
private inline fun <reified TElement : JetElement, TIntention: JetSelfTargetingRangeIntention<TElement>> registerIntentionBasedProcessing( private inline fun <reified TElement : JetElement, TIntention: JetSelfTargetingRangeIntention<TElement>> registerIntentionBasedProcessing(
@@ -102,12 +106,19 @@ object J2KPostProcessingRegistrar {
private inline fun <reified TElement : JetElement> registerDiagnosticBasedProcessing( private inline fun <reified TElement : JetElement> registerDiagnosticBasedProcessing(
diagnosticFactory: DiagnosticFactory<*>, diagnosticFactory: DiagnosticFactory<*>,
inlineOptions(InlineOption.ONLY_LOCAL_RETURN) fix: (TElement, Diagnostic) -> Unit inlineOptions(InlineOption.ONLY_LOCAL_RETURN) fix: (TElement, Diagnostic) -> Unit
) {
registerDiagnosticBasedProcessingFactory(diagnosticFactory) { element: TElement, diagnostic: Diagnostic -> { fix(element, diagnostic) } }
}
private inline fun <reified TElement : JetElement> registerDiagnosticBasedProcessingFactory(
diagnosticFactory: DiagnosticFactory<*>,
inlineOptions(InlineOption.ONLY_LOCAL_RETURN) fixFactory: (TElement, Diagnostic) -> (() -> Unit)?
) { ) {
_processings.add(object : J2kPostProcessing { _processings.add(object : J2kPostProcessing {
override fun createAction(element: JetElement, diagnostics: Diagnostics): (() -> Unit)? { override fun createAction(element: JetElement, diagnostics: Diagnostics): (() -> Unit)? {
if (!javaClass<TElement>().isInstance(element)) return null if (!javaClass<TElement>().isInstance(element)) return null
val diagnostic = diagnostics.forElement(element).firstOrNull { it.factory == diagnosticFactory } ?: return null val diagnostic = diagnostics.forElement(element).firstOrNull { it.factory == diagnosticFactory } ?: return null
return { fix(element as TElement, diagnostic) } return fixFactory(element as TElement, diagnostic)
} }
}) })
} }