From 19eea4bf4ed55da4197904ea166c39f61fc15a6c Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Thu, 27 Aug 2015 19:41:56 +0200 Subject: [PATCH] store cached Java file stub in the userdata of a JetFile (project specific), not of VirtualFile (app global) --- .../caches/resolve/IDELightClassGenerationSupport.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.java b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.java index d6562051d9c..62253788fd4 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.java +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/IDELightClassGenerationSupport.java @@ -379,7 +379,7 @@ public class IDELightClassGenerationSupport extends LightClassGenerationSupport @NotNull VirtualFile virtualFile, @Nullable final JetClassOrObject decompiledClassOrObject ) { - final PsiJavaFileStubImpl javaFileStub = getOrCreateJavaFileStub(virtualFile); + final PsiJavaFileStubImpl javaFileStub = getOrCreateJavaFileStub(decompiledKotlinFile, virtualFile); if (javaFileStub == null) { return null; } @@ -423,15 +423,17 @@ public class IDELightClassGenerationSupport extends LightClassGenerationSupport } @Nullable - private static PsiJavaFileStubImpl getOrCreateJavaFileStub(@NotNull VirtualFile virtualFile) { - CachedJavaStub cachedJavaStub = virtualFile.getUserData(cachedJavaStubKey); + private static PsiJavaFileStubImpl getOrCreateJavaFileStub( + @NotNull JetFile decompiledKotlinFile, + @NotNull VirtualFile virtualFile) { + CachedJavaStub cachedJavaStub = decompiledKotlinFile.getUserData(cachedJavaStubKey); long fileModificationStamp = virtualFile.getModificationStamp(); if (cachedJavaStub != null && cachedJavaStub.modificationStamp == fileModificationStamp) { return cachedJavaStub.javaFileStub; } PsiJavaFileStubImpl stub = (PsiJavaFileStubImpl) createStub(virtualFile); if (stub != null) { - virtualFile.putUserData(cachedJavaStubKey, new CachedJavaStub(fileModificationStamp, stub)); + decompiledKotlinFile.putUserData(cachedJavaStubKey, new CachedJavaStub(fileModificationStamp, stub)); } return stub; }