From 34f882c4b9564bf2cd1def32d493d58dca46d086 Mon Sep 17 00:00:00 2001 From: Konstantin Bulenkov Date: Tue, 29 May 2012 15:39:16 +0200 Subject: [PATCH] find file reference by element --- .../impl/providers/FileReferenceUtil.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/FileReferenceUtil.java b/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/FileReferenceUtil.java index f401c935a18e..e80ee0db5ca3 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/FileReferenceUtil.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/FileReferenceUtil.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2010 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. @@ -19,6 +19,7 @@ import com.intellij.openapi.paths.PsiDynaReference; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; import com.intellij.psi.PsiReference; +import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; /** @@ -64,4 +65,19 @@ public class FileReferenceUtil { } return null; } + + @Nullable + public static FileReference findFileReference(@NotNull PsiElement element) { + final PsiReference[] references = element.getReferences(); + for (int i = references.length - 1; i >= 0; i--) { + PsiReference ref = references[i]; + if (ref instanceof PsiDynaReference) { + ref = ((PsiDynaReference)ref).getLastFileReference(); + } + if (ref instanceof FileReference) { + return (FileReference)references[i]; + } + } + return null; + } }