NullPointerException while editing

Issue #468 resolved
Kamil Pilarski created an issue

Hi, I encountered a NullPointerException while editing an Apex class. I don't remember what I was doing exactly when it happened, but here is an extract from logs:

2016-11-16 10:12:33,814 [3855167]   WARN - ntellij.psi.impl.ApexTypeMixin - The type element is invalid. Returning a null expression type. 
2016-11-16 10:12:33,815 [3855168]  ERROR - llij.ide.plugins.PluginManager - null 
java.lang.NullPointerException
    at com.illuminatedcloud.intellij.psi.impl.ApexInvokableDeclarationMixin$1$1.fun(SourceFile:156)
    at com.illuminatedcloud.intellij.psi.impl.ApexInvokableDeclarationMixin$1$1.fun(SourceFile:141)
    at com.intellij.openapi.util.text.StringUtil.join(StringUtil.java:1521)
    at com.intellij.openapi.util.text.StringUtil.join(StringUtil.java:1499)
    at com.illuminatedcloud.intellij.psi.impl.ApexInvokableDeclarationMixin$1.compute(SourceFile:140)
    at com.intellij.psi.util.CachedValuesManager$1.compute(CachedValuesManager.java:137)
    at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:49)
    at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:222)
    at com.intellij.psi.impl.PsiCachedValue.getValueWithLock(PsiCachedValue.java:65)
    at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:38)
    at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:130)
    at com.illuminatedcloud.intellij.psi.impl.ApexInvokableDeclarationMixin.getParametersPresentableText(SourceFile:130)
    at com.illuminatedcloud.intellij.psi.impl.ApexInvokableDeclarationMixin.getPresentableText(SourceFile:113)
    at com.illuminatedcloud.intellij.psi.impl.ApexInvokableDeclarationMixin.getPresentableText(SourceFile:104)
    at com.intellij.navigation.DelegatingItemPresentation.getPresentableText(DelegatingItemPresentation.java:58)
    at com.intellij.ide.projectView.PresentationData.updateFrom(PresentationData.java:185)
    at com.intellij.ide.util.treeView.smartTree.TreeElementWrapper.update(TreeElementWrapper.java:41)
    at com.intellij.ide.util.treeView.PresentableNodeDescriptor.getUpdatedPresentation(PresentableNodeDescriptor.java:88)
    at com.intellij.ide.util.treeView.PresentableNodeDescriptor.update(PresentableNodeDescriptor.java:41)
    at com.intellij.ide.util.treeView.AbstractTreeBuilder.updateNodeDescriptor(AbstractTreeBuilder.java:569)
    at com.intellij.ide.util.treeView.AbstractTreeUi$22.perform(AbstractTreeUi.java:932)
    at com.intellij.ide.util.treeView.TreeRunnable.run(TreeRunnable.java:36)
    at com.intellij.ide.util.treeView.AbstractTreeUi.execute(AbstractTreeUi.java:1835)
    at com.intellij.ide.util.treeView.AbstractTreeUi.update(AbstractTreeUi.java:928)
    at com.intellij.ide.util.treeView.AbstractTreeUi.update(AbstractTreeUi.java:883)
    at com.intellij.ide.util.treeView.AbstractTreeUi.processExistingNode(AbstractTreeUi.java:3008)
    at com.intellij.ide.util.treeView.AbstractTreeUi.access$4800(AbstractTreeUi.java:64)
    at com.intellij.ide.util.treeView.AbstractTreeUi$32$1.run(AbstractTreeUi.java:1719)
    at com.intellij.ide.util.treeView.AbstractTreeUi.execute(AbstractTreeUi.java:1814)
    at com.intellij.ide.util.treeView.AbstractTreeUi.access$5100(AbstractTreeUi.java:64)
    at com.intellij.ide.util.treeView.AbstractTreeUi$33.perform(AbstractTreeUi.java:1780)
    at com.intellij.ide.util.treeView.TreeRunnable.run(TreeRunnable.java:36)
    at com.intellij.ide.util.treeView.AbstractTreeUi.executeYieldingRequest(AbstractTreeUi.java:2084)
    at com.intellij.ide.util.treeView.AbstractTreeUi.access$5700(AbstractTreeUi.java:64)
    at com.intellij.ide.util.treeView.AbstractTreeUi$36$1.perform(AbstractTreeUi.java:1981)
    at com.intellij.ide.util.treeView.TreeRunnable.run(TreeRunnable.java:36)
    at com.intellij.ide.util.treeView.AbstractTreeBuilder.runOnYeildingDone(AbstractTreeBuilder.java:425)
    at com.intellij.ide.util.treeView.AbstractTreeUi.runOnYieldingDone(AbstractTreeUi.java:2179)
    at com.intellij.ide.util.treeView.AbstractTreeUi$36.perform(AbstractTreeUi.java:1976)
    at com.intellij.ide.util.treeView.TreeRunnable.run(TreeRunnable.java:36)
    at com.intellij.ide.util.treeView.AbstractTreeBuilder.lambda$new$0(AbstractTreeBuilder.java:51)
    at com.intellij.util.containers.TransferToEDTQueue.processNext(TransferToEDTQueue.java:99)
    at com.intellij.util.containers.TransferToEDTQueue.access$300(TransferToEDTQueue.java:37)
    at com.intellij.util.containers.TransferToEDTQueue$1.run(TransferToEDTQueue.java:58)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:709)
    at java.awt.EventQueue$3.run(EventQueue.java:703)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
    at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:843)
    at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:679)
    at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:391)
    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)
2016-11-16 10:12:33,818 [3855171]  ERROR - llij.ide.plugins.PluginManager - IntelliJ IDEA (Community Edition) 2016.3 EAP  Build #IC-163.7743.17 
2016-11-16 10:12:33,818 [3855171]  ERROR - llij.ide.plugins.PluginManager - JDK: 1.8.0_91 
2016-11-16 10:12:33,818 [3855171]  ERROR - llij.ide.plugins.PluginManager - VM: Java HotSpot(TM) 64-Bit Server VM 
2016-11-16 10:12:33,818 [3855171]  ERROR - llij.ide.plugins.PluginManager - Vendor: Oracle Corporation 
2016-11-16 10:12:33,818 [3855171]  ERROR - llij.ide.plugins.PluginManager - OS: Windows 7 
2016-11-16 10:12:33,818 [3855171]  ERROR - llij.ide.plugins.PluginManager - Last Action: EditorDeleteLine 

I can still work as usual, the exception didn't interrupt anything, but I thought you might want to have a look at that.

Comments (2)

  1. Scott Wells repo owner

    Thanks, Kamil. The NPE here is because it's not able to determine the type of a method parameter when showing a method completion. I've implemented a workaround to gracefully degrade to Object, but if you do happen to reproduce it and can figure out which method it causing the issue, that would allow me to provide a proper fix so that the presented method signature is accurate. Not a big thing if you can't, of course.

    I'll have the workaround/fix in the next build either way. Thanks again for providing the stack trace from the log!

  2. Log in to comment