Skip to content

Commit 27fa4d2

Browse files
committed
Merge branch '2026.1' into 2026.2
2 parents 27ac5d9 + 0021017 commit 27fa4d2

6 files changed

Lines changed: 42 additions & 43 deletions

File tree

changelog.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Minecraft Development for IntelliJ
22

3+
## [1.8.22]
4+
5+
### Fixed
6+
7+
- Fixed shadow warning on constructors on newer Minecraft versions
8+
39
## [1.8.21]
410

511
### Fixed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ org.gradle.jvmargs=-Xmx1g
2323

2424
ideaVersionName = 2026.2
2525

26-
coreVersion = 1.8.21
26+
coreVersion = 1.8.22
2727

2828
# Silences a build-time warning because we are bundling our own kotlin library
2929
kotlin.stdlib.default.dependency = false

readme.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ Minecraft Development for IntelliJ
3131
</tr>
3232
</table>
3333

34-
Info and Documentation [![Current Release](https://img.shields.io/badge/release-1.8.21-orange.svg?style=flat-square)](https://plugins.jetbrains.com/plugin/8327)
34+
Info and Documentation [![Current Release](https://img.shields.io/badge/release-1.8.22-orange.svg?style=flat-square)](https://plugins.jetbrains.com/plugin/8327)
3535
----------------------
3636

3737
<a href="https://discord.gg/j6UNcfr"><img src="https://i.imgur.com/JXu9C1G.png" height="48px"></img></a>

src/main/kotlin/platform/mixin/inspection/overwrite/OverwriteModifiersInspection.kt

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,10 @@ import com.demonwav.mcdev.platform.mixin.handlers.MixinAnnotationHandler
2424
import com.demonwav.mcdev.platform.mixin.util.MethodTargetMember
2525
import com.demonwav.mcdev.platform.mixin.util.MixinConstants.Annotations.OVERWRITE
2626
import com.demonwav.mcdev.platform.mixin.util.accessLevel
27-
import com.demonwav.mcdev.platform.mixin.util.bytecodeFriendlyAccessLevel
2827
import com.demonwav.mcdev.platform.mixin.util.findStubMethod
2928
import com.demonwav.mcdev.platform.mixin.util.hasModifier
3029
import com.demonwav.mcdev.platform.mixin.util.internalNameToShortName
30+
import com.demonwav.mcdev.platform.mixin.util.shouldDoMixinAccessChecks
3131
import com.demonwav.mcdev.util.findAnnotation
3232
import com.demonwav.mcdev.util.findKeyword
3333
import com.demonwav.mcdev.util.isAccessModifier
@@ -55,17 +55,19 @@ class OverwriteModifiersInspection : OverwriteInspection() {
5555
val modifierList = method.modifierList
5656

5757
// Check access modifiers
58-
val targetAccessLevel = target.method.accessLevel
59-
val currentAccessLevel = modifierList.bytecodeFriendlyAccessLevel()
60-
if (currentAccessLevel < targetAccessLevel) {
61-
val targetModifier = PsiUtil.getAccessModifier(targetAccessLevel)
62-
val currentModifier = PsiUtil.getAccessModifier(currentAccessLevel)
63-
holder.registerProblem(
64-
modifierList.findKeyword(currentModifier) ?: nameIdentifier,
65-
"$currentModifier @Overwrite cannot reduce visibility of " +
66-
"${PsiUtil.getAccessModifier(targetAccessLevel)} target method",
67-
QuickFixFactory.getInstance().createModifierListFix(modifierList, targetModifier, true, false),
68-
)
58+
if (method.shouldDoMixinAccessChecks()) {
59+
val targetAccessLevel = target.method.accessLevel
60+
val currentAccessLevel = PsiUtil.getAccessLevel(modifierList)
61+
if (currentAccessLevel < targetAccessLevel) {
62+
val targetModifier = PsiUtil.getAccessModifier(targetAccessLevel)
63+
val currentModifier = PsiUtil.getAccessModifier(currentAccessLevel)
64+
holder.registerProblem(
65+
modifierList.findKeyword(currentModifier) ?: nameIdentifier,
66+
"$currentModifier @Overwrite cannot reduce visibility of " +
67+
"${PsiUtil.getAccessModifier(targetAccessLevel)} target method",
68+
QuickFixFactory.getInstance().createModifierListFix(modifierList, targetModifier, true, false),
69+
)
70+
}
6971
}
7072

7173
for (modifier in PsiModifier.MODIFIERS) {

src/main/kotlin/platform/mixin/inspection/shadow/ShadowModifiersInspection.kt

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import com.demonwav.mcdev.platform.mixin.util.MixinConstants
2828
import com.demonwav.mcdev.platform.mixin.util.MixinConstants.Annotations.FINAL
2929
import com.demonwav.mcdev.platform.mixin.util.MixinTargetMember
3030
import com.demonwav.mcdev.platform.mixin.util.accessLevel
31-
import com.demonwav.mcdev.platform.mixin.util.bytecodeFriendlyAccessLevel
31+
import com.demonwav.mcdev.platform.mixin.util.shouldDoMixinAccessChecks
3232
import com.demonwav.mcdev.util.findKeyword
3333
import com.intellij.codeInsight.intention.AddAnnotationModCommandAction
3434
import com.intellij.codeInsight.intention.QuickFixFactory
@@ -88,18 +88,20 @@ class ShadowModifiersInspection : MixinInspection() {
8888
}
8989

9090
// Check access level
91-
val targetAccessLevel = getTargetAccessLevel(target, shadowModifierList)
92-
val shadowAccessLevel = shadowModifierList.bytecodeFriendlyAccessLevel()
93-
if (targetAccessLevel != shadowAccessLevel) {
94-
val targetModifier = PsiUtil.getAccessModifier(targetAccessLevel)
95-
val shadowModifier = PsiUtil.getAccessModifier(shadowAccessLevel)
96-
holder.registerProblem(
97-
shadowModifierList.findKeyword(shadowModifier) ?: annotation,
98-
"Invalid access modifiers, has: $shadowModifier, but target member has: " +
99-
PsiUtil.getAccessModifier(targetAccessLevel),
100-
QuickFixFactory.getInstance()
101-
.createModifierListFix(shadowModifierList, targetModifier, true, false)
102-
)
91+
if (member.shouldDoMixinAccessChecks()) {
92+
val targetAccessLevel = getTargetAccessLevel(target, shadowModifierList)
93+
val shadowAccessLevel = PsiUtil.getAccessLevel(shadowModifierList)
94+
if (targetAccessLevel != shadowAccessLevel) {
95+
val targetModifier = PsiUtil.getAccessModifier(targetAccessLevel)
96+
val shadowModifier = PsiUtil.getAccessModifier(shadowAccessLevel)
97+
holder.registerProblem(
98+
shadowModifierList.findKeyword(shadowModifier) ?: annotation,
99+
"Invalid access modifiers, has: $shadowModifier, but target member has: " +
100+
PsiUtil.getAccessModifier(targetAccessLevel),
101+
QuickFixFactory.getInstance()
102+
.createModifierListFix(shadowModifierList, targetModifier, true, false)
103+
)
104+
}
103105
}
104106

105107
// TODO: Would it make sense to apply the @Final check to methods?

src/main/kotlin/platform/mixin/util/Mixin.kt

Lines changed: 5 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,7 @@ import com.intellij.psi.PsiElement
4646
import com.intellij.psi.PsiIntersectionType
4747
import com.intellij.psi.PsiLiteralExpression
4848
import com.intellij.psi.PsiMethod
49-
import com.intellij.psi.PsiModifier
50-
import com.intellij.psi.PsiModifierList
49+
import com.intellij.psi.PsiModifierListOwner
5150
import com.intellij.psi.PsiParameter
5251
import com.intellij.psi.PsiPrimitiveType
5352
import com.intellij.psi.PsiType
@@ -56,7 +55,6 @@ import com.intellij.psi.search.GlobalSearchScope
5655
import com.intellij.psi.util.InheritanceUtil
5756
import com.intellij.psi.util.PsiModificationTracker
5857
import com.intellij.psi.util.PsiTypesUtil
59-
import com.intellij.psi.util.PsiUtil
6058
import com.intellij.psi.util.TypeConversionUtil
6159
import org.objectweb.asm.Opcodes
6260
import org.objectweb.asm.tree.ClassNode
@@ -324,19 +322,10 @@ fun PsiElement.hasNamedLocalVariables(className: String): Boolean {
324322
return true
325323
}
326324

327-
@PsiUtil.AccessLevel
328-
fun PsiModifierList.bytecodeFriendlyAccessLevel(): Int {
329-
val originalLevel = PsiUtil.getAccessLevel(this)
330-
331-
val parent = this.parent
332-
333-
// Constructors are package-local in abstract enums in the bytecode, but not in source
334-
if (parent is PsiMethod && parent.isConstructor) {
335-
val containingClass = parent.containingClass
336-
if (containingClass?.isEnum == true && containingClass.hasModifierProperty(PsiModifier.ABSTRACT)) {
337-
return PsiUtil.ACCESS_LEVEL_PACKAGE_LOCAL
338-
}
325+
fun PsiModifierListOwner.shouldDoMixinAccessChecks(): Boolean {
326+
if (this is PsiMethod && isConstructor) {
327+
return false
339328
}
340329

341-
return originalLevel
330+
return true
342331
}

0 commit comments

Comments
 (0)