diff --git a/docs/manual/CoreTasks/macrodef.html b/docs/manual/CoreTasks/macrodef.html index efce64230..480527ce6 100644 --- a/docs/manual/CoreTasks/macrodef.html +++ b/docs/manual/CoreTasks/macrodef.html @@ -59,7 +59,11 @@ AT this location"). The escape sequence @@{x} is used to allow @{x} to be placed in the text without substitution of x. - This corresponds to the $${x} escape sequence for properties + This corresponds to the $${x} escape sequence for properties. +

+

+ The case of the attribute is ignored, so @{myAttribute} is treated the + same as @{MyAttribute}.

Parameters

diff --git a/src/etc/testcases/taskdefs/macrodef.xml b/src/etc/testcases/taskdefs/macrodef.xml index 67e4024f3..b9fca2666 100644 --- a/src/etc/testcases/taskdefs/macrodef.xml +++ b/src/etc/testcases/taskdefs/macrodef.xml @@ -75,4 +75,15 @@ + + + + + + @{myattribute} is @{MYATTRIBUTE} + + + + + diff --git a/src/main/org/apache/tools/ant/taskdefs/MacroDef.java b/src/main/org/apache/tools/ant/taskdefs/MacroDef.java index 0cada1721..e9dee157b 100644 --- a/src/main/org/apache/tools/ant/taskdefs/MacroDef.java +++ b/src/main/org/apache/tools/ant/taskdefs/MacroDef.java @@ -57,6 +57,7 @@ package org.apache.tools.ant.taskdefs; import java.util.ArrayList; import java.util.List; import java.util.Map; +import java.util.Locale; import java.util.HashMap; import org.apache.tools.ant.AntTypeDefinition; @@ -293,7 +294,7 @@ public class MacroDef extends AntlibDefinition { throw new BuildException( "Illegal name [" + name + "] for attribute"); } - this.name = name; + this.name = name.toLowerCase(Locale.US); } /** diff --git a/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java b/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java index 4fff6dd47..639bb5d13 100644 --- a/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java +++ b/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java @@ -57,6 +57,7 @@ package org.apache.tools.ant.taskdefs; import java.util.ArrayList; import java.util.List; import java.util.Iterator; +import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.HashSet; @@ -200,7 +201,7 @@ public class MacroInstance extends Task implements DynamicConfigurator { case STATE_EXPECT_NAME: if (ch == '}') { state = STATE_NORMAL; - String name = macroName.toString(); + String name = macroName.toString().toLowerCase(Locale.US); String value = (String) macroMapping.get(name); if (value == null) { ret.append("@{" + name + "}"); diff --git a/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java b/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java index 1556134e4..73b4a1c44 100644 --- a/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java +++ b/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java @@ -103,5 +103,11 @@ public class MacroDefTest extends BuildFileTest { "double", "@{prop} is 'property', value of ${property} is 'A property value'"); } + + public void testIgnoreCase() { + expectLog( + "ignorecase", + "a is ab is b"); + } }