From 5e334550eb44cfc3686d7109e39ef43d43d31827 Mon Sep 17 00:00:00 2001 From: Denis Zharkov Date: Thu, 23 Nov 2017 16:18:25 +0300 Subject: [PATCH] Optimize entry point check in UnusedSymbolInspection It helps to avoid return types calculation for light-class element --- .../kotlin/idea/inspections/UnusedSymbolInspection.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedSymbolInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedSymbolInspection.kt index 55c74362caa..8da3f3ccc0c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedSymbolInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/UnusedSymbolInspection.kt @@ -69,6 +69,7 @@ import org.jetbrains.kotlin.idea.search.usagesSearch.getAccessorNames import org.jetbrains.kotlin.idea.search.usagesSearch.getClassNameForCompanionObject import org.jetbrains.kotlin.idea.util.ProjectRootsUtil import org.jetbrains.kotlin.lexer.KtTokens +import org.jetbrains.kotlin.name.Name import org.jetbrains.kotlin.psi.* import org.jetbrains.kotlin.psi.psiUtil.* import org.jetbrains.kotlin.resolve.DescriptorUtils @@ -83,8 +84,11 @@ import javax.swing.JPanel class UnusedSymbolInspection : AbstractKotlinInspection() { companion object { private val javaInspection = UnusedDeclarationInspection() + private val MAIN_NAMES = setOf("main", "premain", "agentmain") fun isEntryPoint(declaration: KtNamedDeclaration): Boolean { + if (declaration.annotationEntries.isEmpty() && declaration.name !in MAIN_NAMES) return false + val lightElement: PsiElement? = when (declaration) { is KtClassOrObject -> declaration.toLightClass() is KtNamedFunction, is KtSecondaryConstructor -> LightClassUtil.getLightClassMethod(declaration as KtFunction)