Java 类com.intellij.psi.stubs.PsiFileStubImpl 实例源码
项目:consulo-java
文件:ClsFileImpl.java
@Override
public void onContentReload()
{
ApplicationManager.getApplication().assertWriteAccessAllowed();
synchronized(myStubLock)
{
StubTree stubTree = SoftReference.dereference(myStub);
myStub = null;
if(stubTree != null)
{
//noinspection unchecked
((PsiFileStubImpl) stubTree.getRoot()).clearPsi("cls onContentReload");
}
}
synchronized(myMirrorLock)
{
putUserData(CLS_DOCUMENT_LINK_KEY, null);
myMirrorFileElement = null;
myPackageStatement = null;
}
}
项目:consulo
文件:SubstrateRef.java
private PsiFile reportError(StubElement stub) {
ApplicationManager.getApplication().assertReadAccessAllowed();
String reason = ((PsiFileStubImpl<?>)stub).getInvalidationReason();
PsiInvalidElementAccessException exception =
new PsiInvalidElementAccessException(myStub.getPsi(), "no psi for file stub " + stub + ", invalidation reason=" + reason, null);
if (PsiFileImpl.STUB_PSI_MISMATCH.equals(reason)) {
// we're between finding stub-psi mismatch and the next EDT spot where the file is reparsed and stub rebuilt
// see com.intellij.psi.impl.source.PsiFileImpl.rebuildStub()
// most likely it's just another highlighting thread accessing the same PSI concurrently and not yet canceled, so cancel it
throw new ProcessCanceledException(exception);
}
throw exception;
}
项目:consulo
文件:FileTrees.java
FileTrees clearStub(@Nonnull String reason) {
StubTree stubHolder = derefStub();
if (stubHolder != null) {
((PsiFileStubImpl<?>)stubHolder.getRoot()).clearPsi(reason);
}
return new FileTrees(null, myTreeElementPointer, astLoaded, useStrongRefs);
}