Skip to content

Commit 7b7c035

Browse files
committed
Check we're actually on Fabric
1 parent 4600b6d commit 7b7c035

File tree

5 files changed

+37
-18
lines changed

5 files changed

+37
-18
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/*
2+
* Minecraft Development for IntelliJ
3+
*
4+
* https://mcdev.io/
5+
*
6+
* Copyright (C) 2024 minecraft-dev
7+
*
8+
* This program is free software: you can redistribute it and/or modify
9+
* it under the terms of the GNU Lesser General Public License as published
10+
* by the Free Software Foundation, version 3.0 only.
11+
*
12+
* This program is distributed in the hope that it will be useful,
13+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15+
* GNU General Public License for more details.
16+
*
17+
* You should have received a copy of the GNU Lesser General Public License
18+
* along with this program. If not, see <https://www.gnu.org/licenses/>.
19+
*/
20+
21+
package com.demonwav.mcdev.platform.fabric.util
22+
23+
import com.demonwav.mcdev.facet.MinecraftFacet
24+
import com.demonwav.mcdev.platform.fabric.FabricModuleType
25+
import com.demonwav.mcdev.util.findModule
26+
import com.intellij.psi.PsiElement
27+
28+
val PsiElement.isFabric: Boolean get() =
29+
findModule()?.let { MinecraftFacet.getInstance(it) }?.isOfType(FabricModuleType) == true

src/main/kotlin/platform/mixin/handlers/injectionPoint/CtorHeadInjectionPoint.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
package com.demonwav.mcdev.platform.mixin.handlers.injectionPoint
2222

23+
import com.demonwav.mcdev.platform.fabric.util.isFabric
2324
import com.demonwav.mcdev.platform.mixin.inspection.injector.CtorHeadNoUnsafeInspection
2425
import com.demonwav.mcdev.platform.mixin.reference.MixinSelector
2526
import com.demonwav.mcdev.platform.mixin.util.findOrConstructSourceMethod
@@ -60,7 +61,7 @@ class CtorHeadInjectionPoint : InjectionPoint<PsiElement>() {
6061
// avoid adding unsafe = true when it's unnecessary on Fabric
6162
val noUnsafeInspection =
6263
project.findInspection<CtorHeadNoUnsafeInspection>(CtorHeadNoUnsafeInspection.SHORT_NAME)
63-
if (noUnsafeInspection?.ignoreForFabric == true) {
64+
if (reference.isFabric && noUnsafeInspection?.ignoreForFabric == true) {
6465
return
6566
}
6667

src/main/kotlin/platform/mixin/inspection/injector/CtorHeadNoUnsafeInspection.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,12 @@
2020

2121
package com.demonwav.mcdev.platform.mixin.inspection.injector
2222

23-
import com.demonwav.mcdev.facet.MinecraftFacet
24-
import com.demonwav.mcdev.platform.fabric.FabricModuleType
23+
import com.demonwav.mcdev.platform.fabric.util.isFabric
2524
import com.demonwav.mcdev.platform.mixin.inspection.MixinInspection
2625
import com.demonwav.mcdev.platform.mixin.inspection.fix.AnnotationAttributeFix
2726
import com.demonwav.mcdev.platform.mixin.util.MixinConstants
2827
import com.demonwav.mcdev.util.constantStringValue
2928
import com.demonwav.mcdev.util.constantValue
30-
import com.demonwav.mcdev.util.findModule
3129
import com.intellij.codeInspection.ProblemsHolder
3230
import com.intellij.psi.JavaElementVisitor
3331
import com.intellij.psi.PsiAnnotation
@@ -55,8 +53,7 @@ class CtorHeadNoUnsafeInspection : MixinInspection() {
5553

5654
override fun buildVisitor(holder: ProblemsHolder): PsiElementVisitor {
5755
if (ignoreForFabric) {
58-
val isFabric = holder.file.findModule()?.let { MinecraftFacet.getInstance(it) }?.isOfType(FabricModuleType)
59-
?: false
56+
val isFabric = holder.file.isFabric
6057
if (isFabric) {
6158
return PsiElementVisitor.EMPTY_VISITOR
6259
}

src/main/kotlin/platform/mixin/inspection/injector/InjectIntoConstructorInspection.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@
2020

2121
package com.demonwav.mcdev.platform.mixin.inspection.injector
2222

23-
import com.demonwav.mcdev.facet.MinecraftFacet
24-
import com.demonwav.mcdev.platform.fabric.FabricModuleType
23+
import com.demonwav.mcdev.platform.fabric.util.isFabric
2524
import com.demonwav.mcdev.platform.mixin.handlers.InjectorAnnotationHandler
2625
import com.demonwav.mcdev.platform.mixin.handlers.MixinAnnotationHandler
2726
import com.demonwav.mcdev.platform.mixin.handlers.injectionPoint.AtResolver
@@ -34,7 +33,6 @@ import com.demonwav.mcdev.platform.mixin.util.isConstructor
3433
import com.demonwav.mcdev.util.constantValue
3534
import com.demonwav.mcdev.util.findAnnotation
3635
import com.demonwav.mcdev.util.findAnnotations
37-
import com.demonwav.mcdev.util.findModule
3836
import com.intellij.codeInspection.ProblemsHolder
3937
import com.intellij.psi.JavaElementVisitor
4038
import com.intellij.psi.PsiClass
@@ -61,8 +59,7 @@ class InjectIntoConstructorInspection : MixinInspection() {
6159
}
6260

6361
override fun buildVisitor(holder: ProblemsHolder): PsiElementVisitor {
64-
val isFabric = holder.file.findModule()?.let { MinecraftFacet.getInstance(it) }?.isOfType(FabricModuleType)
65-
?: false
62+
val isFabric = holder.file.isFabric
6663
return object : JavaElementVisitor() {
6764
override fun visitMethod(method: PsiMethod) {
6865
val injectAnnotation = method.findAnnotation(INJECT) ?: return

src/main/kotlin/platform/mixin/inspection/injector/UnnecessaryUnsafeInspection.kt

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,7 @@
2020

2121
package com.demonwav.mcdev.platform.mixin.inspection.injector
2222

23-
import com.demonwav.mcdev.facet.MinecraftFacet
24-
import com.demonwav.mcdev.platform.fabric.FabricModuleType
23+
import com.demonwav.mcdev.platform.fabric.util.isFabric
2524
import com.demonwav.mcdev.platform.mixin.handlers.MixinAnnotationHandler
2625
import com.demonwav.mcdev.platform.mixin.inspection.MixinInspection
2726
import com.demonwav.mcdev.platform.mixin.inspection.fix.AnnotationAttributeFix
@@ -30,7 +29,6 @@ import com.demonwav.mcdev.platform.mixin.util.MixinConstants
3029
import com.demonwav.mcdev.platform.mixin.util.isConstructor
3130
import com.demonwav.mcdev.util.constantValue
3231
import com.demonwav.mcdev.util.findInspection
33-
import com.demonwav.mcdev.util.findModule
3432
import com.demonwav.mcdev.util.ifEmpty
3533
import com.intellij.codeInspection.ProblemsHolder
3634
import com.intellij.openapi.project.Project
@@ -62,8 +60,7 @@ class UnnecessaryUnsafeInspection : MixinInspection() {
6260
}
6361

6462
override fun buildVisitor(holder: ProblemsHolder): PsiElementVisitor {
65-
val isFabric = holder.file.findModule()?.let { MinecraftFacet.getInstance(it) }?.isOfType(FabricModuleType)
66-
?: false
63+
val isFabric = holder.file.isFabric
6764
val alwaysUnnecessary = isFabric && alwaysUnnecessaryOnFabric
6865
val requiresUnsafeForCtorHeadOnFabric =
6966
holder.project.findInspection<CtorHeadNoUnsafeInspection>(CtorHeadNoUnsafeInspection.SHORT_NAME)
@@ -98,8 +95,6 @@ class UnnecessaryUnsafeInspection : MixinInspection() {
9895
}
9996

10097
companion object {
101-
const val SHORT_NAME = "UnnecessaryUnsafe"
102-
10398
fun mightTargetConstructor(project: Project, at: PsiAnnotation): Boolean {
10499
val injectorAnnotation = at.parents(false)
105100
.takeWhile { it !is PsiClass }

0 commit comments

Comments
 (0)