Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding annotation fails #2514

Closed
paul-dingemans opened this issue Jan 27, 2024 · 3 comments
Closed

Adding annotation fails #2514

paul-dingemans opened this issue Jan 27, 2024 · 3 comments
Milestone

Comments

@paul-dingemans
Copy link
Collaborator

Given code below:

@Suppress("ktlint:standard:max-line-length")
fun foo(): String // Some longggggggggggggggggggggggg comment
    = "some-result"

then ktlint-intellij-plugin (0.20.1) reports errors below:
Screenshot 2024-01-27 at 16 07 35

When suppressing any of the ktlint violation on line 3, exception below is thrown:

com.pinterest.ktlint.rule.engine.api.KtlintSuppressionOutOfBoundsException: Offset (2,62) is invalid
	at com.pinterest.ktlint.rule.engine.api.KtlintRuleEngineSuppressionKt.offsetFromStartOf(KtlintRuleEngineSuppression.kt:64)
	at com.pinterest.ktlint.rule.engine.api.KtlintRuleEngineSuppressionKt.findLeafElementAt(KtlintRuleEngineSuppression.kt:40)
	at com.pinterest.ktlint.rule.engine.api.KtlintRuleEngineSuppressionKt.insertSuppression(KtlintRuleEngineSuppression.kt:29)
	at com.nbadal.ktlint.actions.KtlintRuleSuppressIntention.invoke(KtlintRuleSuppressIntention.kt:66)
	at com.intellij.codeInsight.intention.impl.IntentionActionWithTextCaching$MyIntentionAction.invoke(IntentionActionWithTextCaching.java:238)
	at com.intellij.codeInsight.intention.impl.ShowIntentionActionsHandler.lambda$invokeIntention$15(ShowIntentionActionsHandler.java:393)
	at com.intellij.openapi.application.WriteAction.lambda$run$1(WriteAction.java:85)
	at com.intellij.openapi.application.impl.ApplicationImpl.runWriteActionWithClass(ApplicationImpl.java:963)
	at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:989)
	at com.intellij.openapi.application.WriteAction.run(WriteAction.java:84)
	at com.intellij.codeInsight.intention.impl.ShowIntentionActionsHandler.invokeIntention(ShowIntentionActionsHandler.java:393)
	at com.intellij.codeInsight.intention.impl.ShowIntentionActionsHandler.lambda$chooseActionAndInvoke$10(ShowIntentionActionsHandler.java:311)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:225)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:177)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:167)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:153)
	at com.intellij.codeInsight.intention.impl.ShowIntentionActionsHandler.chooseActionAndInvoke(ShowIntentionActionsHandler.java:310)
	at com.intellij.codeInsight.intention.impl.IntentionListStep.chooseActionAndInvoke(IntentionListStep.java:143)
	at com.intellij.codeInsight.intention.impl.IntentionListStep.lambda$applyAction$0(IntentionListStep.java:135)
	at com.intellij.ui.popup.AbstractPopup.lambda$dispose$18(AbstractPopup.java:1733)
	at com.intellij.openapi.wm.impl.FocusManagerImpl.lambda$doWhenFocusSettlesDown$3(FocusManagerImpl.java:169)
	at com.intellij.util.ui.EdtInvocationManager.invokeLaterIfNeeded(EdtInvocationManager.java:33)
	at com.intellij.ide.IdeEventQueue.ifFocusEventsInTheQueue(IdeEventQueue.kt:220)
	at com.intellij.ide.IdeEventQueue.executeWhenAllFocusEventsLeftTheQueue(IdeEventQueue.kt:186)
	at com.intellij.openapi.wm.impl.FocusManagerImpl.doWhenFocusSettlesDown(FocusManagerImpl.java:165)
	at com.intellij.openapi.wm.impl.FocusManagerImpl.doWhenFocusSettlesDown(FocusManagerImpl.java:159)
	at com.intellij.ui.popup.AbstractPopup.dispose(AbstractPopup.java:1731)
	at com.intellij.ui.popup.WizardPopup.dispose(WizardPopup.java:161)
	at com.intellij.ui.popup.list.ListPopupImpl.dispose(ListPopupImpl.java:407)
	at com.intellij.openapi.util.ObjectTree.runWithTrace(ObjectTree.java:130)
	at com.intellij.openapi.util.ObjectTree.executeAll(ObjectTree.java:162)
	at com.intellij.openapi.util.Disposer.dispose(Disposer.java:250)
	at com.intellij.openapi.util.Disposer.dispose(Disposer.java:238)
	at com.intellij.ui.popup.WizardPopup.disposeAllParents(WizardPopup.java:269)
	at com.intellij.ui.popup.list.ListPopupImpl.disposePopup(ListPopupImpl.java:518)
	at com.intellij.ui.popup.list.ListPopupImpl.handleNextStep(ListPopupImpl.java:542)
	at com.intellij.ui.popup.list.ListPopupImpl._handleSelect(ListPopupImpl.java:505)
	at com.intellij.ui.popup.list.ListPopupImpl.handleSelect(ListPopupImpl.java:449)
	at com.intellij.ui.popup.list.ListPopupImpl$1.actionPerformed(ListPopupImpl.java:290)
	at com.intellij.ui.popup.WizardPopup.proceedKeyEvent(WizardPopup.java:398)
	at com.intellij.ui.popup.WizardPopup.dispatch(WizardPopup.java:370)
	at com.intellij.ui.popup.PopupDispatcher.dispatchKeyEvent(PopupDispatcher.java:115)
	at com.intellij.ui.popup.PopupDispatcher.dispatch(PopupDispatcher.java:156)
	at com.intellij.ide.IdePopupManager.dispatch(IdePopupManager.java:111)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:562)
	at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:72)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:355)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:354)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:793)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:354)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:349)
	at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:1014)
	at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:114)
	at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:1014)
	at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$7(IdeEventQueue.kt:349)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:848)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:391)
	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)
@paul-dingemans paul-dingemans added this to the 1.2 milestone Jan 27, 2024
@paul-dingemans
Copy link
Collaborator Author

Given code below:

val foo = "foo"


val bar = "bar"
Screenshot 2024-01-28 at 17 17 55

Suppressing the no-consecutive-blank-lines rules does not result in an exception, but the suppression rule is not added either.

@paul-dingemans
Copy link
Collaborator Author

Given code below:

@Suppress("ktlint:standard:max-line-length")
fun foo(): String // Some longggggggggggggggggggggggg comment
    = "some-result"

then ktlint-intellij-plugin (0.20.1) reports errors below: Screenshot 2024-01-27 at 16 07 35

When suppressing any of the ktlint violation on line 3, exception below is thrown:

com.pinterest.ktlint.rule.engine.api.KtlintSuppressionOutOfBoundsException: Offset (2,62) is invalid
	at com.pinterest.ktlint.rule.engine.api.KtlintRuleEngineSuppressionKt.offsetFromStartOf(KtlintRuleEngineSuppression.kt:64)
	at com.pinterest.ktlint.rule.engine.api.KtlintRuleEngineSuppressionKt.findLeafElementAt(KtlintRuleEngineSuppression.kt:40)
	at com.pinterest.ktlint.rule.engine.api.KtlintRuleEngineSuppressionKt.insertSuppression(KtlintRuleEngineSuppression.kt:29)
	at com.nbadal.ktlint.actions.KtlintRuleSuppressIntention.invoke(KtlintRuleSuppressIntention.kt:66)
	at com.intellij.codeInsight.intention.impl.IntentionActionWithTextCaching$MyIntentionAction.invoke(IntentionActionWithTextCaching.java:238)
	at com.intellij.codeInsight.intention.impl.ShowIntentionActionsHandler.lambda$invokeIntention$15(ShowIntentionActionsHandler.java:393)
	at com.intellij.openapi.application.WriteAction.lambda$run$1(WriteAction.java:85)
	at com.intellij.openapi.application.impl.ApplicationImpl.runWriteActionWithClass(ApplicationImpl.java:963)
	at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:989)
	at com.intellij.openapi.application.WriteAction.run(WriteAction.java:84)
	at com.intellij.codeInsight.intention.impl.ShowIntentionActionsHandler.invokeIntention(ShowIntentionActionsHandler.java:393)
	at com.intellij.codeInsight.intention.impl.ShowIntentionActionsHandler.lambda$chooseActionAndInvoke$10(ShowIntentionActionsHandler.java:311)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:225)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:177)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:167)
	at com.intellij.openapi.command.impl.CoreCommandProcessor.executeCommand(CoreCommandProcessor.java:153)
	at com.intellij.codeInsight.intention.impl.ShowIntentionActionsHandler.chooseActionAndInvoke(ShowIntentionActionsHandler.java:310)
	at com.intellij.codeInsight.intention.impl.IntentionListStep.chooseActionAndInvoke(IntentionListStep.java:143)
	at com.intellij.codeInsight.intention.impl.IntentionListStep.lambda$applyAction$0(IntentionListStep.java:135)
	at com.intellij.ui.popup.AbstractPopup.lambda$dispose$18(AbstractPopup.java:1733)
	at com.intellij.openapi.wm.impl.FocusManagerImpl.lambda$doWhenFocusSettlesDown$3(FocusManagerImpl.java:169)
	at com.intellij.util.ui.EdtInvocationManager.invokeLaterIfNeeded(EdtInvocationManager.java:33)
	at com.intellij.ide.IdeEventQueue.ifFocusEventsInTheQueue(IdeEventQueue.kt:220)
	at com.intellij.ide.IdeEventQueue.executeWhenAllFocusEventsLeftTheQueue(IdeEventQueue.kt:186)
	at com.intellij.openapi.wm.impl.FocusManagerImpl.doWhenFocusSettlesDown(FocusManagerImpl.java:165)
	at com.intellij.openapi.wm.impl.FocusManagerImpl.doWhenFocusSettlesDown(FocusManagerImpl.java:159)
	at com.intellij.ui.popup.AbstractPopup.dispose(AbstractPopup.java:1731)
	at com.intellij.ui.popup.WizardPopup.dispose(WizardPopup.java:161)
	at com.intellij.ui.popup.list.ListPopupImpl.dispose(ListPopupImpl.java:407)
	at com.intellij.openapi.util.ObjectTree.runWithTrace(ObjectTree.java:130)
	at com.intellij.openapi.util.ObjectTree.executeAll(ObjectTree.java:162)
	at com.intellij.openapi.util.Disposer.dispose(Disposer.java:250)
	at com.intellij.openapi.util.Disposer.dispose(Disposer.java:238)
	at com.intellij.ui.popup.WizardPopup.disposeAllParents(WizardPopup.java:269)
	at com.intellij.ui.popup.list.ListPopupImpl.disposePopup(ListPopupImpl.java:518)
	at com.intellij.ui.popup.list.ListPopupImpl.handleNextStep(ListPopupImpl.java:542)
	at com.intellij.ui.popup.list.ListPopupImpl._handleSelect(ListPopupImpl.java:505)
	at com.intellij.ui.popup.list.ListPopupImpl.handleSelect(ListPopupImpl.java:449)
	at com.intellij.ui.popup.list.ListPopupImpl$1.actionPerformed(ListPopupImpl.java:290)
	at com.intellij.ui.popup.WizardPopup.proceedKeyEvent(WizardPopup.java:398)
	at com.intellij.ui.popup.WizardPopup.dispatch(WizardPopup.java:370)
	at com.intellij.ui.popup.PopupDispatcher.dispatchKeyEvent(PopupDispatcher.java:115)
	at com.intellij.ui.popup.PopupDispatcher.dispatch(PopupDispatcher.java:156)
	at com.intellij.ide.IdePopupManager.dispatch(IdePopupManager.java:111)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.kt:562)
	at com.intellij.ide.IdeEventQueue.access$_dispatchEvent(IdeEventQueue.kt:72)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:355)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1$1.compute(IdeEventQueue.kt:354)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:793)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:354)
	at com.intellij.ide.IdeEventQueue$dispatchEvent$processEventRunnable$1$1.invoke(IdeEventQueue.kt:349)
	at com.intellij.ide.IdeEventQueueKt.performActivity$lambda$1(IdeEventQueue.kt:1014)
	at com.intellij.openapi.application.TransactionGuardImpl.performActivity(TransactionGuardImpl.java:114)
	at com.intellij.ide.IdeEventQueueKt.performActivity(IdeEventQueue.kt:1014)
	at com.intellij.ide.IdeEventQueue.dispatchEvent$lambda$7(IdeEventQueue.kt:349)
	at com.intellij.openapi.application.impl.ApplicationImpl.runIntendedWriteActionOnCurrentThread(ApplicationImpl.java:848)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.kt:391)
	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)

Problem is that the offset of the violation which is to be suppressed is at the end of the line and was incorrectly handled.

@paul-dingemans
Copy link
Collaborator Author

KtlintSuppressionOutOfBoundsException

This problem is caused as the targeted location of the suppression is a whitespace. Instead the suppression should be added to a parent location.

paul-dingemans added a commit that referenced this issue Feb 11, 2024
Prevent KtlintSuppressionOutOfBoundsException Suppression if offset equals the end the line.

Closes #2514

Insert suppression at parent in case the target location of the suppression is a whitespace.
paul-dingemans added a commit that referenced this issue Feb 11, 2024
Prevent KtlintSuppressionOutOfBoundsException Suppression if offset equals the end the line.

Closes #2514

Insert suppression at parent in case the target location of the suppression is a whitespace.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant