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]