Passing virtual file instead of whole JetLightClass

This commit is contained in:
Andrey Breslav
2012-12-20 19:00:15 +04:00
parent 034cd8844e
commit 0fddc92a64
2 changed files with 9 additions and 5 deletions
@@ -22,6 +22,7 @@ import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Comparing;
import com.intellij.openapi.util.Key;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.*;
import com.intellij.psi.impl.PsiClassImplUtil;
import com.intellij.psi.impl.java.stubs.PsiClassStub;
@@ -210,7 +211,9 @@ public class JetLightClass extends AbstractLightClass implements JetJavaMirrorMa
try {
GenerationState state = new GenerationState(project, builderFactory, context.getBindingContext(), Collections.singletonList(file));
GenerationStrategy strategy = new LightClassGenerationStrategy(this, stubStack, answer);
VirtualFile virtualFile = file.getVirtualFile();
assert virtualFile != null;
GenerationStrategy strategy = new LightClassGenerationStrategy(virtualFile, stubStack, answer);
strategy.compileCorrectFiles(state, CompilationErrorHandler.THROW_EXCEPTION);
state.getFactory().files();
@@ -17,6 +17,7 @@
package org.jetbrains.jet.asJava;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.ClassFileViewProvider;
import com.intellij.psi.PsiManager;
import com.intellij.psi.impl.PsiManagerImpl;
@@ -39,10 +40,10 @@ class LightClassGenerationStrategy extends GenerationStrategy {
private final Stack<StubElement> stubStack;
private final PsiJavaFileStubImpl answer;
private final JetLightClass theClass;
private final VirtualFile virtualFile;
public LightClassGenerationStrategy(JetLightClass aClass, Stack<StubElement> stubStack, PsiJavaFileStubImpl answer) {
this.theClass = aClass;
public LightClassGenerationStrategy(@NotNull VirtualFile virtualFile, Stack<StubElement> stubStack, PsiJavaFileStubImpl answer) {
this.virtualFile = virtualFile;
this.stubStack = stubStack;
this.answer = answer;
}
@@ -59,7 +60,7 @@ class LightClassGenerationStrategy extends GenerationStrategy {
answer.setPsiFactory(new ClsWrapperStubPsiFactory());
final ClsFileImpl fakeFile =
new ClsFileImpl((PsiManagerImpl) manager, new ClassFileViewProvider(manager, theClass.getFile().getVirtualFile())) {
new ClsFileImpl((PsiManagerImpl) manager, new ClassFileViewProvider(manager, virtualFile)) {
@NotNull
@Override
public PsiClassHolderFileStub getStub() {