mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
support for references in "target" attribute for "ant" task
target resolve algorithm updated: targets from top-level file always override imported ones
This commit is contained in:
@@ -71,12 +71,23 @@ class AntDomTargetReference extends AntDomReferenceBase implements BindablePsiRe
|
||||
final TargetResolver.Result result = doResolve(null);
|
||||
if (result != null) {
|
||||
final Map<String, AntDomTarget> variants = result.getVariants();
|
||||
String newName = null;
|
||||
for (Map.Entry<String, AntDomTarget> entry : variants.entrySet()) {
|
||||
if (pointingToTarget.equals(entry.getValue())) {
|
||||
handleElementRename(entry.getKey());
|
||||
break;
|
||||
final String candidate = entry.getKey();
|
||||
if (newName == null) {
|
||||
newName = candidate;
|
||||
}
|
||||
else {
|
||||
if (candidate.length() < newName.length()) {
|
||||
newName = candidate; // prefer shorter names
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (newName != null) {
|
||||
handleElementRename(newName);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
package com.intellij.lang.ant.dom;
|
||||
|
||||
import com.intellij.lang.ant.AntSupport;
|
||||
import com.intellij.openapi.util.Comparing;
|
||||
import com.intellij.openapi.util.Pair;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiFileSystemItem;
|
||||
@@ -116,17 +117,12 @@ public abstract class PropertyProviderFinder extends AntDomRecursiveVisitor {
|
||||
break;
|
||||
|
||||
default:
|
||||
if (!myTargetsResolveMap.containsKey(declaredTargetName)) {
|
||||
effectiveTargetName = declaredTargetName;
|
||||
}
|
||||
else {
|
||||
duplicateTargetFound(myTargetsResolveMap.get(declaredTargetName), target, declaredTargetName);
|
||||
}
|
||||
effectiveTargetName = declaredTargetName;
|
||||
break;
|
||||
}
|
||||
if (effectiveTargetName != null) {
|
||||
final AntDomTarget existingTarget = myTargetsResolveMap.get(effectiveTargetName);
|
||||
if (existingTarget != null) {
|
||||
if (existingTarget != null && Comparing.equal(existingTarget.getAntProject(), target.getAntProject())) {
|
||||
duplicateTargetFound(existingTarget, target, effectiveTargetName);
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<project default="<error>aaa</error>">
|
||||
<target name="test">
|
||||
<ant antfile="../<error>test</error>/build.xml" target="all" inheritall="false">
|
||||
<ant antfile="../<error>test</error>/build.xml" target="<error>all</error>" inheritall="false">
|
||||
<property name="build.dir" value="${build.dir}/test" />
|
||||
</ant>
|
||||
</target>
|
||||
|
||||
Reference in New Issue
Block a user