User: joe Date: 08 Apr 26 12:53 Revision: c54831ec8b84efe5959556627ed6ccd7a1c4a506 Summary: Add mixin constant implicit usage provider and line marker provider TeamCity URL: http://ci.mcdev.io:80/viewModification.html?tab=vcsModificationFiles&modId=10496&personal=false Index: src/main/kotlin/asset/MixinAssets.kt =================================================================== --- src/main/kotlin/asset/MixinAssets.kt (revision 9ab87fb8faf78967c1ebb9900951156f4a06ea58) +++ src/main/kotlin/asset/MixinAssets.kt (revision c54831ec8b84efe5959556627ed6ccd7a1c4a506) @@ -40,6 +40,9 @@ val MIXIN_SHADOW_ICON = loadIcon("/assets/icons/mixin/mixin_shadow.svg") val MIXIN_SHADOW_ICON_DARK = loadIcon("/assets/icons/mixin/mixin_shadow_dark_alt.svg") + val MIXIN_ENUM_CONSTANT_ICON = loadIcon("/assets/icons/mixin/mixin_enum_constant.svg") + val MIXIN_ENUM_CONSTANT_ICON_DARK = loadIcon("/assets/icons/mixin/mixin_enum_constant_dark.svg") + val MIXIN_TARGET_ACCESSOR_MIXIN_ICON = loadIcon("/assets/icons/mixin/mixin_target_accessor_mixin.svg") val MIXIN_TARGET_ACCESSOR_MIXIN_ICON_DARK = loadIcon("/assets/icons/mixin/mixin_target_accessor_mixin_dark.svg") Index: src/main/kotlin/platform/mixin/insight/MixinElementLineMarkerProvider.kt =================================================================== --- src/main/kotlin/platform/mixin/insight/MixinElementLineMarkerProvider.kt (revision 9ab87fb8faf78967c1ebb9900951156f4a06ea58) +++ src/main/kotlin/platform/mixin/insight/MixinElementLineMarkerProvider.kt (revision c54831ec8b84efe5959556627ed6ccd7a1c4a506) @@ -33,6 +33,7 @@ import com.intellij.openapi.fileEditor.FileEditorManager import com.intellij.psi.PsiAnnotation import com.intellij.psi.PsiElement +import com.intellij.psi.PsiEnumConstant import com.intellij.psi.PsiField import com.intellij.psi.PsiIdentifier import com.intellij.psi.PsiMember @@ -57,6 +58,19 @@ return null } + if (element is PsiEnumConstant) { + val identifier = element.nameIdentifier + return LineMarkerInfo( + identifier, + identifier.textRange, + MixinAssets.MIXIN_ENUM_CONSTANT_ICON, + { "Mixin-added enum constant" }, + null, + GutterIconRenderer.Alignment.LEFT, + { "mixin enum constant indicator" }, + ) + } + val identifier = when (element) { is PsiMethod -> element.nameIdentifier is PsiField -> element.nameIdentifier Index: src/main/kotlin/platform/mixin/insight/MixinImplicitUsageProvider.kt =================================================================== --- src/main/kotlin/platform/mixin/insight/MixinImplicitUsageProvider.kt (revision 9ab87fb8faf78967c1ebb9900951156f4a06ea58) +++ src/main/kotlin/platform/mixin/insight/MixinImplicitUsageProvider.kt (revision c54831ec8b84efe5959556627ed6ccd7a1c4a506) @@ -22,9 +22,11 @@ import com.demonwav.mcdev.platform.mixin.handlers.MixinAnnotationHandler import com.demonwav.mcdev.platform.mixin.util.MixinConstants.Annotations.SHADOW +import com.demonwav.mcdev.platform.mixin.util.isMixin import com.demonwav.mcdev.platform.mixin.util.isMixinExtrasSugar import com.intellij.codeInsight.daemon.ImplicitUsageProvider import com.intellij.psi.PsiElement +import com.intellij.psi.PsiEnumConstant import com.intellij.psi.PsiField import com.intellij.psi.PsiMethod import com.intellij.psi.PsiModifierListOwner @@ -66,7 +68,12 @@ return false } - override fun isImplicitUsage(element: PsiElement) = isParameterInShadow(element) || isHandlerImplicitlyUsed(element) + private fun isMixinAddedEnumConstant(element: PsiElement): Boolean { + return element is PsiEnumConstant && element.containingClass?.isMixin == true + } + + override fun isImplicitUsage(element: PsiElement) = + isParameterInShadow(element) || isHandlerImplicitlyUsed(element) || isMixinAddedEnumConstant(element) override fun isImplicitRead(element: PsiElement) = isShadowField(element) override fun isImplicitWrite(element: PsiElement) = isShadowField(element) } Index: src/main/resources/assets/icons/mixin/mixin_enum_constant.svg =================================================================== --- src/main/resources/assets/icons/mixin/mixin_enum_constant.svg (revision c54831ec8b84efe5959556627ed6ccd7a1c4a506) +++ src/main/resources/assets/icons/mixin/mixin_enum_constant.svg (revision c54831ec8b84efe5959556627ed6ccd7a1c4a506) @@ -0,0 +1,25 @@ + + + + + + + + + + Index: src/main/resources/assets/icons/mixin/mixin_enum_constant_dark.svg =================================================================== --- src/main/resources/assets/icons/mixin/mixin_enum_constant_dark.svg (revision c54831ec8b84efe5959556627ed6ccd7a1c4a506) +++ src/main/resources/assets/icons/mixin/mixin_enum_constant_dark.svg (revision c54831ec8b84efe5959556627ed6ccd7a1c4a506) @@ -0,0 +1,25 @@ + + + + + + + + + +