@@ -29,6 +29,8 @@ import org.jetbrains.kotlin.analysis.api.components.resolveToCall
2929import org.jetbrains.kotlin.analysis.api.components.resolveToSymbol
3030import org.jetbrains.kotlin.analysis.api.resolution.*
3131import org.jetbrains.kotlin.analysis.api.symbols.*
32+ import org.jetbrains.kotlin.asJava.LightClassUtil
33+ import org.jetbrains.kotlin.asJava.toLightClass
3234import org.jetbrains.kotlin.idea.base.highlighting.KotlinBaseHighlightingBundle
3335import org.jetbrains.kotlin.idea.codeinsights.impl.base.isExplicitlyIgnoredByName
3436import org.jetbrains.kotlin.idea.highlighting.analyzers.isCalleeExpression
@@ -212,13 +214,25 @@ internal class KotlinUnusedHighlightingProcessor(private val ktFile: KtFile) {
212214 K2UnusedSymbolUtil .getPsiToReportProblem(declaration, javaInspection)
213215 }
214216 if (problemPsiElement == null ) return
217+ if (isEntryPoint(declaration)) return
215218 val description = declaration.describe() ? : return
216219 val message = KotlinBaseHighlightingBundle .message(" inspection.message.never.used" , description)
217220 val builder = UnusedSymbolUtil .createUnusedSymbolInfoBuilder(problemPsiElement, message, deadCodeInfoType, null )
218221 val fixes = K2UnusedSymbolUtil .createQuickFixes(declaration)
219222 fixes.forEach { builder.registerFix(it, null , null , null , deadCodeKey) }
220223 holder.add(builder.create())
221224 }
225+
226+ private fun isEntryPoint (declaration : KtNamedDeclaration ): Boolean {
227+ val lightElement: PsiElement = when (declaration) {
228+ is KtEnumEntry -> LightClassUtil .getLightClassBackingField(declaration)
229+ is KtClassOrObject -> declaration.toLightClass()
230+ is KtNamedFunction , is KtSecondaryConstructor -> LightClassUtil .getLightClassMethod(declaration as KtFunction )
231+ is KtProperty -> LightClassUtil .getLightClassBackingField(declaration)
232+ else -> null
233+ } ? : return false
234+ return javaInspection.isEntryPoint(lightElement)
235+ }
222236}
223237
224238class KotlinRefsHolder (val containingFile : KtFile ) {
0 commit comments