mirror of
https://github.com/mamoe/mirai.git
synced 2025-01-11 02:50:15 +08:00
Improve inspection performance
This commit is contained in:
parent
e63775676a
commit
4803a21488
@ -19,6 +19,7 @@ import net.mamoe.mirai.console.compiler.common.diagnostics.MiraiConsoleErrors.RE
|
|||||||
import net.mamoe.mirai.console.compiler.common.resolve.CONSOLE_COMMAND_OWNER_FQ_NAME
|
import net.mamoe.mirai.console.compiler.common.resolve.CONSOLE_COMMAND_OWNER_FQ_NAME
|
||||||
import net.mamoe.mirai.console.compiler.common.resolve.ResolveContextKind
|
import net.mamoe.mirai.console.compiler.common.resolve.ResolveContextKind
|
||||||
import net.mamoe.mirai.console.compiler.common.resolve.resolveContextKinds
|
import net.mamoe.mirai.console.compiler.common.resolve.resolveContextKinds
|
||||||
|
import net.mamoe.mirai.console.intellij.resolve.findChild
|
||||||
import net.mamoe.mirai.console.intellij.resolve.resolveAllCalls
|
import net.mamoe.mirai.console.intellij.resolve.resolveAllCalls
|
||||||
import net.mamoe.mirai.console.intellij.resolve.resolveStringConstantValues
|
import net.mamoe.mirai.console.intellij.resolve.resolveStringConstantValues
|
||||||
import net.mamoe.mirai.console.intellij.resolve.valueParametersWithArguments
|
import net.mamoe.mirai.console.intellij.resolve.valueParametersWithArguments
|
||||||
@ -28,6 +29,7 @@ import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
|||||||
import org.jetbrains.kotlin.diagnostics.Diagnostic
|
import org.jetbrains.kotlin.diagnostics.Diagnostic
|
||||||
import org.jetbrains.kotlin.idea.inspections.collections.isCalling
|
import org.jetbrains.kotlin.idea.inspections.collections.isCalling
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
|
import org.jetbrains.kotlin.resolve.calls.model.ResolvedCall
|
||||||
import org.jetbrains.kotlin.resolve.checkers.DeclarationChecker
|
import org.jetbrains.kotlin.resolve.checkers.DeclarationChecker
|
||||||
import org.jetbrains.kotlin.resolve.checkers.DeclarationCheckerContext
|
import org.jetbrains.kotlin.resolve.checkers.DeclarationCheckerContext
|
||||||
import java.util.*
|
import java.util.*
|
||||||
@ -186,19 +188,20 @@ class ContextualParametersChecker : DeclarationChecker {
|
|||||||
descriptor: DeclarationDescriptor,
|
descriptor: DeclarationDescriptor,
|
||||||
context: DeclarationCheckerContext,
|
context: DeclarationCheckerContext,
|
||||||
) {
|
) {
|
||||||
when (declaration) {
|
val calls: Sequence<ResolvedCall<*>> = when (declaration) {
|
||||||
is KtClassOrObject -> {
|
is KtClassOrObject -> {
|
||||||
|
declaration.findChild<KtSuperTypeList>()?.resolveAllCalls(context.bindingContext)
|
||||||
|
// ignore class body, which will be [check]ed
|
||||||
}
|
}
|
||||||
|
|
||||||
is KtNamedFunction -> {
|
// is KtNamedFunction -> {
|
||||||
|
//
|
||||||
|
// }
|
||||||
|
else -> declaration.resolveAllCalls(context.bindingContext)
|
||||||
|
|
||||||
}
|
} ?: return
|
||||||
|
|
||||||
}
|
calls
|
||||||
|
|
||||||
declaration.resolveAllCalls(context.bindingContext)
|
|
||||||
.asSequence()
|
|
||||||
.flatMap { call ->
|
.flatMap { call ->
|
||||||
call.valueParametersWithArguments().asSequence()
|
call.valueParametersWithArguments().asSequence()
|
||||||
}
|
}
|
||||||
|
@ -121,7 +121,7 @@ val KtAnnotationEntry.annotationClass: KtClass?
|
|||||||
fun KtAnnotated.hasAnnotation(fqName: FqName): Boolean =
|
fun KtAnnotated.hasAnnotation(fqName: FqName): Boolean =
|
||||||
this.annotationEntries.any { it.annotationClass?.getKotlinFqName() == fqName }
|
this.annotationEntries.any { it.annotationClass?.getKotlinFqName() == fqName }
|
||||||
|
|
||||||
fun KtDeclaration.resolveAllCalls(bindingContext: BindingContext): Sequence<ResolvedCall<*>> {
|
fun KtElement.resolveAllCalls(bindingContext: BindingContext): Sequence<ResolvedCall<*>> {
|
||||||
return allChildrenWithSelf
|
return allChildrenWithSelf
|
||||||
.filterIsInstance<KtElement>()
|
.filterIsInstance<KtElement>()
|
||||||
.mapNotNull { it.getResolvedCall(bindingContext) }
|
.mapNotNull { it.getResolvedCall(bindingContext) }
|
||||||
|
Loading…
Reference in New Issue
Block a user