mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-20 05:21:29 +07:00
Merge remote-tracking branch 'origin/master'
This commit is contained in:
@@ -24,6 +24,7 @@ import com.intellij.psi.impl.source.resolve.reference.impl.PsiMultiReference;
|
||||
import com.intellij.psi.impl.source.resolve.reference.impl.providers.FileReference;
|
||||
import com.intellij.psi.impl.source.resolve.reference.impl.providers.FileReferenceOwner;
|
||||
import com.intellij.psi.impl.source.resolve.reference.impl.providers.FileReferenceSet;
|
||||
import com.intellij.psi.impl.source.resolve.reference.impl.providers.PsiFileReference;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -64,9 +65,9 @@ public class ConvertAbsolutePathToRelativeIntentionAction extends BaseIntentionA
|
||||
}
|
||||
}
|
||||
else if (original instanceof FileReferenceOwner) {
|
||||
final FileReference fileReference = ((FileReferenceOwner)original).getLastFileReference();
|
||||
if (fileReference != null) {
|
||||
return fileReference;
|
||||
final PsiFileReference fileReference = ((FileReferenceOwner)original).getLastFileReference();
|
||||
if (fileReference instanceof FileReference) {
|
||||
return (FileReference)fileReference;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -24,5 +24,5 @@ import org.jetbrains.annotations.Nullable;
|
||||
public interface FileReferenceOwner {
|
||||
|
||||
@Nullable
|
||||
FileReference getLastFileReference();
|
||||
PsiFileReference getLastFileReference();
|
||||
}
|
||||
@@ -15,7 +15,6 @@
|
||||
*/
|
||||
package com.intellij.psi.impl.source.resolve.reference.impl.providers;
|
||||
|
||||
import com.intellij.openapi.paths.PsiDynaReference;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiReference;
|
||||
@@ -55,10 +54,10 @@ public class FileReferenceUtil {
|
||||
public static PsiFile findFile(PsiReference...references) {
|
||||
for (int i = references.length - 1; i >= 0; i--) {
|
||||
PsiReference ref = references[i];
|
||||
if (ref instanceof PsiDynaReference) {
|
||||
ref = ((PsiDynaReference)ref).getLastFileReference();
|
||||
if (ref instanceof FileReferenceOwner && !(ref instanceof PsiFileReference)) {
|
||||
ref = ((FileReferenceOwner)ref).getLastFileReference();
|
||||
}
|
||||
if (ref instanceof FileReference) {
|
||||
if (ref instanceof PsiFileReference) {
|
||||
final PsiElement file = references[i].resolve();
|
||||
return file instanceof PsiFile ? (PsiFile)file : null;
|
||||
}
|
||||
@@ -67,15 +66,15 @@ public class FileReferenceUtil {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static FileReference findFileReference(@NotNull PsiElement element) {
|
||||
public static PsiFileReference 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 FileReferenceOwner && !(ref instanceof PsiFileReference)) {
|
||||
ref = ((FileReferenceOwner)ref).getLastFileReference();
|
||||
}
|
||||
if (ref instanceof FileReference) {
|
||||
return (FileReference)references[i];
|
||||
if (ref instanceof PsiFileReference) {
|
||||
return (PsiFileReference)references[i];
|
||||
}
|
||||
}
|
||||
return null;
|
||||
@@ -0,0 +1,26 @@
|
||||
/*
|
||||
* Copyright 2000-2013 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.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.intellij.psi.impl.source.resolve.reference.impl.providers;
|
||||
|
||||
import com.intellij.psi.PsiPolyVariantReference;
|
||||
|
||||
/**
|
||||
* A reference that is known to resolve to a PsiFile.
|
||||
*
|
||||
* @author yole
|
||||
*/
|
||||
public interface PsiFileReference extends PsiPolyVariantReference {
|
||||
}
|
||||
@@ -239,9 +239,9 @@ public class FilePathCompletionContributor extends CompletionContributor {
|
||||
}
|
||||
}
|
||||
else if (original instanceof FileReferenceOwner) {
|
||||
final FileReference fileReference = ((FileReferenceOwner)original).getLastFileReference();
|
||||
if (fileReference != null) {
|
||||
return Pair.create(fileReference, true);
|
||||
final PsiFileReference fileReference = ((FileReferenceOwner)original).getLastFileReference();
|
||||
if (fileReference instanceof FileReference) {
|
||||
return Pair.create((FileReference) fileReference, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.source.resolve.reference.impl.providers.FileReference;
|
||||
import com.intellij.psi.impl.source.resolve.reference.impl.providers.FileReferenceOwner;
|
||||
import com.intellij.psi.impl.source.resolve.reference.impl.providers.PsiFileReference;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
@@ -235,7 +236,7 @@ public class PsiDynaReference<T extends PsiElement> extends PsiReferenceBase<T>
|
||||
}
|
||||
|
||||
@Override
|
||||
public FileReference getLastFileReference() {
|
||||
public PsiFileReference getLastFileReference() {
|
||||
for (PsiReference reference : myReferences) {
|
||||
if (reference instanceof FileReferenceOwner) {
|
||||
return ((FileReferenceOwner)reference).getLastFileReference();
|
||||
|
||||
@@ -59,7 +59,7 @@ import java.util.List;
|
||||
/**
|
||||
* @author cdr
|
||||
*/
|
||||
public class FileReference implements FileReferenceOwner, PsiPolyVariantReference,
|
||||
public class FileReference implements PsiFileReference, FileReferenceOwner, PsiPolyVariantReference,
|
||||
QuickFixProvider<FileReference>, LocalQuickFixProvider,
|
||||
EmptyResolveMessageProvider, BindablePsiReference {
|
||||
|
||||
|
||||
@@ -20,8 +20,8 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.util.Key;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.source.resolve.reference.impl.providers.FileReference;
|
||||
import com.intellij.psi.impl.source.resolve.reference.impl.providers.FileReferenceOwner;
|
||||
import com.intellij.psi.impl.source.resolve.reference.impl.providers.PsiFileReference;
|
||||
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.containers.HashMap;
|
||||
@@ -53,7 +53,7 @@ public class FileReferenceContextUtil {
|
||||
|
||||
final PsiReference[] refs = element.getReferences();
|
||||
if (refs.length > 0 && refs[0] instanceof FileReferenceOwner) {
|
||||
final FileReference ref = ((FileReferenceOwner)refs[0]).getLastFileReference();
|
||||
final PsiFileReference ref = ((FileReferenceOwner)refs[0]).getLastFileReference();
|
||||
if (ref != null) {
|
||||
final ResolveResult[] results = ref.multiResolve(false);
|
||||
for (ResolveResult result : results) {
|
||||
@@ -120,7 +120,7 @@ public class FileReferenceContextUtil {
|
||||
PsiReference[] refs = element.getReferences();
|
||||
for (PsiReference ref : refs) {
|
||||
if (ref instanceof FileReferenceOwner) {
|
||||
final FileReference fileReference = ((FileReferenceOwner)refs[0]).getLastFileReference();
|
||||
final PsiFileReference fileReference = ((FileReferenceOwner)refs[0]).getLastFileReference();
|
||||
if (fileReference != null) {
|
||||
try {
|
||||
PsiElement newElement = fileReference.bindToElement(item);
|
||||
|
||||
@@ -35,6 +35,7 @@ import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.source.resolve.reference.impl.providers.FileReference;
|
||||
import com.intellij.psi.impl.source.resolve.reference.impl.providers.FileReferenceSet;
|
||||
import com.intellij.psi.impl.source.resolve.reference.impl.providers.FileReferenceUtil;
|
||||
import com.intellij.psi.impl.source.resolve.reference.impl.providers.PsiFileReference;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.searches.ReferencesSearch;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
@@ -313,7 +314,7 @@ public class IconsReferencesContributor extends PsiReferenceContributor implemen
|
||||
value = value.getParent();
|
||||
}
|
||||
if (value != null) {
|
||||
final FileReference reference = FileReferenceUtil.findFileReference(value);
|
||||
final PsiFileReference reference = FileReferenceUtil.findFileReference(value);
|
||||
if (reference != null) {
|
||||
consumer.process(reference);
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ package com.intellij.psi.impl.source.xml;
|
||||
import com.intellij.lang.html.HTMLLanguage;
|
||||
import com.intellij.lang.xhtml.XHTMLLanguage;
|
||||
import com.intellij.openapi.fileTypes.FileType;
|
||||
import com.intellij.openapi.fileTypes.FileTypeManager;
|
||||
import com.intellij.openapi.fileTypes.FileTypeRegistry;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.impl.source.PsiFileImpl;
|
||||
@@ -83,7 +83,7 @@ public class XmlFileImpl extends PsiFileImpl implements XmlFile {
|
||||
myType = getLanguage().getAssociatedFileType();
|
||||
if (myType == null) {
|
||||
VirtualFile virtualFile = getOriginalFile().getVirtualFile();
|
||||
myType = virtualFile == null ? FileTypeManager.getInstance().getFileTypeByFileName(getName()) : virtualFile.getFileType();
|
||||
myType = virtualFile == null ? FileTypeRegistry.getInstance().getFileTypeByFileName(getName()) : virtualFile.getFileType();
|
||||
}
|
||||
}
|
||||
return myType;
|
||||
|
||||
Reference in New Issue
Block a user