Prevent recursion when computing parameter list of KtLightMethod (part 2)

Use ClsWrapperStubPsiFactory when building light classes for decompiled kotlin classes
This commit is contained in:
Pavel V. Talanov
2016-02-03 19:24:27 +03:00
parent 5f037d372d
commit abcdae8e69
2 changed files with 2 additions and 1 deletions
@@ -29,7 +29,7 @@ import com.intellij.psi.stubs.StubElement;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
class ClsWrapperStubPsiFactory extends StubPsiFactory { public class ClsWrapperStubPsiFactory extends StubPsiFactory {
public static final Key<LightElementOrigin> ORIGIN = Key.create("ORIGIN"); public static final Key<LightElementOrigin> ORIGIN = Key.create("ORIGIN");
private final StubPsiFactory delegate = new ClsStubPsiFactory(); private final StubPsiFactory delegate = new ClsStubPsiFactory();
@@ -331,6 +331,7 @@ class IDELightClassGenerationSupport(private val project: Project) : LightClassG
correspondingClassOrObject: KtClassOrObject? correspondingClassOrObject: KtClassOrObject?
): ClsClassImpl? { ): ClsClassImpl? {
val javaFileStub = ClsJavaStubByVirtualFileCache.getInstance(project).get(classFile) ?: return null val javaFileStub = ClsJavaStubByVirtualFileCache.getInstance(project).get(classFile) ?: return null
javaFileStub.psiFactory = ClsWrapperStubPsiFactory()
val manager = PsiManager.getInstance(mirrorFile.project) val manager = PsiManager.getInstance(mirrorFile.project)
val fakeFile = object : ClsFileImpl(ClassFileViewProvider(manager, classFile)) { val fakeFile = object : ClsFileImpl(ClassFileViewProvider(manager, classFile)) {
override fun getNavigationElement(): PsiElement { override fun getNavigationElement(): PsiElement {