diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/FileReference.java b/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/FileReference.java index 2f743d22866a..9f7bdf2d1759 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/FileReference.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/FileReference.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2012 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. @@ -107,20 +107,25 @@ public class FileReference implements FileReferenceOwner, PsiPolyVariantReferenc @NotNull protected Collection getContexts() { final FileReference contextRef = getContextReference(); + ArrayList result = new ArrayList(); + if (contextRef == null) { Collection defaultContexts = myFileReferenceSet.getDefaultContexts(); for (PsiFileSystemItem context : defaultContexts) { LOG.assertTrue(context != null, myFileReferenceSet.getClass() + " provided a null context"); } - return defaultContexts; - } - ResolveResult[] resolveResults = contextRef.multiResolve(false); - ArrayList result = new ArrayList(); - for (ResolveResult resolveResult : resolveResults) { - if (resolveResult.getElement() != null) { - result.add((PsiFileSystemItem)resolveResult.getElement()); + result.addAll(defaultContexts); + } else { + ResolveResult[] resolveResults = contextRef.multiResolve(false); + for (ResolveResult resolveResult : resolveResults) { + if (resolveResult.getElement() != null) { + result.add((PsiFileSystemItem)resolveResult.getElement()); + } } } + + result.addAll(myFileReferenceSet.getExtraContexts()); + return result; } diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/FileReferenceSet.java b/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/FileReferenceSet.java index c52befbdd650..2d73b9b02f82 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/FileReferenceSet.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/FileReferenceSet.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2012 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. @@ -120,6 +120,10 @@ public class FileReferenceSet { return "/"; } + protected Collection getExtraContexts() { + return Collections.emptyList(); + } + public static FileReferenceSet createSet(PsiElement element, final boolean soft, boolean endingSlashNotAllowed,