Skip to content

Commit a8245a1

Browse files
madlexaintellij-monorepo-bot
authored andcommitted
[k2 inspection] support implicit usages KTIJ-35312
GitOrigin-RevId: 6634badcaca27659f4cfd92465ec38bfacacc9b7
1 parent 8732e3d commit a8245a1

File tree

1 file changed

+14
-0
lines changed

1 file changed

+14
-0
lines changed

plugins/kotlin/highlighting/highlighting-k2/src/org/jetbrains/kotlin/idea/highlighting/KotlinUnusedHighlightingProcessor.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ import org.jetbrains.kotlin.analysis.api.components.resolveToCall
2929
import org.jetbrains.kotlin.analysis.api.components.resolveToSymbol
3030
import org.jetbrains.kotlin.analysis.api.resolution.*
3131
import org.jetbrains.kotlin.analysis.api.symbols.*
32+
import org.jetbrains.kotlin.asJava.LightClassUtil
33+
import org.jetbrains.kotlin.asJava.toLightClass
3234
import org.jetbrains.kotlin.idea.base.highlighting.KotlinBaseHighlightingBundle
3335
import org.jetbrains.kotlin.idea.codeinsights.impl.base.isExplicitlyIgnoredByName
3436
import 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

224238
class KotlinRefsHolder(val containingFile: KtFile) {

0 commit comments

Comments
 (0)