Atul Gupta
08/17/2025, 8:23 AMErrors.NAME_SHADOWING
using public fun KtElement.diagnostics(filter: KaDiagnosticCheckerFilter): Collection<KaDiagnosticWithPsi<*>>
?Roman Golyshev
08/18/2025, 9:36 AMAtul Gupta
08/18/2025, 10:07 AMNoNameShadowing
rule which warns users that particular varaible is being shadowed.
Usage pattern is like below
override fun visitProperty(property: KtProperty) {
super.visitProperty(property)
checkNameShadowing(property)
}
override fun visitDestructuringDeclarationEntry(multiDeclarationEntry: KtDestructuringDeclarationEntry) {
super.visitDestructuringDeclarationEntry(multiDeclarationEntry)
checkNameShadowing(multiDeclarationEntry)
}
override fun visitParameter(parameter: KtParameter) {
super.visitParameter(parameter)
checkNameShadowing(parameter)
}
private fun checkNameShadowing(declaration: KtNamedDeclaration) {
val nameIdentifier = declaration.nameIdentifier ?: return
if (bindingContext.diagnostics.forElement(declaration).any { it.factory == Errors.NAME_SHADOWING }) {
report(Finding(Entity.from(nameIdentifier), "Name shadowed: ${nameIdentifier.text}"))
}
}