User: joe Date: 14 Apr 26 11:55 Revision: be03c807ea8e79dec0b89a949d1de64c8e8cf5be Summary: Add implicit usage provider for abstract shadows in enums TeamCity URL: http://ci.mcdev.io:80/viewModification.html?tab=vcsModificationFiles&modId=10530&personal=false Index: src/main/kotlin/platform/mixin/insight/MixinImplicitUsageProvider.kt =================================================================== --- src/main/kotlin/platform/mixin/insight/MixinImplicitUsageProvider.kt (revision 6fc6f9cd6839b10f340b7b5c5e4dfbddcc5562a5) +++ src/main/kotlin/platform/mixin/insight/MixinImplicitUsageProvider.kt (revision be03c807ea8e79dec0b89a949d1de64c8e8cf5be) @@ -29,6 +29,7 @@ import com.intellij.psi.PsiEnumConstant import com.intellij.psi.PsiField import com.intellij.psi.PsiMethod +import com.intellij.psi.PsiModifier import com.intellij.psi.PsiModifierListOwner import com.intellij.psi.PsiParameter @@ -72,8 +73,12 @@ return element is PsiEnumConstant && element.containingClass?.isMixin == true } + private fun isAbstractShadowInEnum(element: PsiElement): Boolean { + return element is PsiMethod && element.hasModifierProperty(PsiModifier.ABSTRACT) && element.hasAnnotation(SHADOW) && element.containingClass?.isEnum == true + } + override fun isImplicitUsage(element: PsiElement) = - isParameterInShadow(element) || isHandlerImplicitlyUsed(element) || isMixinAddedEnumConstant(element) + isParameterInShadow(element) || isHandlerImplicitlyUsed(element) || isMixinAddedEnumConstant(element) || isAbstractShadowInEnum(element) override fun isImplicitRead(element: PsiElement) = isShadowField(element) override fun isImplicitWrite(element: PsiElement) = isShadowField(element) }