diff --git a/WHATSNEW b/WHATSNEW
index 92a708c3b..3b8a0fa3e 100644
--- a/WHATSNEW
+++ b/WHATSNEW
@@ -48,6 +48,8 @@ Fixed bugs:
* SQL task did not work with Informix IDS 9.2. Bugzilla Report 27162.
+* MacroDef did not allow attributes named 'description'. Bugzilla Report 27175.
+
Other changes:
--------------
diff --git a/src/etc/testcases/taskdefs/macrodef.xml b/src/etc/testcases/taskdefs/macrodef.xml
index b8780fa82..b64418c72 100644
--- a/src/etc/testcases/taskdefs/macrodef.xml
+++ b/src/etc/testcases/taskdefs/macrodef.xml
@@ -156,4 +156,16 @@
+
+
+
+
+
+
+ description is @{description}
+
+
+
+
+
diff --git a/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java b/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java
index dfc3e9db5..e6634e11c 100644
--- a/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java
+++ b/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java
@@ -282,6 +282,9 @@ public class MacroInstance extends Task implements DynamicConfigurator {
for (Iterator i = macroDef.getAttributes().iterator(); i.hasNext();) {
MacroDef.Attribute attribute = (MacroDef.Attribute) i.next();
String value = (String) map.get(attribute.getName());
+ if (value == null && "description".equals(attribute.getName())) {
+ value = getDescription();
+ }
if (value == null) {
value = attribute.getDefault();
value = macroSubs(value, localProperties);
diff --git a/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java b/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java
index 5bd24d879..dfbdd3998 100644
--- a/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java
+++ b/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java
@@ -104,5 +104,10 @@ public class MacroDefTest extends BuildFileTest {
"escape",
"a@b or a@b is avalue@bvalue");
}
+ public void testAttributeDescription() {
+ expectLog(
+ "attribute.description",
+ "description is hello world");
+ }
}