store cached Java file stub in the userdata of a JetFile (project specific), not of VirtualFile (app global)
This commit is contained in:
+6
-4
@@ -379,7 +379,7 @@ public class IDELightClassGenerationSupport extends LightClassGenerationSupport
|
|||||||
@NotNull VirtualFile virtualFile,
|
@NotNull VirtualFile virtualFile,
|
||||||
@Nullable final JetClassOrObject decompiledClassOrObject
|
@Nullable final JetClassOrObject decompiledClassOrObject
|
||||||
) {
|
) {
|
||||||
final PsiJavaFileStubImpl javaFileStub = getOrCreateJavaFileStub(virtualFile);
|
final PsiJavaFileStubImpl javaFileStub = getOrCreateJavaFileStub(decompiledKotlinFile, virtualFile);
|
||||||
if (javaFileStub == null) {
|
if (javaFileStub == null) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -423,15 +423,17 @@ public class IDELightClassGenerationSupport extends LightClassGenerationSupport
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private static PsiJavaFileStubImpl getOrCreateJavaFileStub(@NotNull VirtualFile virtualFile) {
|
private static PsiJavaFileStubImpl getOrCreateJavaFileStub(
|
||||||
CachedJavaStub cachedJavaStub = virtualFile.getUserData(cachedJavaStubKey);
|
@NotNull JetFile decompiledKotlinFile,
|
||||||
|
@NotNull VirtualFile virtualFile) {
|
||||||
|
CachedJavaStub cachedJavaStub = decompiledKotlinFile.getUserData(cachedJavaStubKey);
|
||||||
long fileModificationStamp = virtualFile.getModificationStamp();
|
long fileModificationStamp = virtualFile.getModificationStamp();
|
||||||
if (cachedJavaStub != null && cachedJavaStub.modificationStamp == fileModificationStamp) {
|
if (cachedJavaStub != null && cachedJavaStub.modificationStamp == fileModificationStamp) {
|
||||||
return cachedJavaStub.javaFileStub;
|
return cachedJavaStub.javaFileStub;
|
||||||
}
|
}
|
||||||
PsiJavaFileStubImpl stub = (PsiJavaFileStubImpl) createStub(virtualFile);
|
PsiJavaFileStubImpl stub = (PsiJavaFileStubImpl) createStub(virtualFile);
|
||||||
if (stub != null) {
|
if (stub != null) {
|
||||||
virtualFile.putUserData(cachedJavaStubKey, new CachedJavaStub(fileModificationStamp, stub));
|
decompiledKotlinFile.putUserData(cachedJavaStubKey, new CachedJavaStub(fileModificationStamp, stub));
|
||||||
}
|
}
|
||||||
return stub;
|
return stub;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user