peterreilly 2004/02/19 03:01:20
Modified: . WHATSNEW
src/main/org/apache/tools/ant/taskdefs MacroInstance.java
src/etc/testcases/taskdefs macrodef.xml
src/testcases/org/apache/tools/ant/taskdefs
MacroDefTest.java
Log:
fix for macrodef broken @@ escape handling
PR: 27069
Reported by: Daniel Spilker
Revision Changes Path
1.546 +2 -0 ant/WHATSNEW
Index: WHATSNEW
===================================================================
RCS file: /home/cvs/ant/WHATSNEW,v
retrieving revision 1.545
retrieving revision 1.546
diff -u -r1.545 -r1.546
--- WHATSNEW 17 Feb 2004 15:48:17 -0000 1.545
+++ WHATSNEW 19 Feb 2004 11:01:20 -0000 1.546
@@ -19,6 +19,8 @@
* subant haltonfailure=false did not catch all failures. Bugzilla Report
27007.
+* macrodef @@ escaping was broken. Bugzilla Report 27069.
+
Other changes:
--------------
1.23 +2 -14
ant/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java
Index: MacroInstance.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/MacroInstance.java,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- MacroInstance.java 9 Feb 2004 21:05:20 -0000 1.22
+++ MacroInstance.java 19 Feb 2004 11:01:20 -0000 1.23
@@ -130,7 +130,6 @@
private static final int STATE_NORMAL = 0;
private static final int STATE_EXPECT_BRACKET = 1;
private static final int STATE_EXPECT_NAME = 2;
- private static final int STATE_EXPECT_EXCAPE = 3;
private String macroSubs(String s, Map macroMapping) {
if (s == null) {
@@ -155,7 +154,8 @@
state = STATE_EXPECT_NAME;
macroName = new StringBuffer();
} else if (ch == '@') {
- state = STATE_EXPECT_EXCAPE;
+ state = STATE_NORMAL;
+ ret.append('@');
} else {
state = STATE_NORMAL;
ret.append('@');
@@ -177,15 +177,6 @@
macroName.append(ch);
}
break;
- case STATE_EXPECT_EXCAPE:
- state = STATE_NORMAL;
- if (ch == '{') {
- ret.append("@");
- } else {
- ret.append("@@");
- }
- ret.append(ch);
- break;
default:
break;
}
@@ -199,9 +190,6 @@
case STATE_EXPECT_NAME:
ret.append("@{");
ret.append(macroName.toString());
- break;
- case STATE_EXPECT_EXCAPE:
- ret.append("@@");
break;
default:
break;
1.10 +11 -0 ant/src/etc/testcases/taskdefs/macrodef.xml
Index: macrodef.xml
===================================================================
RCS file: /home/cvs/ant/src/etc/testcases/taskdefs/macrodef.xml,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- macrodef.xml 27 Jan 2004 17:43:25 -0000 1.9
+++ macrodef.xml 19 Feb 2004 11:01:20 -0000 1.10
@@ -145,4 +145,15 @@
</sequential>
</macrodef>
</target>
+
+ <target name="escape">
+ <macrodef name="escape">
+ <attribute name="a"/>
+ <attribute name="b"/>
+ <sequential>
+ <echo>[EMAIL PROTECTED] or a@@b is @{a}@@@{b}</echo>
+ </sequential>
+ </macrodef>
+ <escape a="avalue" b="bvalue"/>
+ </target>
</project>
1.14 +5 -0
ant/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java
Index: MacroDefTest.java
===================================================================
RCS file:
/home/cvs/ant/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- MacroDefTest.java 9 Feb 2004 21:05:41 -0000 1.13
+++ MacroDefTest.java 19 Feb 2004 11:01:20 -0000 1.14
@@ -99,5 +99,10 @@
"duplicatetextname2",
"the attribute name \"text\" has already been used by the text
element");
}
+ public void testEscape() {
+ expectLog(
+ "escape",
+ "[EMAIL PROTECTED] or [EMAIL PROTECTED] is [EMAIL PROTECTED]");
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]