@@ -28,10 +28,12 @@ import com.demonwav.mcdev.platform.mixin.util.MixinConstants.Annotations.MIXIN
28
28
import com.demonwav.mcdev.platform.mixin.util.MixinConstants.Classes.CALLBACK_INFO
29
29
import com.demonwav.mcdev.platform.mixin.util.MixinConstants.Classes.CALLBACK_INFO_RETURNABLE
30
30
import com.demonwav.mcdev.platform.mixin.util.MixinConstants.MixinExtras.OPERATION
31
+ import com.demonwav.mcdev.util.SemanticVersion
31
32
import com.demonwav.mcdev.util.cached
32
33
import com.demonwav.mcdev.util.computeStringArray
33
34
import com.demonwav.mcdev.util.findModule
34
35
import com.demonwav.mcdev.util.resolveClassArray
36
+ import com.intellij.openapi.module.Module
35
37
import com.intellij.openapi.project.Project
36
38
import com.intellij.psi.JavaPsiFacade
37
39
import com.intellij.psi.PsiAnnotation
@@ -41,6 +43,7 @@ import com.intellij.psi.PsiClassType
41
43
import com.intellij.psi.PsiDisjunctionType
42
44
import com.intellij.psi.PsiElement
43
45
import com.intellij.psi.PsiIntersectionType
46
+ import com.intellij.psi.PsiLiteralExpression
44
47
import com.intellij.psi.PsiMethod
45
48
import com.intellij.psi.PsiParameter
46
49
import com.intellij.psi.PsiPrimitiveType
@@ -249,3 +252,13 @@ fun isMixinEntryPoint(element: PsiElement?): Boolean {
249
252
250
253
val PsiElement .isFabricMixin: Boolean get() =
251
254
JavaPsiFacade .getInstance(project).findClass(MixinConstants .Classes .FABRIC_UTIL , resolveScope) != null
255
+
256
+ val Module .mixinVersion: SemanticVersion ?
257
+ get() {
258
+ val facade = JavaPsiFacade .getInstance(project)
259
+ val bootstrap = facade.findClass(MixinConstants .Classes .MIXIN_BOOTSTRAP , moduleWithLibrariesScope)
260
+ ? : return null
261
+ val versionField = bootstrap.findFieldByName(" VERSION" , false ) ? : return null
262
+ val version = (versionField.initializer as ? PsiLiteralExpression )?.value as ? String ? : return null
263
+ return SemanticVersion .tryParse(version)
264
+ }
0 commit comments