mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Cleanup (better API for overriding PSI factory)
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user