Sometimes editor freeze when using quotations
Describe the bug
When editing a little complex structure or bigger latte file and want to type eg. myVariable => 'foo' then editor sometimes completely freezes with first quotation.
Environment (please complete the following information):
- PhpStorm version [e.g. 2024.3.5]
- Plugin version [e.g. 1.3.2]
Thanks for report! I'm familiar with this issue, but I don't know exactly what is the cause.
I've been told before that this is due to how syntax parsing is written and some rewrite of the parsing is needed in order to fix it, when I'll have time I'll at least try to debug this, but I'm not sure if I will be able to fix it.
Captured this:
Stacktrace
Sampled time: 5900ms, sampling rate: 100ms, GC time: 25ms (0%), Class loading: 0%, cpu load: 3%
com.intellij.diagnostic.Freeze
at org.nette.latte.parser.LatteParser.phpContent_0(LatteParser.java:1312)
at org.nette.latte.parser.LatteParser.phpContent(LatteParser.java:1301)
at org.nette.latte.parser.LatteParser.macroArgs(LatteParser.java:439)
at org.nette.latte.parser.LatteParser.macroContent_0(LatteParser.java:484)
at org.nette.latte.parser.LatteParser.macroContent(LatteParser.java:475)
at org.nette.latte.parser.LatteParser.classicMacroContent_1(LatteParser.java:94)
at org.nette.latte.parser.LatteParser.classicMacroContent(LatteParser.java:86)
at org.nette.latte.parser.LatteParser.macroOpenTag(LatteParser.java:606)
at org.nette.latte.parser.LatteParser.pairMacro(LatteParser.java:738)
at org.nette.latte.parser.LatteParser.macro_1_0_1(LatteParser.java:409)
at org.nette.latte.parser.LatteParser.macro_1_0(LatteParser.java:398)
at org.nette.latte.parser.LatteParser.macro_1(LatteParser.java:386)
at org.nette.latte.parser.LatteParser.macro(LatteParser.java:375)
at org.nette.latte.parser.LatteParser.htmlTagContainer_0(LatteParser.java:288)
at org.nette.latte.parser.LatteParser.htmlTagContainer(LatteParser.java:276)
at org.nette.latte.parser.LatteParser.htmlPairTag(LatteParser.java:229)
at org.nette.latte.parser.LatteParser.htmlTag_0(LatteParser.java:253)
at org.nette.latte.parser.LatteParser.htmlTag(LatteParser.java:241)
at org.nette.latte.parser.LatteParser.outerHtml(LatteParser.java:721)
at org.nette.latte.parser.LatteParser.structureToken(LatteParser.java:2425)
at org.nette.latte.parser.LatteParser.root_0_0(LatteParser.java:2407)
at org.nette.latte.parser.LatteParser.root_0(LatteParser.java:2396)
at org.nette.latte.parser.LatteParser.root(LatteParser.java:2385)
at org.nette.latte.parser.LatteParser.parse_root_(LatteParser.java:35)
at org.nette.latte.parser.LatteParser.parse_root_(LatteParser.java:31)
at org.nette.latte.parser.LatteParser.parseLight(LatteParser.java:26)
at org.nette.latte.parser.LatteParser.parse(LatteParser.java:18)
at com.intellij.psi.tree.ILazyParseableElementType.doParseContents(ILazyParseableElementType.java:60)
at com.intellij.psi.tree.IFileElementType.parseContents(IFileElementType.java:38)
at com.intellij.psi.impl.source.tree.LazyParseableElement.lambda$ensureParsed$2(LazyParseableElement.java:183)
at com.intellij.psi.impl.source.tree.LazyParseableElement$$Lambda/0x000075092a5fc000.run(Unknown Source)
at com.intellij.psi.impl.DebugUtil.performPsiModification(DebugUtil.java:534)
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.tree.LazyParseableElement.getFirstChildNode(LazyParseableElement.java:25)
at com.intellij.psi.impl.BlockSupportImpl.isReplaceWholeNode(BlockSupportImpl.java:410)
at com.intellij.psi.impl.BlockSupportImpl.mergeTrees(BlockSupportImpl.java:357)
at com.intellij.psi.impl.BlockSupportImpl.makeFullParse(BlockSupportImpl.java:292)
at com.intellij.psi.impl.BlockSupportImpl.reparse(BlockSupportImpl.java:91)
at com.intellij.psi.impl.DocumentCommitThread.doCommit(DocumentCommitThread.java:267)
at com.intellij.psi.impl.DocumentCommitThread.commitUnderProgress(DocumentCommitThread.java:134)
at com.intellij.psi.impl.DocumentCommitThread.commitSynchronously(DocumentCommitThread.java:103)
at com.intellij.psi.impl.PsiDocumentManagerBase.lambda$doCommit$10(PsiDocumentManagerBase.java:531)
at com.intellij.psi.impl.PsiDocumentManagerBase$$Lambda/0x000075092d16c000.run(Unknown Source)
at com.intellij.psi.impl.PsiDocumentManagerBase.executeInsideCommit(PsiDocumentManagerBase.java:546)
at com.intellij.psi.impl.PsiDocumentManagerBase.doCommit(PsiDocumentManagerBase.java:531)
at com.intellij.psi.impl.PsiDocumentManagerBase.lambda$doCommit$9(PsiDocumentManagerBase.java:520)
at com.intellij.psi.impl.PsiDocumentManagerBase$$Lambda/0x000075092d107c70.run(Unknown Source)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteAction$lambda$5(AnyThreadWriteThreadingSupport.kt:379)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport$$Lambda/0x000075092a8d54b8.compute(Unknown Source)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteAction(AnyThreadWriteThreadingSupport.kt:389)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteAction(AnyThreadWriteThreadingSupport.kt:379)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:897)
at com.intellij.psi.impl.PsiDocumentManagerBase.doCommit(PsiDocumentManagerBase.java:520)
at com.intellij.psi.impl.PsiDocumentManagerBase.commitDocument(PsiDocumentManagerBase.java:365)
at com.intellij.codeInsight.editorActions.XmlEqTypedHandler.beforeCharTyped(XmlEqTypedHandler.java:45)
at com.intellij.codeInsight.editorActions.TypedHandler.lambda$doExecute$0(TypedHandler.java:199)
at com.intellij.codeInsight.editorActions.TypedHandler$$Lambda/0x000075092cf88220.call(Unknown Source)
at com.intellij.codeInsight.editorActions.TypedHandler.callDelegates(TypedHandler.java:269)
at com.intellij.codeInsight.editorActions.TypedHandler.lambda$doExecute$1(TypedHandler.java:200)
at com.intellij.codeInsight.editorActions.TypedHandler$$Lambda/0x000075092cf3f058.perform(Unknown Source)
at com.intellij.openapi.editor.impl.CaretModelImpl.lambda$runForEachCaret$3(CaretModelImpl.java:304)
at com.intellij.openapi.editor.impl.CaretModelImpl$$Lambda/0x000075092ce4d3c8.run(Unknown Source)
at com.intellij.openapi.editor.impl.CaretModelImpl.doWithCaretMerging(CaretModelImpl.java:413)
at com.intellij.openapi.editor.impl.CaretModelImpl.runForEachCaret(CaretModelImpl.java:313)
at com.intellij.openapi.editor.impl.CaretModelImpl.runForEachCaret(CaretModelImpl.java:290)
at com.intellij.codeInsight.editorActions.TypedHandler.doExecute(TypedHandler.java:158)
at com.intellij.codeInsight.editorActions.TypedHandler.execute(TypedHandler.java:136)
at com.intellij.codeInsight.lookup.impl.LookupTypedHandler.execute(LookupTypedHandler.java:75)
at com.intellij.codeInsight.template.emmet.EmmetPreviewTypedHandler.execute(EmmetPreviewTypedHandler.java:43)
at com.intellij.openapi.editor.impl.DefaultRawTypedHandler$1.run(DefaultRawTypedHandler.java:55)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteAction$lambda$5(AnyThreadWriteThreadingSupport.kt:379)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport$$Lambda/0x000075092a8d54b8.compute(Unknown Source)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteAction(AnyThreadWriteThreadingSupport.kt:389)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteAction(AnyThreadWriteThreadingSupport.kt:379)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:897)
at com.intellij.openapi.editor.impl.DefaultRawTypedHandler.execute(DefaultRawTypedHandler.java:49)
at com.intellij.openapi.editor.impl.MyRawTypedHandler.execute(EditorFactoryImpl.kt:290)
at com.intellij.openapi.editor.actionSystem.TypedAction.lambda$actionPerformed$2(TypedAction.java:201)
at com.intellij.openapi.editor.actionSystem.TypedAction$$Lambda/0x000075092cf32000.run(Unknown Source)
at com.intellij.reporting.FreezeLoggerImpl.runUnderPerformanceMonitor(FreezeLoggerImpl.java:30)
at com.intellij.openapi.editor.actionSystem.TypedAction.actionPerformed(TypedAction.java:200)
at com.intellij.openapi.editor.impl.EditorImpl.processKeyTypedNormally(EditorImpl.java:1402)
at com.intellij.openapi.editor.impl.EditorImpl.processKeyTyped(EditorImpl.java:1384)
at com.intellij.openapi.editor.impl.EditorImpl.processKeyTyped(EditorImpl.java:3783)
at com.intellij.openapi.editor.impl.EditorImpl$6.keyTyped(EditorImpl.java:1216)
at java.desktop/java.awt.AWTEventMulticaster.keyTyped(AWTEventMulticaster.java:247)
at java.desktop/java.awt.AWTEventMulticaster.keyTyped(AWTEventMulticaster.java:247)
at java.desktop/java.awt.AWTEventMulticaster.keyTyped(AWTEventMulticaster.java:247)
at java.desktop/java.awt.Component.processKeyEvent(Component.java:6617)
at java.desktop/javax.swing.JComponent.processKeyEvent(JComponent.java:2901)
at java.desktop/java.awt.Component.processEvent(Component.java:6439)
at java.desktop/java.awt.Container.processEvent(Container.java:2266)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5032)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4860)
at java.desktop/java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954)
at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:886)
at java.desktop/java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1162)
at java.desktop/java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:1023)
at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:849)
at com.intellij.ide.IdeKeyboardFocusManager.dispatchEvent$lambda$1(IdeKeyboardFocusManager.kt:48)
at com.intellij.ide.IdeKeyboardFocusManager$$Lambda/0x0000750929912268.invoke(Unknown Source)
at com.intellij.ide.IdeKeyboardFocusManager.dispatchEvent$lambda$2(IdeKeyboardFocusManager.kt:54)
at com.intellij.ide.IdeKeyboardFocusManager$$Lambda/0x0000750929aca4f0.invoke(Unknown Source)
at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$3(IdeEventQueue.kt:1054)
at com.intellij.ide.IdeEventQueueKt$$Lambda/0x000075092993a6e8.run(Unknown Source)
at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:109)
at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:1054)
at com.intellij.ide.IdeKeyboardFocusManager.dispatchEvent(IdeKeyboardFocusManager.kt:54)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4909)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2324)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2810)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4860)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:783)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:728)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
at [email protected]/java.security.AccessController.executePrivileged(AccessController.java:778)
at [email protected]/java.security.AccessController.doPrivileged(AccessController.java:400)
at [email protected]/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
at [email protected]/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:98)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:755)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:753)
at [email protected]/java.security.AccessController.executePrivileged(AccessController.java:778)
at [email protected]/java.security.AccessController.doPrivileged(AccessController.java:400)
at [email protected]/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:87)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:752)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.kt:675)
at com.intellij.ide.IdeEventQueue.dispatchKeyEvent(IdeEventQueue.kt:609)
at com.intellij.ide.IdeEventQueue._dispatchEvent$lambda$22(IdeEventQueue.kt:565)
at com.intellij.ide.IdeEventQueue$$Lambda/0x000075092c037248.compute(Unknown Source)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteIntentReadAction(AnyThreadWriteThreadingSupport.kt:128)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:565)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$18$lambda$17$lambda$16$lambda$15(IdeEventQueue.kt:355)
at com.intellij.ide.IdeEventQueue$$Lambda/0x0000750929ddd198.compute(Unknown Source)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:857)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$18$lambda$17$lambda$16(IdeEventQueue.kt:354)
at com.intellij.ide.IdeEventQueue$$Lambda/0x0000750929939758.invoke(Unknown Source)
at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$2$lambda$1(IdeEventQueue.kt:1045)
at com.intellij.ide.IdeEventQueueKt$$Lambda/0x000075092993afe0.run(Unknown Source)
at com.intellij.openapi.application.WriteIntentReadAction.lambda$run$0(WriteIntentReadAction.java:24)
at com.intellij.openapi.application.WriteIntentReadAction$$Lambda/0x00007509299132d8.compute(Unknown Source)
at com.intellij.openapi.application.impl.AnyThreadWriteThreadingSupport.runWriteIntentReadAction(AnyThreadWriteThreadingSupport.kt:128)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteIntentReadAction(ApplicationImpl.java:917)
at com.intellij.openapi.application.WriteIntentReadAction.compute(WriteIntentReadAction.java:55)
at com.intellij.openapi.application.WriteIntentReadAction.run(WriteIntentReadAction.java:23)
at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$2(IdeEventQueue.kt:1045)
at com.intellij.ide.IdeEventQueueKt$$Lambda/0x0000750929939e18.invoke(Unknown Source)
at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$3(IdeEventQueue.kt:1054)
at com.intellij.ide.IdeEventQueueKt$$Lambda/0x000075092993a6e8.run(Unknown Source)
at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:117)
at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:1054)
at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$18(IdeEventQueue.kt:349)
at com.intellij.ide.IdeEventQueue$$Lambda/0x0000750929938eb8.run(Unknown Source)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:395)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:207)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:92)
@sasule it should be fixed in the next release, if you want you can test it (version should be available within an hour, or a few days because it's weekend.. you can try to install instrumented.jar from latest release).