Skip to content

Commit c54831e

Browse files
committed
Add mixin constant implicit usage provider and line marker provider
1 parent 9ab87fb commit c54831e

5 files changed

Lines changed: 75 additions & 1 deletion

File tree

src/main/kotlin/asset/MixinAssets.kt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff 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

src/main/kotlin/platform/mixin/insight/MixinElementLineMarkerProvider.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import com.intellij.openapi.editor.markup.GutterIconRenderer
3333
import com.intellij.openapi.fileEditor.FileEditorManager
3434
import com.intellij.psi.PsiAnnotation
3535
import com.intellij.psi.PsiElement
36+
import com.intellij.psi.PsiEnumConstant
3637
import com.intellij.psi.PsiField
3738
import com.intellij.psi.PsiIdentifier
3839
import 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

src/main/kotlin/platform/mixin/insight/MixinImplicitUsageProvider.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,11 @@ package com.demonwav.mcdev.platform.mixin.insight
2222

2323
import com.demonwav.mcdev.platform.mixin.handlers.MixinAnnotationHandler
2424
import com.demonwav.mcdev.platform.mixin.util.MixinConstants.Annotations.SHADOW
25+
import com.demonwav.mcdev.platform.mixin.util.isMixin
2526
import com.demonwav.mcdev.platform.mixin.util.isMixinExtrasSugar
2627
import com.intellij.codeInsight.daemon.ImplicitUsageProvider
2728
import com.intellij.psi.PsiElement
29+
import com.intellij.psi.PsiEnumConstant
2830
import com.intellij.psi.PsiField
2931
import com.intellij.psi.PsiMethod
3032
import 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
}
Lines changed: 25 additions & 0 deletions
Loading
Lines changed: 25 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)