Skip to content

Commit 1d88fee

Browse files
committed
Weaken assertions in TranslationFiles, things can actually go wrong. Refactor showBalloon so it can be used elsewhere. Fixes MCDEV-B
1 parent 7f1fc62 commit 1d88fee

11 files changed

Lines changed: 188 additions & 141 deletions

File tree

src/main/kotlin/platform/mcp/actions/CopyAtAction.kt

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ import com.demonwav.mcdev.platform.mcp.mappings.Mappings
2424
import com.demonwav.mcdev.util.ActionData
2525
import com.demonwav.mcdev.util.descriptor
2626
import com.demonwav.mcdev.util.fullQualifiedName
27+
import com.demonwav.mcdev.util.showBalloon
28+
import com.demonwav.mcdev.util.showSuccessBalloon
2729
import com.intellij.openapi.actionSystem.AnActionEvent
2830
import com.intellij.openapi.editor.Editor
2931
import com.intellij.psi.PsiClass
@@ -38,23 +40,29 @@ class CopyAtAction : SrgActionBase() {
3840
if (srgMap == null) {
3941
when (parent) {
4042
is PsiField -> {
41-
val className = parent.containingClass?.fullQualifiedName ?: return showBalloon("No containing class found", e)
43+
val className = parent.containingClass?.fullQualifiedName ?: return showBalloon(
44+
e,
45+
"No containing class found"
46+
)
4247
copyToClipboard(
4348
data.editor,
4449
data.element,
4550
className + " " + parent.name,
4651
)
4752
}
4853
is PsiMethod -> {
49-
val className = parent.containingClass?.fullQualifiedName ?: return showBalloon("No containing class found", e)
54+
val className = parent.containingClass?.fullQualifiedName ?: return showBalloon(
55+
e,
56+
"No containing class found"
57+
)
5058
copyToClipboard(
5159
data.editor,
5260
data.element,
5361
className + " " + parent.name + parent.descriptor,
5462
)
5563
}
5664
is PsiClass -> {
57-
val className = parent.fullQualifiedName ?: return showBalloon("Could not get FQN", e)
65+
val className = parent.fullQualifiedName ?: return showBalloon(e, "Could not get FQN")
5866
copyToClipboard(
5967
data.editor,
6068
data.element,
@@ -65,9 +73,9 @@ class CopyAtAction : SrgActionBase() {
6573
} else {
6674
when (parent) {
6775
is PsiField -> {
68-
val containing = parent.containingClass ?: return showBalloon("No SRG name found", e)
69-
val classSrg = srgMap.getIntermediaryClass(containing) ?: return showBalloon("No SRG name found", e)
70-
val srg = srgMap.getIntermediaryField(parent) ?: return showBalloon("No SRG name found", e)
76+
val containing = parent.containingClass ?: return showBalloon(e, "No SRG name found")
77+
val classSrg = srgMap.getIntermediaryClass(containing) ?: return showBalloon(e, "No SRG name found")
78+
val srg = srgMap.getIntermediaryField(parent) ?: return showBalloon(e, "No SRG name found")
7179
copyToClipboard(
7280
data.editor,
7381
data.element,
@@ -76,9 +84,9 @@ class CopyAtAction : SrgActionBase() {
7684
}
7785

7886
is PsiMethod -> {
79-
val containing = parent.containingClass ?: return showBalloon("No SRG name found", e)
80-
val classSrg = srgMap.getIntermediaryClass(containing) ?: return showBalloon("No SRG name found", e)
81-
val srg = srgMap.getIntermediaryMethod(parent) ?: return showBalloon("No SRG name found", e)
87+
val containing = parent.containingClass ?: return showBalloon(e, "No SRG name found")
88+
val classSrg = srgMap.getIntermediaryClass(containing) ?: return showBalloon(e, "No SRG name found")
89+
val srg = srgMap.getIntermediaryMethod(parent) ?: return showBalloon(e, "No SRG name found")
8290
copyToClipboard(
8391
data.editor,
8492
data.element,
@@ -88,11 +96,11 @@ class CopyAtAction : SrgActionBase() {
8896

8997
is PsiClass -> {
9098
val classMcpToSrg =
91-
srgMap.getIntermediaryClass(parent) ?: return showBalloon("No SRG name found", e)
99+
srgMap.getIntermediaryClass(parent) ?: return showBalloon(e, "No SRG name found")
92100
copyToClipboard(data.editor, data.element, classMcpToSrg)
93101
}
94102

95-
else -> showBalloon("Not a valid element", e)
103+
else -> showBalloon(e, "Not a valid element")
96104
}
97105
}
98106
}

src/main/kotlin/platform/mcp/actions/CopyAwAction.kt

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

2121
package com.demonwav.mcdev.platform.mcp.actions
2222

23-
import com.demonwav.mcdev.platform.mcp.actions.SrgActionBase.Companion.showBalloon
24-
import com.demonwav.mcdev.platform.mcp.actions.SrgActionBase.Companion.showSuccessBalloon
2523
import com.demonwav.mcdev.util.descriptor
2624
import com.demonwav.mcdev.util.getDataFromActionEvent
2725
import com.demonwav.mcdev.util.internalName
26+
import com.demonwav.mcdev.util.showBalloon
27+
import com.demonwav.mcdev.util.showSuccessBalloon
2828
import com.intellij.openapi.actionSystem.AnAction
2929
import com.intellij.openapi.actionSystem.AnActionEvent
3030
import com.intellij.openapi.editor.Editor
@@ -41,20 +41,20 @@ import java.awt.datatransfer.StringSelection
4141
class CopyAwAction : AnAction() {
4242

4343
override fun actionPerformed(e: AnActionEvent) {
44-
val data = getDataFromActionEvent(e) ?: return showBalloon("Unknown failure", e)
44+
val data = getDataFromActionEvent(e) ?: return showBalloon(e, "Unknown failure")
4545
val editor = data.editor
4646

4747
val element = data.element
4848
if (element !is PsiIdentifier) {
49-
showBalloon("Invalid element", e)
49+
showBalloon(e, "Invalid element")
5050
return
5151
}
5252

5353
val target = when (val parent = element.parent) {
5454
is PsiMember -> parent
5555
is PsiReference -> parent.resolve()
5656
else -> null
57-
} ?: return showBalloon("Invalid element", e)
57+
} ?: return showBalloon(e, "Invalid element")
5858

5959
doCopy(target, element, editor, e)
6060
}
@@ -69,19 +69,19 @@ class CopyAwAction : AnAction() {
6969
}
7070
is PsiField -> {
7171
val containing = target.containingClass?.internalName
72-
?: return maybeShow("Could not get owner of field", e)
72+
?: return maybeShow(e, "Could not get owner of field")
7373
val desc = target.type.descriptor
7474
val text = "accessible field $containing ${target.name} $desc"
7575
copyToClipboard(editor, element, text)
7676
}
7777
is PsiMethod -> {
7878
val containing = target.containingClass?.internalName
79-
?: return maybeShow("Could not get owner of method", e)
80-
val desc = target.descriptor ?: return maybeShow("Could not get descriptor of method", e)
79+
?: return maybeShow(e, "Could not get owner of method")
80+
val desc = target.descriptor ?: return maybeShow(e, "Could not get descriptor of method")
8181
val text = "accessible method $containing ${target.internalName} $desc"
8282
copyToClipboard(editor, element, text)
8383
}
84-
else -> maybeShow("Invalid element", e)
84+
else -> maybeShow(e, "Invalid element")
8585
}
8686
}
8787

@@ -94,9 +94,9 @@ class CopyAwAction : AnAction() {
9494
}
9595
}
9696

97-
private fun maybeShow(text: String, e: AnActionEvent?) {
97+
private fun maybeShow(e: AnActionEvent?, text: String) {
9898
if (e != null) {
99-
showBalloon(text, e)
99+
showBalloon(e, text)
100100
}
101101
}
102102
}

src/main/kotlin/platform/mcp/actions/CopyCoremodTargetAction.kt

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ import com.demonwav.mcdev.platform.mcp.mappings.Mappings
2424
import com.demonwav.mcdev.util.ActionData
2525
import com.demonwav.mcdev.util.descriptor
2626
import com.demonwav.mcdev.util.fullQualifiedName
27+
import com.demonwav.mcdev.util.showBalloon
28+
import com.demonwav.mcdev.util.showSuccessBalloon
2729
import com.intellij.openapi.actionSystem.AnActionEvent
2830
import com.intellij.openapi.editor.Editor
2931
import com.intellij.psi.PsiClass
@@ -39,8 +41,11 @@ class CopyCoremodTargetAction : SrgActionBase() {
3941
override fun withSrgTarget(parent: PsiElement, srgMap: Mappings?, e: AnActionEvent, data: ActionData) {
4042
when (parent) {
4143
is PsiField -> {
42-
val containing = parent.containingClass ?: return showBalloon("No containing class", e)
43-
val classSrg = srgMap?.getIntermediaryClass(containing) ?: containing.fullQualifiedName ?: return showBalloon("No containing class found", e)
44+
val containing = parent.containingClass ?: return showBalloon(e, "No containing class")
45+
val classSrg = srgMap?.getIntermediaryClass(containing) ?: containing.fullQualifiedName ?: return showBalloon(
46+
e,
47+
"No containing class found"
48+
)
4449
val srg = srgMap?.getIntermediaryField(parent)?.name ?: parent.name
4550
copyToClipboard(
4651
data.editor,
@@ -51,13 +56,16 @@ class CopyCoremodTargetAction : SrgActionBase() {
5156
)
5257
}
5358
is PsiMethod -> {
54-
val containing = parent.containingClass ?: return showBalloon("No containing class", e)
55-
val classSrg = srgMap?.getIntermediaryClass(containing) ?: containing.fullQualifiedName ?: return showBalloon("No containing class found", e)
59+
val containing = parent.containingClass ?: return showBalloon(e, "No containing class")
60+
val classSrg = srgMap?.getIntermediaryClass(containing) ?: containing.fullQualifiedName ?: return showBalloon(
61+
e,
62+
"No containing class found"
63+
)
5664
val (srgName, srgDescriptor) = srgMap?.getIntermediaryMethod(parent)?.let {
5765
it.name to it.descriptor
5866
} ?: (parent.name to parent.descriptor)
5967
if (srgDescriptor == null) {
60-
return showBalloon("No method descriptor found", e)
68+
return showBalloon(e, "No method descriptor found")
6169
}
6270
copyToClipboard(
6371
data.editor,
@@ -69,15 +77,18 @@ class CopyCoremodTargetAction : SrgActionBase() {
6977
)
7078
}
7179
is PsiClass -> {
72-
val classSrg = srgMap?.getIntermediaryClass(parent) ?: parent.fullQualifiedName ?: return showBalloon("No FQN found", e)
80+
val classSrg = srgMap?.getIntermediaryClass(parent) ?: parent.fullQualifiedName ?: return showBalloon(
81+
e,
82+
"No FQN found"
83+
)
7384
copyToClipboard(
7485
data.editor,
7586
data.element,
7687
Pair("target", "CLASS"),
7788
Pair("name", classSrg),
7889
)
7990
}
80-
else -> showBalloon("Not a valid element", e)
91+
else -> showBalloon(e, "Not a valid element")
8192
}
8293
}
8394

src/main/kotlin/platform/mcp/actions/FindSrgMappingAction.kt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ package com.demonwav.mcdev.platform.mcp.actions
2222

2323
import com.demonwav.mcdev.platform.mcp.mappings.Mappings
2424
import com.demonwav.mcdev.util.ActionData
25+
import com.demonwav.mcdev.util.showBalloon
26+
import com.demonwav.mcdev.util.showSuccessBalloon
2527
import com.intellij.openapi.actionSystem.AnActionEvent
2628
import com.intellij.psi.PsiClass
2729
import com.intellij.psi.PsiElement
@@ -32,23 +34,23 @@ class FindSrgMappingAction : SrgActionBase() {
3234

3335
override fun withSrgTarget(parent: PsiElement, srgMap: Mappings?, e: AnActionEvent, data: ActionData) {
3436
if (srgMap == null) {
35-
return showBalloon("No mappings found", e)
37+
return showBalloon(e, "No mappings found")
3638
}
3739

3840
when (parent) {
3941
is PsiField -> {
40-
val srg = srgMap.getIntermediaryField(parent) ?: return showBalloon("No SRG name found", e)
42+
val srg = srgMap.getIntermediaryField(parent) ?: return showBalloon(e, "No SRG name found")
4143
showSuccessBalloon(data.editor, data.element, "SRG name: " + srg.name)
4244
}
4345
is PsiMethod -> {
44-
val srg = srgMap.getIntermediaryMethod(parent) ?: return showBalloon("No SRG name found", e)
46+
val srg = srgMap.getIntermediaryMethod(parent) ?: return showBalloon(e, "No SRG name found")
4547
showSuccessBalloon(data.editor, data.element, "SRG name: " + srg.name + srg.descriptor)
4648
}
4749
is PsiClass -> {
48-
val classMcpToSrg = srgMap.getIntermediaryClass(parent) ?: return showBalloon("No SRG name found", e)
50+
val classMcpToSrg = srgMap.getIntermediaryClass(parent) ?: return showBalloon(e, "No SRG name found")
4951
showSuccessBalloon(data.editor, data.element, "SRG name: $classMcpToSrg")
5052
}
51-
else -> showBalloon("Not a valid element", e)
53+
else -> showBalloon(e, "Not a valid element")
5254
}
5355
}
5456
}

src/main/kotlin/platform/mcp/actions/GotoAtEntryAction.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import com.demonwav.mcdev.util.ActionData
2828
import com.demonwav.mcdev.util.getDataFromActionEvent
2929
import com.demonwav.mcdev.util.gotoTargetElement
3030
import com.demonwav.mcdev.util.qualifiedMemberReference
31+
import com.demonwav.mcdev.util.showBalloon
3132
import com.demonwav.mcdev.util.simpleQualifiedMemberReference
3233
import com.intellij.openapi.actionSystem.AnAction
3334
import com.intellij.openapi.actionSystem.AnActionEvent
@@ -111,6 +112,6 @@ class GotoAtEntryAction : AnAction() {
111112
}
112113

113114
private fun showBalloon(e: AnActionEvent) {
114-
SrgActionBase.showBalloon("No access transformer entry found", e)
115+
showBalloon(e, "No access transformer entry found")
115116
}
116117
}

0 commit comments

Comments
 (0)