EmmyLua / IntelliJ-EmmyLua

Lua IDE/Debugger Plugin for IntelliJ IDEA
https://emmylua.github.io
Apache License 2.0
1.74k stars 293 forks source link

Endless recursion prevented #407

Closed yimtcode closed 1 year ago

yimtcode commented 3 years ago

Environment(环境)

name version
IDEA version 20.3
EmmyLua version 1.3.5.194-IDEA203
OS Windows 10

What are the steps to reproduce this issue?(重现步骤?)

不确定是什么引起,可能是lua有循环调用

What happens?(出现什么问题?)

com.intellij.openapi.util.StackOverflowPreventedException: Endless recursion prevented at com.intellij.psi.impl.source.tree.FileElement.getStubbedSpine(FileElement.java:116) at com.intellij.psi.impl.source.FileTrees.reconcilePsi(FileTrees.java:176) at com.intellij.psi.impl.source.FileTrees.withAst(FileTrees.java:149) at com.intellij.psi.impl.source.PsiFileImpl.loadTreeElement(PsiFileImpl.java:216) at com.intellij.psi.impl.source.PsiFileImpl.calcTreeElement(PsiFileImpl.java:734) at com.intellij.psi.impl.source.PsiFileImpl.getNode(PsiFileImpl.java:937) at com.intellij.psi.impl.source.PsiFileImpl.acceptChildren(PsiFileImpl.java:754) at com.tang.intellij.lua.psi.LuaRecursiveVisitor.visitElement(LuaRecursiveVisitor.kt:23) at com.tang.intellij.lua.psi.LuaDeclarationTreeBase.visitElementExt(LuaDeclarationTree.kt:349) at com.tang.intellij.lua.psi.LuaDeclarationTreeBase.visitElement(LuaDeclarationTree.kt:355) at com.intellij.psi.PsiElementVisitor.visitFile(PsiElementVisitor.java:35) at com.intellij.extapi.psi.PsiFileBase.accept(PsiFileBase.java:60) at com.tang.intellij.lua.psi.LuaDeclarationTreeBase.buildTree(LuaDeclarationTree.kt:277) at com.tang.intellij.lua.psi.LuaDeclarationTree$Companion.get(LuaDeclarationTree.kt:47) at com.tang.intellij.lua.psi.LuaPsiResolveUtilKt.resolveInFile(LuaPsiResolveUtil.kt:37) at com.tang.intellij.lua.psi.LuaPsiResolveUtilKt.resolveLocal(LuaPsiResolveUtil.kt:31) at com.tang.intellij.lua.psi.LuaPsiResolveUtilKt.resolveLocal$default(LuaPsiResolveUtil.kt:30) at com.tang.intellij.lua.psi.PsiExtensionKt$forwardDeclaration$1.compute(PsiExtension.kt:453) at com.intellij.psi.util.CachedValuesManager$1.compute(CachedValuesManager.java:153) at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:54) at com.intellij.util.CachedValueBase.lambda$getValueWithLock$1(CachedValueBase.java:235) at com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:111) at com.intellij.openapi.util.RecursionGuard.doPreventingRecursion(RecursionGuard.java:42) at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68) at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:236) at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:43) at com.intellij.util.CachedValuesManagerImpl.getCachedValue(CachedValuesManagerImpl.java:78) at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:150) at com.tang.intellij.lua.psi.PsiExtensionKt.getForwardDeclaration(PsiExtension.kt:451) at com.tang.intellij.lua.stubs.LuaFuncType.shouldCreateStub(LuaFuncStub.kt:68) at com.intellij.psi.impl.source.tree.FileElement$1.visitComposite(FileElement.java:136) at com.intellij.psi.impl.source.tree.CompositeElement.acceptTree(CompositeElement.java:117) at com.intellij.psi.impl.source.tree.RecursiveTreeElementWalkingVisitor$1.visit(RecursiveTreeElementWalkingVisitor.java:67) at com.intellij.psi.impl.source.tree.RecursiveTreeElementWalkingVisitor$1.visit(RecursiveTreeElementWalkingVisitor.java:59) at com.intellij.util.WalkingState.walkChildren(WalkingState.java:62) at com.intellij.util.WalkingState.elementStarted(WalkingState.java:49) at com.intellij.psi.impl.source.tree.RecursiveTreeElementWalkingVisitor.visitNode(RecursiveTreeElementWalkingVisitor.java:86) at com.intellij.psi.impl.source.tree.FileElement$1.visitComposite(FileElement.java:140) at com.intellij.psi.impl.source.tree.CompositeElement.acceptTree(CompositeElement.java:117) at com.intellij.psi.impl.source.tree.FileElement.calcStubbedDescendants(FileElement.java:127) at com.intellij.psi.impl.source.tree.FileElement.lambda$getStubbedSpine$0(FileElement.java:114) at com.intellij.openapi.util.RecursionManager$1.computePreventingRecursion(RecursionManager.java:111) at com.intellij.openapi.util.RecursionGuard.doPreventingRecursion(RecursionGuard.java:42) at com.intellij.openapi.util.RecursionManager.doPreventingRecursion(RecursionManager.java:68) at com.intellij.psi.impl.source.tree.FileElement.getStubbedSpine(FileElement.java:114) at com.intellij.psi.impl.source.FileTrees.reconcilePsi(FileTrees.java:176) at com.intellij.psi.impl.source.FileTrees.withAst(FileTrees.java:149) at com.intellij.psi.impl.source.PsiFileImpl.loadTreeElement(PsiFileImpl.java:216) at com.intellij.psi.impl.source.PsiFileImpl.calcTreeElement(PsiFileImpl.java:734) at com.intellij.psi.impl.source.PsiFileImpl.getNode(PsiFileImpl.java:937) at com.intellij.psi.impl.source.PsiFileImpl.getNode(PsiFileImpl.java:52) at com.intellij.psi.AbstractFileViewProvider.findElementAt(AbstractFileViewProvider.java:247) at com.intellij.psi.AbstractFileViewProvider.findElementAt(AbstractFileViewProvider.java:218) at com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtilBase.tryOffset(InjectedLanguageUtilBase.java:344) at com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtilBase.findInjectedElementNoCommit(InjectedLanguageUtilBase.java:330) at com.intellij.psi.impl.source.tree.injected.InjectedLanguageManagerImpl.findInjectedElementAt(InjectedLanguageManagerImpl.java:290) at com.intellij.openapi.editor.EditorMouseHoverPopupManager.createContext(EditorMouseHoverPopupManager.java:373) at com.intellij.openapi.editor.EditorMouseHoverPopupManager.lambda$handleMouseMoved$3(EditorMouseHoverPopupManager.java:162) at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.insideReadAction(NonBlockingReadActionImpl.java:521) at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.lambda$attemptComputation$3(NonBlockingReadActionImpl.java:468) at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1137) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runInReadActionWithWriteActionPriority$0(ProgressIndicatorUtils.java:76) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runActionAndCancelBeforeWrite(ProgressIndicatorUtils.java:152) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.lambda$runWithWriteActionPriority$1(ProgressIndicatorUtils.java:113) at com.intellij.openapi.progress.ProgressManager.lambda$runProcess$0(ProgressManager.java:59) at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:178) at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:658) at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:610) at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:65) at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:165) at com.intellij.openapi.progress.ProgressManager.runProcess(ProgressManager.java:59) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runWithWriteActionPriority(ProgressIndicatorUtils.java:110) at com.intellij.openapi.progress.util.ProgressIndicatorUtils.runInReadActionWithWriteActionPriority(ProgressIndicatorUtils.java:76) at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.attemptComputation(NonBlockingReadActionImpl.java:486) at com.intellij.openapi.application.impl.NonBlockingReadActionImpl$Submission.lambda$transferToBgThread$1(NonBlockingReadActionImpl.java:408) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:668) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1$1.run(Executors.java:665) at java.base/java.security.AccessController.doPrivileged(Native Method) at java.base/java.util.concurrent.Executors$PrivilegedThreadFactory$1.run(Executors.java:665) at java.base/java.lang.Thread.run(Thread.java:834)

What were you expecting to happen?(期望?)

Any logs, error output, etc?(有没有什么log, error输出?)

(If it’s long, please paste to https://ghostbin.com/ and insert the link here.)

Any other comments?(其它说明)

一但出现报错lua无法编辑