Make sure alt-headers actually work in "core" environment
This commit is contained in:
@@ -4,8 +4,10 @@ import com.intellij.core.JavaCoreEnvironment;
|
|||||||
import com.intellij.lang.java.JavaParserDefinition;
|
import com.intellij.lang.java.JavaParserDefinition;
|
||||||
import com.intellij.mock.MockApplication;
|
import com.intellij.mock.MockApplication;
|
||||||
import com.intellij.openapi.Disposable;
|
import com.intellij.openapi.Disposable;
|
||||||
|
import com.intellij.openapi.vfs.VirtualFile;
|
||||||
import org.jetbrains.jet.lang.parsing.JetParserDefinition;
|
import org.jetbrains.jet.lang.parsing.JetParserDefinition;
|
||||||
import org.jetbrains.jet.plugin.JetFileType;
|
import org.jetbrains.jet.plugin.JetFileType;
|
||||||
|
import org.jetbrains.jet.plugin.compiler.PathUtil;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author yole
|
* @author yole
|
||||||
@@ -26,6 +28,9 @@ public class JetCoreEnvironment extends JavaCoreEnvironment {
|
|||||||
.registerExtension(new JavaElementFinder(myProject));
|
.registerExtension(new JavaElementFinder(myProject));
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
for (VirtualFile root : PathUtil.getAltHeadersRoots()) {
|
||||||
|
addLibraryRoot(root);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public MockApplication getApplication() {
|
public MockApplication getApplication() {
|
||||||
|
|||||||
+3
-13
@@ -6,7 +6,6 @@ package org.jetbrains.jet.lang.resolve.java.alt;
|
|||||||
import com.intellij.openapi.diagnostic.Logger;
|
import com.intellij.openapi.diagnostic.Logger;
|
||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
import com.intellij.openapi.vfs.VirtualFile;
|
import com.intellij.openapi.vfs.VirtualFile;
|
||||||
import com.intellij.openapi.vfs.VirtualFileManager;
|
|
||||||
import com.intellij.psi.PsiClass;
|
import com.intellij.psi.PsiClass;
|
||||||
import com.intellij.psi.PsiClassOwner;
|
import com.intellij.psi.PsiClassOwner;
|
||||||
import com.intellij.psi.PsiFile;
|
import com.intellij.psi.PsiFile;
|
||||||
@@ -14,27 +13,18 @@ import com.intellij.psi.PsiManager;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.plugin.compiler.PathUtil;
|
import org.jetbrains.jet.plugin.compiler.PathUtil;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
public class AltClassFinder {
|
public class AltClassFinder {
|
||||||
private static final Logger LOG = Logger.getInstance("#org.jetbrains.jet.lang.resolve.java.alt.AltClassFinder");
|
private static final Logger LOG = Logger.getInstance("#org.jetbrains.jet.lang.resolve.java.alt.AltClassFinder");
|
||||||
|
|
||||||
private final PsiManager psiManager;
|
private final PsiManager psiManager;
|
||||||
private final List<VirtualFile> roots = new ArrayList<VirtualFile>();
|
private final List<VirtualFile> roots;
|
||||||
|
|
||||||
|
|
||||||
public AltClassFinder(Project project) {
|
public AltClassFinder(Project project) {
|
||||||
psiManager = PsiManager.getInstance(project);
|
psiManager = PsiManager.getInstance(project);
|
||||||
|
this.roots = PathUtil.getAltHeadersRoots();
|
||||||
File alts = PathUtil.getAltHeadersPath();
|
|
||||||
|
|
||||||
if (alts != null) {
|
|
||||||
for (File root : alts.listFiles()) {
|
|
||||||
VirtualFile jarRoot = VirtualFileManager.getInstance().findFileByUrl("jar://" + root.getPath() + "!/");
|
|
||||||
roots.add(jarRoot);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public PsiClass findClass(@NotNull String qualifiedName) {
|
public PsiClass findClass(@NotNull String qualifiedName) {
|
||||||
|
|||||||
@@ -4,9 +4,13 @@
|
|||||||
package org.jetbrains.jet.plugin.compiler;
|
package org.jetbrains.jet.plugin.compiler;
|
||||||
|
|
||||||
import com.intellij.openapi.application.PathManager;
|
import com.intellij.openapi.application.PathManager;
|
||||||
|
import com.intellij.openapi.vfs.VirtualFile;
|
||||||
|
import com.intellij.openapi.vfs.VirtualFileManager;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class PathUtil {
|
public class PathUtil {
|
||||||
private PathUtil() {}
|
private PathUtil() {}
|
||||||
@@ -64,4 +68,18 @@ public class PathUtil {
|
|||||||
String resourceRoot = PathManager.getResourceRoot(aClass, "/" + aClass.getName().replace('.', '/') + ".class");
|
String resourceRoot = PathManager.getResourceRoot(aClass, "/" + aClass.getName().replace('.', '/') + ".class");
|
||||||
return new File(resourceRoot).getAbsoluteFile().getAbsolutePath();
|
return new File(resourceRoot).getAbsoluteFile().getAbsolutePath();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static List<VirtualFile> getAltHeadersRoots() {
|
||||||
|
List<VirtualFile> roots = new ArrayList<VirtualFile>();
|
||||||
|
|
||||||
|
File alts = getAltHeadersPath();
|
||||||
|
|
||||||
|
if (alts != null) {
|
||||||
|
for (File root : alts.listFiles()) {
|
||||||
|
VirtualFile jarRoot = VirtualFileManager.getInstance().findFileByUrl("jar://" + root.getPath() + "!/");
|
||||||
|
roots.add(jarRoot);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return roots;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user