File tree Expand file tree Collapse file tree
resources/assets/icons/mixin Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -40,6 +40,9 @@ object MixinAssets : Assets() {
4040 val MIXIN_SHADOW_ICON = loadIcon(" /assets/icons/mixin/mixin_shadow.svg" )
4141 val MIXIN_SHADOW_ICON_DARK = loadIcon(" /assets/icons/mixin/mixin_shadow_dark_alt.svg" )
4242
43+ val MIXIN_ENUM_CONSTANT_ICON = loadIcon(" /assets/icons/mixin/mixin_enum_constant.svg" )
44+ val MIXIN_ENUM_CONSTANT_ICON_DARK = loadIcon(" /assets/icons/mixin/mixin_enum_constant_dark.svg" )
45+
4346 val MIXIN_TARGET_ACCESSOR_MIXIN_ICON = loadIcon(" /assets/icons/mixin/mixin_target_accessor_mixin.svg" )
4447 val MIXIN_TARGET_ACCESSOR_MIXIN_ICON_DARK = loadIcon(" /assets/icons/mixin/mixin_target_accessor_mixin_dark.svg" )
4548
Original file line number Diff line number Diff line change @@ -33,6 +33,7 @@ import com.intellij.openapi.editor.markup.GutterIconRenderer
3333import com.intellij.openapi.fileEditor.FileEditorManager
3434import com.intellij.psi.PsiAnnotation
3535import com.intellij.psi.PsiElement
36+ import com.intellij.psi.PsiEnumConstant
3637import com.intellij.psi.PsiField
3738import com.intellij.psi.PsiIdentifier
3839import com.intellij.psi.PsiMember
@@ -57,6 +58,19 @@ class MixinElementLineMarkerProvider : LineMarkerProviderDescriptor() {
5758 return null
5859 }
5960
61+ if (element is PsiEnumConstant ) {
62+ val identifier = element.nameIdentifier
63+ return LineMarkerInfo (
64+ identifier,
65+ identifier.textRange,
66+ MixinAssets .MIXIN_ENUM_CONSTANT_ICON ,
67+ { " Mixin-added enum constant" },
68+ null ,
69+ GutterIconRenderer .Alignment .LEFT ,
70+ { " mixin enum constant indicator" },
71+ )
72+ }
73+
6074 val identifier = when (element) {
6175 is PsiMethod -> element.nameIdentifier
6276 is PsiField -> element.nameIdentifier
Original file line number Diff line number Diff line change @@ -22,9 +22,11 @@ package com.demonwav.mcdev.platform.mixin.insight
2222
2323import com.demonwav.mcdev.platform.mixin.handlers.MixinAnnotationHandler
2424import com.demonwav.mcdev.platform.mixin.util.MixinConstants.Annotations.SHADOW
25+ import com.demonwav.mcdev.platform.mixin.util.isMixin
2526import com.demonwav.mcdev.platform.mixin.util.isMixinExtrasSugar
2627import com.intellij.codeInsight.daemon.ImplicitUsageProvider
2728import com.intellij.psi.PsiElement
29+ import com.intellij.psi.PsiEnumConstant
2830import com.intellij.psi.PsiField
2931import com.intellij.psi.PsiMethod
3032import com.intellij.psi.PsiModifierListOwner
@@ -66,7 +68,12 @@ class MixinImplicitUsageProvider : ImplicitUsageProvider {
6668 return false
6769 }
6870
69- override fun isImplicitUsage (element : PsiElement ) = isParameterInShadow(element) || isHandlerImplicitlyUsed(element)
71+ private fun isMixinAddedEnumConstant (element : PsiElement ): Boolean {
72+ return element is PsiEnumConstant && element.containingClass?.isMixin == true
73+ }
74+
75+ override fun isImplicitUsage (element : PsiElement ) =
76+ isParameterInShadow(element) || isHandlerImplicitlyUsed(element) || isMixinAddedEnumConstant(element)
7077 override fun isImplicitRead (element : PsiElement ) = isShadowField(element)
7178 override fun isImplicitWrite (element : PsiElement ) = isShadowField(element)
7279}
You can’t perform that action at this time.
0 commit comments