Skip to content

Commit 94886bc

Browse files
committed
Add some different debugging
1 parent 134768c commit 94886bc

File tree

1 file changed

+29
-18
lines changed

1 file changed

+29
-18
lines changed

src/main/kotlin/platform/mixin/expression/MEExpressionCompletionUtil.kt

Lines changed: 29 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@ import com.intellij.codeInsight.template.TemplateBuilderImpl
8484
import com.intellij.codeInsight.template.TemplateEditingAdapter
8585
import com.intellij.codeInsight.template.TemplateManager
8686
import com.intellij.codeInsight.template.TextResult
87+
import com.intellij.injected.editor.VirtualFileWindow
88+
import com.intellij.lang.injection.InjectedLanguageManager
8789
import com.intellij.openapi.application.runWriteAction
8890
import com.intellij.openapi.command.CommandProcessor
8991
import com.intellij.openapi.command.WriteCommandAction
@@ -103,6 +105,7 @@ import com.intellij.psi.PsiModifierList
103105
import com.intellij.psi.codeStyle.CodeStyleManager
104106
import com.intellij.psi.codeStyle.JavaCodeStyleManager
105107
import com.intellij.psi.createSmartPointer
108+
import com.intellij.psi.impl.source.resolve.FileContextUtil
106109
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageEditorUtil
107110
import com.intellij.psi.tree.TokenSet
108111
import com.intellij.psi.util.PsiTreeUtil
@@ -1176,19 +1179,12 @@ object MEExpressionCompletionUtil {
11761179
definitionValue: String,
11771180
crossinline andThen: (InsertionContext, PsiAnnotation) -> Unit
11781181
) = withInsertHandler { context, _ ->
1179-
if (debugCompletionUnitTest) System.err.println("Here 1")
11801182
context.laterRunnable = Runnable {
1181-
if (debugCompletionUnitTest) System.err.println("Here 2")
11821183
context.commitDocument()
1183-
if (debugCompletionUnitTest) System.err.println("Here 3")
11841184
CommandProcessor.getInstance().runUndoTransparentAction {
1185-
if (debugCompletionUnitTest) System.err.println("Here 4")
11861185
runWriteAction {
1187-
if (debugCompletionUnitTest) System.err.println("Here 5")
11881186
val annotation = addDefinition(context, id, definitionValue)
1189-
if (debugCompletionUnitTest) System.err.println("Here 6")
11901187
if (annotation != null) {
1191-
if (debugCompletionUnitTest) System.err.println("Here 7")
11921188
andThen(context, annotation)
11931189
}
11941190
}
@@ -1197,7 +1193,6 @@ object MEExpressionCompletionUtil {
11971193
}
11981194

11991195
private fun addDefinition(context: InsertionContext, id: String, definitionValue: String): PsiAnnotation? {
1200-
if (debugCompletionUnitTest) System.err.println("Here 8, ${context.startOffset}, ${context.file.text}")
12011196
val contextElement = context.file.findElementAt(context.startOffset) ?: return null
12021197
return addDefinition(context.project, contextElement, id, definitionValue)
12031198
}
@@ -1208,18 +1203,39 @@ object MEExpressionCompletionUtil {
12081203
id: String,
12091204
definitionValue: String
12101205
): PsiAnnotation? {
1211-
if (debugCompletionUnitTest) System.err.println("Here 9, $id")
1206+
if (debugCompletionUnitTest) {
1207+
val injectedLanguageManager = InjectedLanguageManager.getInstance(project)
1208+
System.err.println("Here 1")
1209+
val injectionHostElement = injectedLanguageManager.getInjectionHost(contextElement) ?: run {
1210+
val injectedFile = contextElement.containingFile ?: return null
1211+
System.err.println("Here 6, ${injectedFile.text}")
1212+
val virtualFile = injectedFile.virtualFile ?: return null
1213+
System.err.println("Here 7, ${virtualFile.javaClass.name}")
1214+
if (virtualFile is VirtualFileWindow) {
1215+
val hostPtr = injectedFile.getUserData(FileContextUtil.INJECTED_IN_ELEMENT) ?: return null
1216+
System.err.println("Here 8, $hostPtr")
1217+
val hostElement = hostPtr.element ?: return null
1218+
System.err.println("Here 9, ${hostElement.text}")
1219+
}
1220+
return null
1221+
}
1222+
System.err.println("Here 2, ${injectionHostElement.text}")
1223+
val injectionHostFile = injectionHostElement.containingFile ?: return null
1224+
System.err.println("Here 3, ${injectionHostFile.text}")
1225+
val hostOffset =
1226+
injectedLanguageManager.injectedToHost(contextElement, contextElement.textRange.startOffset)
1227+
System.err.println("Here 4, ${contextElement.textRange.startOffset}, $hostOffset")
1228+
val hostElement = injectionHostFile.findElementAt(hostOffset) ?: return null
1229+
System.err.println("Here 5, ${hostElement.text}")
1230+
}
1231+
12121232
val injectionHost = contextElement.findMultiInjectionHost() ?: return null
1213-
if (debugCompletionUnitTest) System.err.println("Here 10")
12141233
val expressionAnnotation = injectionHost.parentOfType<PsiAnnotation>() ?: return null
1215-
if (debugCompletionUnitTest) System.err.println("Here 11")
12161234
if (!expressionAnnotation.hasQualifiedName(MixinConstants.MixinExtras.EXPRESSION)) {
12171235
return null
12181236
}
1219-
if (debugCompletionUnitTest) System.err.println("Here 12")
12201237
val modifierList = expressionAnnotation.findContainingModifierList() ?: return null
12211238

1222-
if (debugCompletionUnitTest) System.err.println("Here 13")
12231239
// look for an existing definition with this id, skip if it exists
12241240
for (annotation in modifierList.annotations) {
12251241
if (annotation.hasQualifiedName(MixinConstants.MixinExtras.DEFINITION) &&
@@ -1228,7 +1244,6 @@ object MEExpressionCompletionUtil {
12281244
return null
12291245
}
12301246
}
1231-
if (debugCompletionUnitTest) System.err.println("Here 14")
12321247

12331248
// create and add the new @Definition annotation
12341249
var newAnnotation = JavaPsiFacade.getElementFactory(project).createAnnotationFromText(
@@ -1243,19 +1258,15 @@ object MEExpressionCompletionUtil {
12431258
anchor = expressionAnnotation
12441259
}
12451260
}
1246-
if (debugCompletionUnitTest) System.err.println("Here 15, ${newAnnotation.text}, ${anchor?.text}")
12471261
newAnnotation = modifierList.addAfter(newAnnotation, anchor) as PsiAnnotation
12481262

12491263
// add imports and reformat
1250-
if (debugCompletionUnitTest) System.err.println("Here 16")
12511264
newAnnotation =
12521265
JavaCodeStyleManager.getInstance(project).shortenClassReferences(newAnnotation) as PsiAnnotation
12531266
JavaCodeStyleManager.getInstance(project).optimizeImports(modifierList.containingFile)
1254-
if (debugCompletionUnitTest) System.err.println("Here 17")
12551267
val annotationIndex = modifierList.annotations.indexOf(newAnnotation)
12561268
val formattedModifierList =
12571269
CodeStyleManager.getInstance(project).reformat(modifierList) as PsiModifierList
1258-
if (debugCompletionUnitTest) System.err.println("Here 18")
12591270
return formattedModifierList.annotations.getOrNull(annotationIndex)
12601271
}
12611272

0 commit comments

Comments
 (0)