rikvdkleij / intellij-haskell

IntelliJ plugin for Haskell
https://rikvdkleij.github.io/intellij-haskell/
Apache License 2.0
1.31k stars 94 forks source link

Can't add new Configuration in 1.0.0-beta36 #354

Closed DavidHulsman closed 5 years ago

DavidHulsman commented 5 years ago

Ever since updating to 1.0.0-beta36 I haven't been able to add a new configuration (or alter any existing ones), as the buttons that add any (REPL|Build|Test) config simply do nothing. When I select an existing config, the menu locks up and doesn't show anything.

Tested on Intellij 2018.2.5, 2018.2.7 and 2018.3.1 - none of them work with beta36

For now I've rolled back to 1.0.0-beta35 and now things work again.

rikvdkleij commented 5 years ago

Thanks for reporting!

@Sir4ur0n also has this issue. I can not reproduce this issue on MacOS and Linux. I'am also not aware of changing this part of the plugin after beta35.

@ice1000 Do you have an idea? Maybe related to your changes?

ice1000 commented 5 years ago

I'll investigate. Will give feedback this weekend (final week, sorry)

ice1000 commented 5 years ago

Did you see any exception thrown after closing the run config window? Could you please include the stacktrace here?

I'm not sure if I can reproduce this and I'm busy with my final exam these few days so I have no time to repro right now. A stacktrace may indicate the fix directly (to save time).

ice1000 commented 5 years ago

Also, I'm not sure if it's my fault. But I'm sure there probably is an exception thrown (which is the primary cause of non-main editor UI freezes).

ice1000 commented 5 years ago

I know the OP may not be interested in helping us solving the problem so I tried myself anyway. Good news: reproduced!

java.lang.NullPointerException
    at intellij.haskell.runconfig.console.HaskellConsoleConfigurationForm.<init>(HaskellConsoleConfigurationForm.java:16)
    at intellij.haskell.runconfig.console.HaskellConsoleConfiguration.getConfigurationEditor(HaskellConsoleConfiguration.scala:20)
    at intellij.haskell.runconfig.console.HaskellConsoleConfiguration.getConfigurationEditor(HaskellConsoleConfiguration.scala:14)
    at com.intellij.execution.impl.ConfigurationSettingsEditor.<init>(ConfigurationSettingsEditor.java:198)
    at com.intellij.execution.impl.ConfigurationSettingsEditorWrapper.<init>(ConfigurationSettingsEditorWrapper.java:49)
    at com.intellij.execution.impl.SingleConfigurationConfigurable.<init>(SingleConfigurationConfigurable.java:58)
    at com.intellij.execution.impl.SingleConfigurationConfigurable.editSettings(SingleConfigurationConfigurable.java:93)
    at com.intellij.execution.impl.RunConfigurable.getSafeUserObject(RunConfigurable.kt:352)
    at com.intellij.execution.impl.RunConfigurable.access$getSafeUserObject(RunConfigurable.kt:73)
    at com.intellij.execution.impl.RunConfigurable$initTree$3.valueChanged(RunConfigurable.kt:239)
    at javax.swing.JTree.fireValueChanged(JTree.java:2927)
    at javax.swing.JTree$TreeSelectionRedirector.valueChanged(JTree.java:3391)
    at javax.swing.tree.DefaultTreeSelectionModel.fireValueChanged(DefaultTreeSelectionModel.java:635)
    at com.intellij.ui.treeStructure.Tree$MySelectionModel.fireValueChanged(Tree.java:657)
    at javax.swing.tree.DefaultTreeSelectionModel.notifyPathChange(DefaultTreeSelectionModel.java:1093)
    at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPaths(DefaultTreeSelectionModel.java:294)
    at javax.swing.JTree.setSelectionPaths(JTree.java:1647)
    at javax.swing.JTree.setSelectionRows(JTree.java:1729)
    at javax.swing.JTree.setSelectionRow(JTree.java:1704)
    at com.intellij.util.ui.tree.TreeUtil.lambda$showAndSelect$10(TreeUtil.java:565)
    at com.intellij.util.ui.tree.TreeUtil.showAndSelect(TreeUtil.java:600)
    at com.intellij.util.ui.tree.TreeUtil.showRowCentered(TreeUtil.java:510)
    at com.intellij.util.ui.tree.TreeUtil.showRowCentered(TreeUtil.java:501)
    at com.intellij.util.ui.tree.TreeUtil.showRowCentred(TreeUtil.java:496)
    at com.intellij.util.ui.tree.TreeUtil.selectPath(TreeUtil.java:427)
    at com.intellij.util.ui.tree.TreeUtil.selectInTree(TreeUtil.java:909)
    at com.intellij.util.ui.tree.TreeUtil.selectInTree(TreeUtil.java:897)
    at com.intellij.execution.impl.RunConfigurable.selectConfiguration(RunConfigurable.kt:307)
    at com.intellij.execution.impl.RunConfigurable.access$selectConfiguration(RunConfigurable.kt:73)
    at com.intellij.execution.impl.RunConfigurable$selectConfigurableOnShow$1.run(RunConfigurable.kt:283)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:762)
    at java.awt.EventQueue.access$500(EventQueue.java:98)
    at java.awt.EventQueue$3.run(EventQueue.java:715)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:732)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:719)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:668)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:363)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:109)
    at java.awt.WaitDispatchSupport$2.run(WaitDispatchSupport.java:190)
    at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:235)
    at java.awt.WaitDispatchSupport$4.run(WaitDispatchSupport.java:233)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.awt.WaitDispatchSupport.enter(WaitDispatchSupport.java:233)
    at java.awt.Dialog.show(Dialog.java:1077)
    at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl$MyDialog.show(DialogWrapperPeerImpl.java:698)
    at com.intellij.openapi.ui.impl.DialogWrapperPeerImpl.show(DialogWrapperPeerImpl.java:430)
    at com.intellij.openapi.ui.DialogWrapper.invokeShow(DialogWrapper.java:1681)
    at com.intellij.openapi.ui.DialogWrapper.show(DialogWrapper.java:1630)
    at com.intellij.execution.actions.EditRunConfigurationsAction.actionPerformed(EditRunConfigurationsAction.java:48)
    at com.intellij.openapi.actionSystem.ex.ActionUtil$1.run(ActionUtil.java:258)
    at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAware(ActionUtil.java:275)
    at com.intellij.openapi.actionSystem.ex.ActionUtil.performActionDumbAwareWithCallbacks(ActionUtil.java:249)
    at com.intellij.ui.popup.ActionPopupStep.performAction(ActionPopupStep.java:200)
    at com.intellij.ui.popup.ActionPopupStep.performAction(ActionPopupStep.java:190)
    at com.intellij.ui.popup.ActionPopupStep.lambda$onChosen$2(ActionPopupStep.java:184)
    at com.intellij.openapi.application.TransactionGuardImpl.performUserActivity(TransactionGuardImpl.java:195)
    at com.intellij.ui.popup.AbstractPopup.lambda$dispose$12(AbstractPopup.java:1417)
    at com.intellij.util.ui.UIUtil.invokeLaterIfNeeded(UIUtil.java:3048)
    at com.intellij.ide.IdeEventQueue.ifFocusEventsInTheQueue(IdeEventQueue.java:172)
    at com.intellij.ide.IdeEventQueue.executeWhenAllFocusEventsLeftTheQueue(IdeEventQueue.java:124)
    at com.intellij.openapi.wm.impl.FocusManagerImpl.doWhenFocusSettlesDown(FocusManagerImpl.java:179)
    at com.intellij.openapi.wm.impl.IdeFocusManagerImpl.doWhenFocusSettlesDown(IdeFocusManagerImpl.java:58)
    at com.intellij.ui.popup.AbstractPopup.dispose(AbstractPopup.java:1413)
    at com.intellij.ui.popup.WizardPopup.dispose(WizardPopup.java:160)
    at com.intellij.ui.popup.list.ListPopupImpl.dispose(ListPopupImpl.java:308)
    at com.intellij.ui.popup.PopupFactoryImpl$ActionGroupPopup.dispose(PopupFactoryImpl.java:279)
    at com.intellij.openapi.util.Disposer$1.execute(Disposer.java:48)
    at com.intellij.openapi.util.Disposer$1.execute(Disposer.java:44)
    at com.intellij.openapi.util.objectTree.ObjectNode$1.execute(ObjectNode.java:138)
    at com.intellij.openapi.util.objectTree.ObjectNode$1.execute(ObjectNode.java:107)
    at com.intellij.openapi.util.objectTree.ObjectTree.executeActionWithRecursiveGuard(ObjectTree.java:182)
    at com.intellij.openapi.util.objectTree.ObjectNode.execute(ObjectNode.java:107)
    at com.intellij.openapi.util.objectTree.ObjectTree.executeAll(ObjectTree.java:151)
    at com.intellij.openapi.util.Disposer.dispose(Disposer.java:129)
    at com.intellij.openapi.util.Disposer.dispose(Disposer.java:125)
    at com.intellij.ui.popup.WizardPopup.disposeAllParents(WizardPopup.java:263)
    at com.intellij.ui.popup.list.ListPopupImpl.handleNextStep(ListPopupImpl.java:444)
    at com.intellij.ui.popup.list.ListPopupImpl._handleSelect(ListPopupImpl.java:397)
    at com.intellij.ui.popup.list.ListPopupImpl.handleSelect(ListPopupImpl.java:343)
    at com.intellij.ui.popup.PopupFactoryImpl$ActionGroupPopup.handleSelect(PopupFactoryImpl.java:299)
    at com.intellij.ui.popup.list.ListPopupImpl$MyMouseListener.mouseReleased(ListPopupImpl.java:503)
    at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:290)
    at java.awt.Component.processMouseEvent(Component.java:6548)
    at javax.swing.JComponent.processMouseEvent(JComponent.java:3325)
    at com.intellij.ui.popup.list.ListPopupImpl$MyList.processMouseEvent(ListPopupImpl.java:557)
    at java.awt.Component.processEvent(Component.java:6313)
    at java.awt.Container.processEvent(Container.java:2237)
    at java.awt.Component.dispatchEventImpl(Component.java:4903)
    at java.awt.Container.dispatchEventImpl(Container.java:2295)
    at java.awt.Component.dispatchEvent(Component.java:4725)
    at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889)
    at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4526)
    at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467)
    at java.awt.Container.dispatchEventImpl(Container.java:2281)
    at java.awt.Window.dispatchEventImpl(Window.java:2746)
    at java.awt.Component.dispatchEvent(Component.java:4725)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:764)
    at java.awt.EventQueue.access$500(EventQueue.java:98)
    at java.awt.EventQueue$3.run(EventQueue.java:715)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
    at java.awt.EventQueue$4.run(EventQueue.java:737)
    at java.awt.EventQueue$4.run(EventQueue.java:735)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:734)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:719)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:664)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:363)
    at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
ice1000 commented 5 years ago

I get it! It's because when @rikvdkleij is building this project, he didn't have his "UI-Designer" plugin enabled (or incorrectly configured). If you use the distribution compiled by me (can be found in my recent pull requests, there's a lot of them and there'll be more in the near future so I'm not specifying any here), you'll have no problem.

ice1000 commented 5 years ago

@rikvdkleij Please re-check your IntelliJ IDEA configuration, did you have your UI-Designer enabled? Did you configured it to generate the UI code to "Runtime Classes"? (related documentation can be found in https://www.jetbrains.com/help/idea/gui-designer-output-options.html).

rikvdkleij commented 5 years ago

@ice1000 Great that you can reproduce this problem!!

I will check but I created that form long ago. So why is this "suddenly" a problem

rikvdkleij commented 5 years ago

Also used the same Intellij version/config for building the latest releases.

And how did you reproduce the problem?

ice1000 commented 5 years ago

@rikvdkleij I've downloaded and installed the beta release from the release page. BTW my final exams are all finished! But I'm going back to my home country tomorrow so I still won't have a lot of time this week.

You may try recompile the whole project with your IDE settings ensured.

Another possibility is, the Swing components are not working properly on Windows. Will check for this later.

ice1000 commented 5 years ago

I probably should check the decompiled classes since IntelliJ's doing bytecode injection during compiling

rikvdkleij commented 5 years ago

@ice1000 Thanks for all your work!!

But I'm going back to my home country tomorrow so I still won't have a lot of time this week.

Have a safe trip.

ice1000 commented 5 years ago

Thank you!

ice1000 commented 5 years ago

Tried the distribution compiled by me, uploaded in #358

There's no problem with creating new run configs.

rikvdkleij commented 5 years ago

@ice1000

Please re-check your IntelliJ IDEA configuration, did you have your UI-Designer enabled?

Yes,it is enabled.

rikvdkleij commented 5 years ago

And settings are also okay.

screenshot from 2018-12-15 13-05-39

ice1000 commented 5 years ago

@rikvdkleij Then it might be some IntelliJ bugs. All the zips compiled by me work like a charm.

rikvdkleij commented 5 years ago

Released beta37, hopefully this release fixes this issue.

rikvdkleij commented 5 years ago

Can someone check if my build works on Windows?

DavidHulsman commented 5 years ago

I can confirm it beta37 works again!

Sorry I haven't been able to help more. I got midterms at the end of this week, so I had to study and catch up to everything :)

rikvdkleij commented 5 years ago

I can confirm it beta37 works again!

Super! Thanks!