minecraft-dev / MinecraftDev

Plugin for IntelliJ IDEA that gives special support for Minecraft modding projects.
https://minecraftdev.org/
GNU Lesser General Public License v3.0
1.5k stars 185 forks source link

Breaks with method-local inner class (record) #2282

Closed Keksuccino closed 2 months ago

Keksuccino commented 6 months ago

Minecraft Development for IntelliJ plugin version

2024.1-1.7.4-473

IntelliJ version

IC-241.14494.240

Operating System

Windows 10

Target platform

Mixins

Description of the bug

I was trying to make a Mixin class for net.minecraft.client.gui.Gui in MC 1.20.4 (MultiLoader project). The exception breaks all auto-complete stuff in the Mixin class as soon as I add the @Mixin annotation, even if it's not related to the plugin.

It breaks at a method-local inner class (record) in displayScoreboardSidebar().

com.intellij.util.IncorrectOperationException: Incorrect method 'public <T> net.minecraft.client.gui.Gui.1DisplayEntry[] lambda$displayScoreboardSidebar$3(int par1) { /* compiled code */ return null; }'
    at com.intellij.psi.impl.PsiJavaParserFacadeImpl.newException(PsiJavaParserFacadeImpl.java:407)
    at com.intellij.psi.impl.PsiJavaParserFacadeImpl.createMethodFromText(PsiJavaParserFacadeImpl.java:203)
    at com.intellij.psi.impl.PsiElementFactoryImpl.createMethodFromText(PsiElementFactoryImpl.java:705)
    at com.intellij.psi.impl.PsiJavaParserFacadeImpl.createMethodFromText(PsiJavaParserFacadeImpl.java:212)
    at com.demonwav.mcdev.platform.mixin.util.AsmUtilKt.findOrConstructSourceMethod(AsmUtil.kt:800)
    at com.demonwav.mcdev.platform.mixin.util.AsmUtilKt.findOrConstructSourceMethod$default(AsmUtil.kt:732)
    at com.demonwav.mcdev.platform.mixin.completion.MixinMethodLookupItem$Companion.create(MixinLookupItem.kt:61)
    at com.demonwav.mcdev.platform.mixin.completion.MixinLookupItemKt.createLookupElement(MixinLookupItem.kt:46)
    at com.demonwav.mcdev.platform.mixin.completion.MixinCompletionContributor$fillCompletionVariants$1$1.invoke(MixinCompletionContributor.kt:110)
    at com.demonwav.mcdev.platform.mixin.completion.MixinCompletionContributor$fillCompletionVariants$1$1.invoke(MixinCompletionContributor.kt:110)
    at kotlin.sequences.TransformingSequence$iterator$1.next(Sequences.kt:210)
    at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:170)
    at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:194)
    at kotlin.sequences.FilteringSequence$iterator$1.calcNext(Sequences.kt:169)
    at kotlin.sequences.FilteringSequence$iterator$1.hasNext(Sequences.kt:194)
    at kotlin.sequences.TransformingSequence$iterator$1.hasNext(Sequences.kt:214)
    at com.demonwav.mcdev.platform.mixin.completion.MixinCompletionContributor$fillCompletionVariants$1.invoke(MixinCompletionContributor.kt:119)
    at com.demonwav.mcdev.platform.mixin.completion.MixinCompletionContributor$fillCompletionVariants$1.invoke(MixinCompletionContributor.kt:68)
    at com.demonwav.mcdev.platform.mixin.completion.MixinCompletionContributor.fillCompletionVariants$lambda$1(MixinCompletionContributor.kt:68)
    at com.intellij.codeInsight.completion.LegacyCompletionContributor.processReference(LegacyCompletionContributor.java:141)
    at com.intellij.codeInsight.completion.LegacyCompletionContributor.processReferences(LegacyCompletionContributor.java:124)
    at com.demonwav.mcdev.platform.mixin.completion.MixinCompletionContributor.fillCompletionVariants(MixinCompletionContributor.kt:68)
    at com.intellij.codeInsight.completion.CompletionService.getVariantsFromContributor(CompletionService.java:81)
    at com.intellij.codeInsight.completion.impl.CompletionServiceImpl.getVariantsFromContributor(CompletionServiceImpl.kt:219)
    at com.intellij.codeInsight.completion.CompletionService.getVariantsFromContributors(CompletionService.java:73)
    at com.intellij.codeInsight.completion.CompletionResultSet.runRemainingContributors(CompletionResultSet.java:150)
    at com.intellij.codeInsight.completion.CompletionResultSet.runRemainingContributors(CompletionResultSet.java:142)
    at com.intellij.codeInsight.completion.CompletionResultSet.runRemainingContributors(CompletionResultSet.java:138)
    at com.intellij.codeInsight.completion.CompletionResultSet.runRemainingContributors(CompletionResultSet.java:128)
    at com.intellij.codeInsight.completion.JavaQualifierAsArgumentContributor.fillCompletionVariants(JavaQualifierAsArgumentContributor.java:46)
    at com.intellij.codeInsight.completion.CompletionService.getVariantsFromContributor(CompletionService.java:81)
    at com.intellij.codeInsight.completion.impl.CompletionServiceImpl.getVariantsFromContributor(CompletionServiceImpl.kt:219)
    at com.intellij.codeInsight.completion.CompletionService.getVariantsFromContributors(CompletionService.java:73)
    at com.intellij.codeInsight.completion.CompletionResultSet.runRemainingContributors(CompletionResultSet.java:150)
    at com.intellij.codeInsight.completion.CompletionResultSet.runRemainingContributors(CompletionResultSet.java:142)
    at com.intellij.codeInsight.completion.CompletionResultSet.runRemainingContributors(CompletionResultSet.java:138)
    at com.intellij.codeInsight.completion.JShellCompletionContributor.fillCompletionVariants(JShellCompletionContributor.java:28)
    at com.intellij.codeInsight.completion.CompletionService.getVariantsFromContributor(CompletionService.java:81)
    at com.intellij.codeInsight.completion.impl.CompletionServiceImpl.getVariantsFromContributor(CompletionServiceImpl.kt:219)
    at com.intellij.codeInsight.completion.CompletionService.getVariantsFromContributors(CompletionService.java:73)
    at com.intellij.codeInsight.completion.CompletionResultSet.runRemainingContributors(CompletionResultSet.java:150)
    at com.intellij.codeInsight.completion.CompletionResultSet.runRemainingContributors(CompletionResultSet.java:142)
    at com.intellij.codeInsight.completion.CompletionResultSet.runRemainingContributors(CompletionResultSet.java:138)
    at com.intellij.codeInsight.completion.JavaNoVariantsDelegator.fillCompletionVariants(JavaNoVariantsDelegator.java:46)
    at com.intellij.codeInsight.completion.CompletionService.getVariantsFromContributor(CompletionService.java:81)
    at com.intellij.codeInsight.completion.impl.CompletionServiceImpl.getVariantsFromContributor(CompletionServiceImpl.kt:219)
    at com.intellij.codeInsight.completion.CompletionService.getVariantsFromContributors(CompletionService.java:73)
    at com.intellij.codeInsight.completion.CompletionResultSet.runRemainingContributors(CompletionResultSet.java:150)
    at com.intellij.codeInsight.completion.CompletionResultSet.runRemainingContributors(CompletionResultSet.java:142)
    at com.intellij.codeInsight.completion.CompletionResultSet.runRemainingContributors(CompletionResultSet.java:138)
    at com.intellij.codeInsight.template.impl.LiveTemplateCompletionContributor$1.addCompletions(LiveTemplateCompletionContributor.java:87)
    at com.intellij.codeInsight.completion.CompletionProvider.addCompletionVariants(CompletionProvider.java:23)
    at com.intellij.codeInsight.completion.CompletionContributor.fillCompletionVariants(CompletionContributor.java:156)
    at com.intellij.codeInsight.completion.CompletionService.getVariantsFromContributor(CompletionService.java:81)
    at com.intellij.codeInsight.completion.impl.CompletionServiceImpl.getVariantsFromContributor(CompletionServiceImpl.kt:219)
    at com.intellij.codeInsight.completion.CompletionService.getVariantsFromContributors(CompletionService.java:73)
    at com.intellij.codeInsight.completion.CompletionService.getVariantsFromContributors(CompletionService.java:56)
    at com.intellij.codeInsight.completion.CompletionService.performCompletion(CompletionService.java:130)
    at com.intellij.codeInsight.completion.BaseCompletionService.performCompletion(BaseCompletionService.java:48)
    at com.intellij.codeInsight.completion.impl.CompletionServiceImpl.performCompletion(CompletionServiceImpl.kt:234)
    at com.intellij.codeInsight.completion.CompletionProgressIndicator.lambda$calculateItems$12(CompletionProgressIndicator.java:973)
    at com.intellij.util.indexing.FileBasedIndex.lambda$ignoreDumbMode$0(FileBasedIndex.java:219)
    at com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:111)
    at com.intellij.util.indexing.FileBasedIndexEx.ignoreDumbMode(FileBasedIndexEx.java:637)
    at com.intellij.util.indexing.FileBasedIndex.ignoreDumbMode(FileBasedIndex.java:218)
    at com.intellij.util.indexing.DumbModeAccessType.ignoreDumbMode(DumbModeAccessType.java:43)
    at com.intellij.codeInsight.completion.CompletionProgressIndicator.calculateItems(CompletionProgressIndicator.java:969)
    at com.intellij.codeInsight.completion.CompletionProgressIndicator.runContributors(CompletionProgressIndicator.java:957)
    at com.intellij.codeInsight.completion.CodeCompletionHandlerBase.lambda$startContributorThread$7(CodeCompletionHandlerBase.java:383)
    at io.opentelemetry.context.Context.lambda$wrap$1(Context.java:212)
    at com.intellij.codeInsight.completion.CompletionThreadingKt.tryReadOrCancel$lambda$0(CompletionThreading.kt:76)
    at com.intellij.openapi.application.impl.RwLockHolder.tryRunReadAction(RwLockHolder.kt:310)
    at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:958)
    at com.intellij.codeInsight.completion.CompletionThreadingKt.tryReadOrCancel(CompletionThreading.kt:74)
    at com.intellij.codeInsight.completion.CodeCompletionHandlerBase.lambda$startContributorThread$8(CodeCompletionHandlerBase.java:375)
    at io.opentelemetry.context.Context.lambda$wrap$1(Context.java:212)
    at com.intellij.codeInsight.completion.AsyncCompletion.startThread$lambda$1$lambda$0(CompletionThreading.kt:98)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:217)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$executeProcessUnderProgress$13(CoreProgressManager.java:660)
    at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:735)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computeUnderProgress(CoreProgressManager.java:691)
    at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:659)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:79)
    at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:202)
    at com.intellij.codeInsight.completion.AsyncCompletion.startThread$lambda$1(CompletionThreading.kt:93)
    at com.intellij.codeInsight.completion.AsyncCompletion$startThread$future$1.invokeSuspend(CompletionThreading.kt:104)
    at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
    at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:108)
    at kotlinx.coroutines.internal.LimitedDispatcher$Worker.run(LimitedDispatcher.kt:115)
    at kotlinx.coroutines.scheduling.TaskImpl.run(Tasks.kt:103)
    at kotlinx.coroutines.scheduling.CoroutineScheduler.runSafely(CoroutineScheduler.kt:584)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.executeTask(CoroutineScheduler.kt:793)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.runWorker(CoroutineScheduler.kt:697)
    at kotlinx.coroutines.scheduling.CoroutineScheduler$Worker.run(CoroutineScheduler.kt:684)
Caused by: java.lang.AssertionError: Unexpected token: '.1D'
    at com.intellij.lang.java.parser.BasicJavaParserUtil.parseFragment(BasicJavaParserUtil.java:211)
    at com.intellij.psi.impl.source.BasicJavaElementType$JavaDummyElementType.parseContents(BasicJavaElementType.java:273)
    at com.intellij.psi.impl.source.tree.LazyParseableElement.lambda$ensureParsed$2(LazyParseableElement.java:183)
    at com.intellij.psi.impl.DebugUtil.performPsiModification(DebugUtil.java:535)
    at com.intellij.psi.impl.source.tree.LazyParseableElement.ensureParsed(LazyParseableElement.java:182)
    at com.intellij.psi.impl.source.tree.LazyParseableElement.getFirstChildNode(LazyParseableElement.java:234)
    at com.intellij.psi.impl.source.BasicJavaDummyElement.getFirstChildNode(BasicJavaDummyElement.java:56)
    at com.intellij.psi.impl.PsiJavaParserFacadeImpl.createMethodFromText(PsiJavaParserFacadeImpl.java:201)
    ... 92 more
btwonion commented 5 months ago

same bug here. auto completion is fully broken for this mixin