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 @@
+
+
+
+