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

Refactorings and Typecheckerstate behave incoherently which may lead to an NPE #15

Closed
sxhya opened this issue Jan 22, 2018 · 0 comments
Closed

Comments

@sxhya
Copy link
Collaborator

sxhya commented Jan 22, 2018

To reproduce on vclang-lib library:

  • typecheck "Trunc.vc";
  • rename some function lying in different module, say rename "Pointed" from Spheres.vc to "PointedType" using Shift+F6;
  • open Spheres.vc and notice that typechecker state is incorrect (i.e. icons that vizualize it are little green circles while in reality they all should have been reset);
  • try to modify the contents of the definition of PointedType in any way;
  • get an NPE as below:

Element class com.intellij.psi.impl.source.tree.CompositeElement of type DEF_FUNCTION (class org.vclang.psi.stubs.VcDefFunctionStub$Type)
com.intellij.psi.PsiInvalidElementAccessException: Element class com.intellij.psi.impl.source.tree.CompositeElement of type DEF_FUNCTION (class org.vclang.psi.stubs.VcDefFunctionStub$Type)
at com.intellij.psi.PsiInvalidElementAccessException.createByNode(PsiInvalidElementAccessException.java:96)
at com.intellij.psi.impl.source.SubstrateRef$2.getContainingFile(SubstrateRef.java:101)
at com.intellij.extapi.psi.StubBasedPsiElementBase.getContainingFile(StubBasedPsiElementBase.java:275)
at org.vclang.typechecking.TypeCheckingServiceImpl$VcSourceInfoProvider.sourceOf(TypeCheckingService.kt:272)
at org.vclang.typechecking.TypeCheckingServiceImpl$VcSourceInfoProvider.sourceOf(TypeCheckingService.kt:265)
at com.jetbrains.jetpad.vclang.module.caching.sourceless.CacheSourceInfoProvider.sourceOf(CacheSourceInfoProvider.java:18)
at com.jetbrains.jetpad.vclang.module.caching.LocalizedTypecheckerState.getLocal(LocalizedTypecheckerState.java:41)
at com.jetbrains.jetpad.vclang.module.caching.LocalizedTypecheckerState.reset(LocalizedTypecheckerState.java:54)
at com.jetbrains.jetpad.vclang.typechecking.order.DependencyCollector.update(DependencyCollector.java:55)
at org.vclang.typechecking.TypeCheckingServiceImpl$TypeCheckerPsiTreeChangeListener.processParent(TypeCheckingService.kt:242)
at org.vclang.typechecking.TypeCheckingServiceImpl$TypeCheckerPsiTreeChangeListener.beforeChildReplacement(TypeCheckingService.kt:226)
at com.intellij.psi.impl.PsiManagerImpl.fireEvent(PsiManagerImpl.java:386)
at com.intellij.psi.impl.PsiManagerImpl.beforeChildReplacement(PsiManagerImpl.java:257)
at com.intellij.psi.impl.source.text.DiffLog$ReplaceEntry.doActualPsiChange(DiffLog.java:115)
at com.intellij.psi.impl.source.text.DiffLog.performActualPsiChange(DiffLog.java:54)
at com.intellij.psi.impl.DocumentCommitThread$2.runInner(DocumentCommitThread.java:871)
at com.intellij.pom.impl.PomTransactionBase.run(PomTransactionBase.java:46)
at com.intellij.pom.core.impl.PomModelImpl.runTransaction(PomModelImpl.java:158)
at com.intellij.psi.impl.DocumentCommitThread.lambda$doActualPsiChange$8(DocumentCommitThread.java:868)
at com.intellij.psi.impl.source.codeStyle.CodeStyleManagerImpl.lambda$performActionWithFormatterDisabled$5(CodeStyleManagerImpl.java:676)
at com.intellij.psi.impl.source.PostprocessReformattingAspect.disablePostprocessFormattingInside(PostprocessReformattingAspect.java:116)
at com.intellij.psi.impl.source.codeStyle.CodeStyleManagerImpl.lambda$performActionWithFormatterDisabled$7(CodeStyleManagerImpl.java:705)
at com.intellij.formatting.FormatterImpl.runWithFormattingDisabled(FormatterImpl.java:903)
at com.intellij.psi.impl.source.codeStyle.CodeStyleManagerImpl.performActionWithFormatterDisabled(CodeStyleManagerImpl.java:703)
at com.intellij.psi.impl.source.codeStyle.CodeStyleManagerImpl.performActionWithFormatterDisabled(CodeStyleManagerImpl.java:675)
at com.intellij.psi.impl.DocumentCommitThread.doActualPsiChange(DocumentCommitThread.java:855)
at com.intellij.psi.impl.DocumentCommitThread.lambda$doCommit$7(DocumentCommitThread.java:774)
at com.intellij.psi.impl.PsiDocumentManagerBase.commitToExistingPsi(PsiDocumentManagerBase.java:399)
at com.intellij.psi.impl.PsiDocumentManagerBase.finishCommitInWriteAction(PsiDocumentManagerBase.java:375)
at com.intellij.psi.impl.PsiDocumentManagerImpl.finishCommitInWriteAction(PsiDocumentManagerImpl.java:145)
at com.intellij.psi.impl.PsiDocumentManagerBase$3.run(PsiDocumentManagerBase.java:333)
at com.intellij.openapi.application.impl.ApplicationImpl.runWriteAction(ApplicationImpl.java:1031)
at com.intellij.psi.impl.PsiDocumentManagerBase.finishCommit(PsiDocumentManagerBase.java:340)
at com.intellij.psi.impl.DocumentCommitThread.lambda$createEdtRunnable$5(DocumentCommitThread.java:592)
at com.intellij.openapi.application.TransactionGuardImpl.runSyncTransaction(TransactionGuardImpl.java:86)
at com.intellij.openapi.application.TransactionGuardImpl.lambda$submitTransaction$1(TransactionGuardImpl.java:109)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.runNextEvent(LaterInvocator.java:416)
at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:399)
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:821)
at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:649)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:365)
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)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants