diff --git a/compiler/cli/src/org/jetbrains/jet/compiler/JetCoreEnvironment.java b/compiler/cli/src/org/jetbrains/jet/compiler/JetCoreEnvironment.java index fa6bde47ce8..4b4b57e65fa 100644 --- a/compiler/cli/src/org/jetbrains/jet/compiler/JetCoreEnvironment.java +++ b/compiler/cli/src/org/jetbrains/jet/compiler/JetCoreEnvironment.java @@ -4,8 +4,10 @@ import com.intellij.core.JavaCoreEnvironment; import com.intellij.lang.java.JavaParserDefinition; import com.intellij.mock.MockApplication; import com.intellij.openapi.Disposable; +import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.jet.lang.parsing.JetParserDefinition; import org.jetbrains.jet.plugin.JetFileType; +import org.jetbrains.jet.plugin.compiler.PathUtil; /** * @author yole @@ -26,6 +28,9 @@ public class JetCoreEnvironment extends JavaCoreEnvironment { .registerExtension(new JavaElementFinder(myProject)); */ + for (VirtualFile root : PathUtil.getAltHeadersRoots()) { + addLibraryRoot(root); + } } public MockApplication getApplication() { diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/alt/AltClassFinder.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/alt/AltClassFinder.java index 46ef8648e9f..304ea47bcda 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/alt/AltClassFinder.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/alt/AltClassFinder.java @@ -6,7 +6,6 @@ package org.jetbrains.jet.lang.resolve.java.alt; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.openapi.vfs.VirtualFileManager; import com.intellij.psi.PsiClass; import com.intellij.psi.PsiClassOwner; import com.intellij.psi.PsiFile; @@ -14,27 +13,18 @@ import com.intellij.psi.PsiManager; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.plugin.compiler.PathUtil; -import java.io.File; -import java.util.ArrayList; import java.util.List; public class AltClassFinder { private static final Logger LOG = Logger.getInstance("#org.jetbrains.jet.lang.resolve.java.alt.AltClassFinder"); private final PsiManager psiManager; - private final List roots = new ArrayList(); + private final List roots; + public AltClassFinder(Project project) { psiManager = PsiManager.getInstance(project); - - File alts = PathUtil.getAltHeadersPath(); - - if (alts != null) { - for (File root : alts.listFiles()) { - VirtualFile jarRoot = VirtualFileManager.getInstance().findFileByUrl("jar://" + root.getPath() + "!/"); - roots.add(jarRoot); - } - } + this.roots = PathUtil.getAltHeadersRoots(); } public PsiClass findClass(@NotNull String qualifiedName) { diff --git a/compiler/util/src/org/jetbrains/jet/plugin/compiler/PathUtil.java b/compiler/util/src/org/jetbrains/jet/plugin/compiler/PathUtil.java index cdf588d09a4..5d15677d1e8 100644 --- a/compiler/util/src/org/jetbrains/jet/plugin/compiler/PathUtil.java +++ b/compiler/util/src/org/jetbrains/jet/plugin/compiler/PathUtil.java @@ -4,9 +4,13 @@ package org.jetbrains.jet.plugin.compiler; import com.intellij.openapi.application.PathManager; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.vfs.VirtualFileManager; import org.jetbrains.annotations.NotNull; import java.io.File; +import java.util.ArrayList; +import java.util.List; public class PathUtil { private PathUtil() {} @@ -64,4 +68,18 @@ public class PathUtil { String resourceRoot = PathManager.getResourceRoot(aClass, "/" + aClass.getName().replace('.', '/') + ".class"); return new File(resourceRoot).getAbsoluteFile().getAbsolutePath(); } + + public static List getAltHeadersRoots() { + List roots = new ArrayList(); + + File alts = getAltHeadersPath(); + + if (alts != null) { + for (File root : alts.listFiles()) { + VirtualFile jarRoot = VirtualFileManager.getInstance().findFileByUrl("jar://" + root.getPath() + "!/"); + roots.add(jarRoot); + } + } + return roots; + } }