google-java-format
google-java-format copied to clipboard
IllegalArgumentException in IntelliJ plugin v.1.15.0
I have the v.1.15.0 IntelliJ plugin with GJF and IntelliJ IDEA 2021.3. I have a save action to format the file. When adding a multi line string string next to a regular string, I got the following exception. The code I was modifying looks like:
return jdbi.withHandle(
handle ->
handle
.registerRowMapper((BeanMapper.factory(Foo.class)))
.createQuery("""
"""
"SELECT * FROM foo WHERE bar" +
" IN (<bars>);")
.bindList("bars", bars)
.mapTo(Foo.class)
.list());
java.lang.IllegalArgumentException: Invalid range specified: (-1, 0);
at com.intellij.openapi.util.TextRange.assertProperRange(TextRange.java:231)
at com.intellij.openapi.util.TextRange.assertProperRange(TextRange.java:226)
at com.intellij.openapi.util.TextRange.assertProperRange(TextRange.java:222)
at com.intellij.openapi.util.TextRange.<init>(TextRange.java:41)
at com.intellij.openapi.util.TextRange.<init>(TextRange.java:30)
at com.intellij.openapi.util.TextRange.shiftLeft(TextRange.java:133)
at com.intellij.psi.formatter.PsiBasedFormattingModel.correctRangeByInjection(PsiBasedFormattingModel.java:137)
at com.intellij.psi.formatter.PsiBasedFormattingModel.replaceWithPSI(PsiBasedFormattingModel.java:99)
at com.intellij.psi.formatter.PsiBasedFormattingModel.replaceWhiteSpace(PsiBasedFormattingModel.java:67)
at com.intellij.formatting.engine.FormatProcessorUtils.replaceWhiteSpace(FormatProcessorUtils.java:31)
at com.intellij.formatting.engine.ApplyChangesState.doIteration(ApplyChangesState.java:175)
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:108)
at com.intellij.formatting.FormatterImpl$MyFormattingTask.iteration(FormatterImpl.java:653)
at com.intellij.formatting.FormatterImpl.execute(FormatterImpl.java:269)
at com.intellij.formatting.FormatterImpl.format(FormatterImpl.java:236)
at com.intellij.psi.impl.source.codeStyle.CodeFormatterFacade.processRange(CodeFormatterFacade.java:98)
at com.intellij.psi.impl.source.codeStyle.CodeFormatterFacade.processElement(CodeFormatterFacade.java:66)
at com.intellij.formatting.service.CoreFormattingService.formatElement(CoreFormattingService.java:44)
at com.intellij.formatting.service.FormattingServiceUtil.formatElement(FormattingServiceUtil.java:67)
at com.intellij.psi.impl.source.codeStyle.CodeStyleManagerImpl.reformat(CodeStyleManagerImpl.java:81)
at com.intellij.psi.impl.source.codeStyle.CodeStyleManagerImpl.reformat(CodeStyleManagerImpl.java:64)
at com.google.googlejavaformat.intellij.CodeStyleManagerDecorator.reformat(CodeStyleManagerDecorator.java:65)
at com.intellij.codeInsight.editorActions.JavaQuoteHandler.insertClosingQuote(JavaQuoteHandler.java:131)
at com.intellij.codeInsight.editorActions.TypedHandler.handleQuote(TypedHandler.java:522)
at com.intellij.codeInsight.editorActions.TypedHandler.lambda$doExecute$2(TypedHandler.java:207)
at com.intellij.openapi.editor.impl.CaretModelImpl.lambda$runForEachCaret$3(CaretModelImpl.java:312)
at com.intellij.openapi.editor.impl.CaretModelImpl.doWithCaretMerging(CaretModelImpl.java:421)
at com.intellij.openapi.editor.impl.CaretModelImpl.runForEachCaret(CaretModelImpl.java:321)
at com.intellij.openapi.editor.impl.CaretModelImpl.runForEachCaret(CaretModelImpl.java:296)
at com.intellij.codeInsight.editorActions.TypedHandler.doExecute(TypedHandler.java:163)
at com.intellij.codeInsight.editorActions.TypedHandler.lambda$execute$0(TypedHandler.java:145)
at com.intellij.util.SlowOperations.allowSlowOperations(SlowOperations.java:147)
at com.intellij.codeInsight.editorActions.TypedHandler.execute(TypedHandler.java:145)
at com.intellij.codeInsight.lookup.impl.LookupTypedHandler.execute(LookupTypedHandler.java:73)
at com.intellij.codeInsight.template.emmet.EmmetPreviewTypedHandler.execute(EmmetPreviewTypedHandler.java:39)
at com.intellij.execution.impl.ConsoleViewImpl$MyTypedHandler.execute(ConsoleViewImpl.java:1134)
at com.intellij.openapi.editor.impl.DefaultRawTypedHandler$1.run(DefaultRawTypedHandler.java:55)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:947)
at com.intellij.openapi.editor.impl.DefaultRawTypedHandler.execute(DefaultRawTypedHandler.java:49)
at com.intellij.openapi.editor.impl.EditorFactoryImpl$MyRawTypedHandler.execute(EditorFactoryImpl.java:298)
at com.intellij.openapi.editor.actionSystem.TypedAction.lambda$actionPerformed$2(TypedAction.java:200)
at com.intellij.reporting.FreezeLoggerImpl.runUnderPerformanceMonitor(FreezeLoggerImpl.java:28)
at com.intellij.openapi.editor.actionSystem.TypedAction.lambda$actionPerformed$3(TypedAction.java:199)
at com.intellij.util.SlowOperations.allowSlowOperations(SlowOperations.java:147)
at com.intellij.openapi.editor.actionSystem.TypedAction.actionPerformed(TypedAction.java:199)
at com.intellij.openapi.editor.impl.EditorImpl.processKeyTypedNormally(EditorImpl.java:1309)
at com.intellij.openapi.editor.impl.EditorImpl.processKeyTyped(EditorImpl.java:1291)
at com.intellij.openapi.editor.impl.EditorImpl.processKeyTyped(EditorImpl.java:3438)
at com.intellij.openapi.editor.impl.EditorImpl$7.keyTyped(EditorImpl.java:1130)
at java.desktop/java.awt.AWTEventMulticaster.keyTyped(AWTEventMulticaster.java:247)
at java.desktop/java.awt.Component.processKeyEvent(Component.java:6609)
at java.desktop/javax.swing.JComponent.processKeyEvent(JComponent.java:2852)
at java.desktop/java.awt.Component.processEvent(Component.java:6431)
at java.desktop/java.awt.Container.processEvent(Container.java:2263)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:5029)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4861)
at java.desktop/java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1962)
at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:881)
at java.desktop/java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1164)
at java.desktop/java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:1020)
at java.desktop/java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:844)
at com.intellij.ide.IdeKeyboardFocusManager.dispatchEvent(IdeKeyboardFocusManager.java:42)
at java.desktop/java.awt.Component.dispatchEventImpl(Component.java:4910)
at java.desktop/java.awt.Container.dispatchEventImpl(Container.java:2321)
at java.desktop/java.awt.Window.dispatchEventImpl(Window.java:2790)
at java.desktop/java.awt.Component.dispatchEvent(Component.java:4861)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:778)
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.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:95)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:751)
at java.desktop/java.awt.EventQueue$5.run(EventQueue.java:749)
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:748)
at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:891)
at com.intellij.ide.IdeEventQueue.dispatchKeyEvent(IdeEventQueue.java:807)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:754)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$6(IdeEventQueue.java:447)
at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:818)
at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$7(IdeEventQueue.java:446)
at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:805)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:498)
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)
I get the exact same stacktrace. In my experience I have never gotten multiline Strings to work with the formatter in IntelliJ, but anyway this is the code it fails for:
public class Service {
DatabaseClient client;
void run(){
client.sql("""
""");
}
}
See #533
This should be fixed in 1.16.0.0, which uses a newer officially-supported formatter API.