use of com.intellij.lang.ant.quickfix.AntChangeContextLocalFix in project intellij-community by JetBrains.
the class AntResolveInspection method checkReferences.
private static void checkReferences(final XmlElement xmlElement, @NonNls final DomElementAnnotationHolder holder, DomElement domElement) {
if (xmlElement == null) {
return;
}
Set<PsiReference> processed = null;
// to be initialized lazily
Collection<PropertiesFile> propertyFiles = null;
for (final PsiReference ref : xmlElement.getReferences()) {
if (!(ref instanceof AntDomReference)) {
continue;
}
final AntDomReference antDomRef = (AntDomReference) ref;
if (antDomRef.shouldBeSkippedByAnnotator()) {
continue;
}
if (processed != null && processed.contains(ref)) {
continue;
}
if (!isResolvable(ref)) {
final List<LocalQuickFix> quickFixList = new SmartList<>();
quickFixList.add(new AntChangeContextLocalFix());
if (ref instanceof AntDomPropertyReference) {
final String canonicalText = ref.getCanonicalText();
quickFixList.add(new AntCreatePropertyFix(canonicalText, null));
final PsiFile containingFile = xmlElement.getContainingFile();
if (containingFile != null) {
if (propertyFiles == null) {
propertyFiles = getPropertyFiles(AntSupport.getAntDomProject(containingFile), xmlElement);
}
for (PropertiesFile propertyFile : propertyFiles) {
quickFixList.add(new AntCreatePropertyFix(canonicalText, propertyFile));
}
}
} else if (ref instanceof AntDomTargetReference) {
quickFixList.add(new AntCreateTargetFix(ref.getCanonicalText()));
}
holder.createProblem(domElement, ProblemHighlightType.LIKE_UNKNOWN_SYMBOL, antDomRef.getUnresolvedMessagePattern(), ref.getRangeInElement(), quickFixList.toArray((new LocalQuickFix[quickFixList.size()])));
if (ref instanceof AntDomFileReference) {
if (processed == null) {
processed = new HashSet<>();
}
ContainerUtil.addAll(processed, ((AntDomFileReference) ref).getFileReferenceSet().getAllReferences());
}
}
}
}
Aggregations