Cleanup (better API for overriding PSI factory)

This commit is contained in:
Roman Shevchenko
2016-03-04 10:45:33 +01:00
parent 32eff0c35c
commit 867a3990c7
2 changed files with 19 additions and 3 deletions
@@ -63,6 +63,7 @@ import com.intellij.psi.util.CachedValuesManager;
import com.intellij.psi.util.PsiUtil;
import com.intellij.reference.SoftReference;
import com.intellij.util.ArrayUtil;
import com.intellij.util.Function;
import com.intellij.util.IncorrectOperationException;
import com.intellij.util.cls.ClsFormatException;
import org.jetbrains.annotations.NonNls;
@@ -582,6 +583,18 @@ public class ClsFileImpl extends ClsRepositoryPsiElement<PsiClassHolderFileStub>
@Nullable
public static PsiJavaFileStub buildFileStub(@NotNull VirtualFile file, @NotNull byte[] bytes) throws ClsFormatException {
return buildFileStub(file, bytes, new Function<String, PsiJavaFileStub>() {
@Override
public PsiJavaFileStub fun(String packageName) {
return new PsiJavaFileStubImpl(packageName, true);
}
});
}
@Nullable
public static PsiJavaFileStub buildFileStub(@NotNull VirtualFile file,
@NotNull byte[] bytes,
@NotNull Function<String, PsiJavaFileStub> stubBuilder) throws ClsFormatException {
try {
if (ClassFileViewProvider.isInnerClass(file, bytes)) {
return null;
@@ -590,7 +603,7 @@ public class ClsFileImpl extends ClsRepositoryPsiElement<PsiClassHolderFileStub>
ClassReader reader = new ClassReader(bytes);
String className = file.getNameWithoutExtension();
String packageName = getPackageName(reader.getClassName());
PsiJavaFileStubImpl stub = new PsiJavaFileStubImpl(packageName, true);
PsiJavaFileStub stub = stubBuilder.fun(packageName);
try {
StubBuildingVisitor<VirtualFile> visitor = new StubBuildingVisitor<VirtualFile>(file, STRATEGY, stub, 0, className);
@@ -1,5 +1,5 @@
/*
* Copyright 2000-2015 JetBrains s.r.o.
* Copyright 2000-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -26,5 +26,8 @@ public interface PsiJavaFileStub extends PsiClassHolderFileStub<PsiJavaFile> {
String getPackageName();
boolean isCompiled();
StubPsiFactory getPsiFactory();
/** @deprecated override {@link #getPsiFactory()} instead (to be removed in IDEA 17) */
@SuppressWarnings("unused")
void setPsiFactory(StubPsiFactory factory);
}
}