tomblachut / svelte-intellij

Svelte components in WebStorm and friends
MIT License
482 stars 38 forks source link

0.13.0 format code cause webstorm exception #139

Closed dishuostec closed 3 years ago

dishuostec commented 4 years ago

IDE display an exception when I format this code.

<script>
    let foo;
</script>

<div>
    {#if foo}
        <p>foo</p>
    {/if}
</div>
kotlin.NotImplementedError: An operation is not implemented: not implemented
    at dev.blachut.svelte.lang.format.SvelteBlockFakeXmlTag.getSubTags(SvelteBlockFakeXmlTag.kt:118)
    at com.intellij.psi.formatter.xml.HtmlPolicy.hasInlineContentOnly(HtmlPolicy.java:183)
    at com.intellij.psi.formatter.xml.HtmlPolicy.getWrappingTypeForTagBegin(HtmlPolicy.java:173)
    at com.intellij.psi.formatter.xml.AbstractSyntheticBlock.insertLineFeedAfter(AbstractSyntheticBlock.java:240)
    at com.intellij.psi.formatter.xml.AbstractSyntheticBlock.insertLineFeedAfter(AbstractSyntheticBlock.java:231)
    at com.intellij.psi.formatter.xml.XmlTagBlock.getSpacing(XmlTagBlock.java:313)
    at com.intellij.psi.formatter.xml.XmlTagBlock.getSpacing(XmlTagBlock.java:238)
    at com.intellij.formatting.InitialInfoBuilder.initCurrentWhiteSpace(InitialInfoBuilder.java:240)
    at com.intellij.formatting.InitialInfoBuilder.doIteration(InitialInfoBuilder.java:219)
    at com.intellij.formatting.InitialInfoBuilder.iteration(InitialInfoBuilder.java:118)
    at com.intellij.formatting.engine.WrapBlocksState.doIteration(WrapBlocksState.java:47)
    at com.intellij.formatting.engine.State.iteration(State.java:25)
    at com.intellij.formatting.engine.StateProcessor.iteration(StateProcessor.java:26)
    at com.intellij.formatting.FormatProcessor.iteration(FormatProcessor.java:107)
    at com.intellij.formatting.FormatterImpl$MyFormattingTask.iteration(FormatterImpl.java:705)
    at com.intellij.util.SequentialTask.iteration(SequentialTask.java:32)
    at com.intellij.util.SequentialModalProgressTask.lambda$doRun$0(SequentialModalProgressTask.java:73)
    at com.intellij.openapi.application.impl.ApplicationImpl.invokeAndWait(ApplicationImpl.java:467)
    at com.intellij.openapi.application.impl.ApplicationImpl.invokeAndWait(ApplicationImpl.java:485)
    at com.intellij.util.SequentialModalProgressTask.doRun(SequentialModalProgressTask.java:69)
    at com.intellij.util.SequentialModalProgressTask.run(SequentialModalProgressTask.java:46)
    at com.intellij.openapi.progress.impl.CoreProgressManager$TaskRunnable.run(CoreProgressManager.java:932)
    at com.intellij.openapi.progress.impl.CoreProgressManager$4.run(CoreProgressManager.java:482)
    at com.intellij.openapi.progress.impl.CoreProgressManager.lambda$runProcess$2(CoreProgressManager.java:166)
    at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:627)
    at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:572)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:61)
    at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:153)
    at com.intellij.openapi.application.impl.ApplicationImpl.runProcessWithProgressSynchronously(ApplicationImpl.java:408)
    at com.intellij.openapi.progress.impl.CoreProgressManager.runProcessWithProgressSynchronously(CoreProgressManager.java:494)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.runProcessWithProgressSynchronously(ProgressManagerImpl.java:84)
    at com.intellij.openapi.progress.impl.CoreProgressManager.runSynchronously(CoreProgressManager.java:345)
    at com.intellij.openapi.progress.impl.CoreProgressManager.run(CoreProgressManager.java:330)
    at com.intellij.formatting.FormatterImpl.execute(FormatterImpl.java:287)
    at com.intellij.formatting.FormatterImpl.format(FormatterImpl.java:239)
    at com.intellij.psi.impl.source.codeStyle.CodeFormatterFacade.processText(CodeFormatterFacade.java:198)
    at com.intellij.psi.impl.source.codeStyle.CodeStyleManagerImpl.lambda$reformatText$3(CodeStyleManagerImpl.java:217)
    at com.intellij.psi.impl.source.codeStyle.CodeStyleManagerImpl.formatRanges(CodeStyleManagerImpl.java:251)
    at com.intellij.psi.impl.source.codeStyle.CodeStyleManagerImpl.reformatText(CodeStyleManagerImpl.java:212)
    at com.intellij.psi.impl.source.codeStyle.CodeStyleManagerImpl.reformatText(CodeStyleManagerImpl.java:176)
    at com.intellij.psi.impl.source.codeStyle.CodeStyleManagerImpl.reformatText(CodeStyleManagerImpl.java:159)
    at com.intellij.codeInsight.actions.ReformatCodeProcessor.lambda$null$0(ReformatCodeProcessor.java:113)
    at com.intellij.openapi.editor.ex.util.EditorScrollingPositionKeeper.perform(EditorScrollingPositionKeeper.java:110)
    at com.intellij.codeInsight.actions.ReformatCodeProcessor.lambda$prepareTask$1(ReformatCodeProcessor.java:103)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at com.intellij.openapi.command.WriteCommandAction.lambda$runWriteCommandAction$5(WriteCommandAction.java:353)
    at com.intellij.openapi.command.WriteCommandAction$BuilderImpl$1.run(WriteCommandAction.java:107)
    at com.intellij.openapi.application.RunResult.run(RunResult.java:35)
    at com.intellij.openapi.command.WriteCommandAction.lambda$null$1(WriteCommandAction.java:248)
    at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:976)
    at com.intellij.openapi.command.WriteCommandAction.lambda$performWriteCommandAction$2(WriteCommandAction.java:247)
    at com.intellij.openapi.command.WriteCommandAction.lambda$doExecuteCommand$4(WriteCommandAction.java:305)
    at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:220)
    at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:188)
    at com.intellij.openapi.command.WriteCommandAction.doExecuteCommand(WriteCommandAction.java:307)
    at com.intellij.openapi.command.WriteCommandAction.performWriteCommandAction(WriteCommandAction.java:246)
    at com.intellij.openapi.command.WriteCommandAction.execute(WriteCommandAction.java:227)
    at com.intellij.openapi.command.WriteCommandAction$BuilderImpl.run(WriteCommandAction.java:109)
    at com.intellij.openapi.command.WriteCommandAction.runWriteCommandAction(WriteCommandAction.java:353)
    at com.intellij.codeInsight.actions.AbstractLayoutCodeProcessor$ReformatFilesTask.lambda$performFileProcessing$5(AbstractLayoutCodeProcessor.java:413)
    at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:201)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
    at com.intellij.openapi.application.impl.ApplicationImpl.lambda$invokeAndWait$8(ApplicationImpl.java:480)
    at com.intellij.openapi.application.impl.LaterInvocator$1.run(LaterInvocator.java:124)
    at com.intellij.openapi.application.impl.FlushQueue.doRun(FlushQueue.java:80)
    at com.intellij.openapi.application.impl.FlushQueue.runNextEvent(FlushQueue.java:128)
    at com.intellij.openapi.application.impl.FlushQueue.flushNow(FlushQueue.java:46)
    at com.intellij.openapi.application.impl.FlushQueue$FlushNow.run(FlushQueue.java:184)
    at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
    at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
    at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
    at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:974)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:847)
    at com.intellij.ide.IdeEventQueue.lambda$null$8(IdeEventQueue.java:449)
    at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:741)
    at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$9(IdeEventQueue.java:448)
    at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:831)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:496)
    at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
    at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
    at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
dishuostec commented 4 years ago

Upgrade WebStorm to 2020.2, it still happens.

tomblachut commented 4 years ago

Works for me.

Please paste details from About dialog (esp. what other plugins you have)

image

dishuostec commented 4 years ago
WebStorm 2020.2
Build #WS-202.6397.88, built on July 25, 2020
Runtime version: 11.0.7+10-b944.20 x86_64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o.
macOS 10.15.5
GC: ParNew, ConcurrentMarkSweep
Memory: 2988M
Cores: 12
Registry: documentation.show.toolbar=true, ide.tooltip.initialDelay=400, ide.balloon.shadow.size=0, js.debugger.webconsole=false
Non-Bundled Plugins: IdeaVIM, Key Promoter X, String Manipulation, org.intellij.plugins.postcss, io.protostuff.protostuff-jetbrains-plugin, lermitage.intellij.extra.icons, net.vektah.codeglance, dev.blachut.svelte.lang, izhangzhihao.rainbow.brackets, ru.adelf.idea.dotenv
tomblachut commented 4 years ago

I think I have an idea. If you reset HTML Code Style to defaults it should work. Can you attach your exported Code Style XML?

dishuostec commented 4 years ago

I found the reason is I leave Preferences | Editor | Code Style | HTML -> Other -> Don't break if inline content: empty.

Here is a example dump:

<code_scheme name="foo" version="173">
  <HTMLCodeStyleSettings>
    <option name="HTML_DONT_ADD_BREAKS_IF_INLINE_CONTENT" value="" />
  </HTMLCodeStyleSettings>
  <editorconfig>
    <option name="ENABLED" value="false" />
  </editorconfig>
</code_scheme>
tomblachut commented 4 years ago

btw why did you change that option, is it just general preference or is it related to Svelte? Maybe I should change defaults for .svelte files?

dishuostec commented 4 years ago

It's not related to svelte. I changed it just for more readable.

tomblachut commented 4 years ago

ok cool

tomblachut commented 3 years ago

Next release will handle this specific exception