"<gxp:ph name='ph7' example='1'/><gxp:eval expr='x+7'/><gxp:eph/>",
"<gxp:ph name='ph8' example='1'/><gxp:eval expr='x+8'/><gxp:eph/>",
"<gxp:ph name='ph9' example='1'/><gxp:eval expr='x+9'/><gxp:eph/>",
"<gxp:ph name='ph10' example='1'/><gxp:eval expr='x+10'/><gxp:eph/>",
"</gxp:msg>");
assertAlert(new TooManyDynamicPlaceholdersError(pos(12, 34)));
assertNoUnexpectedAlerts();
// multiple dynamic parameters per placeholder
compile("<gxp:msg>",
"<gxp:ph name='ph1' example='1'/><gxp:eval expr='x+1'/>"
+ "<gxp:eval expr='x+2'/><gxp:eph/>",
"<gxp:ph name='ph2' example='1'/><gxp:eval expr='x+3'/>"
+ "<gxp:eval expr='x+4'/><gxp:eph/>",
"<gxp:ph name='ph3' example='1'/><gxp:eval expr='x+5'/>"
+ "<gxp:eval expr='x+6'/><gxp:eph/>",
"<gxp:ph name='ph4' example='1'/><gxp:eval expr='x+7'/>"
+ "<gxp:eval expr='x+8'/><gxp:eph/>",
"<gxp:ph name='ph5' example='1'/><gxp:eval expr='x+9'/>"
+ "<gxp:eval expr='x+10'/><gxp:eph/>",
"</gxp:msg>");
assertAlert(new TooManyDynamicPlaceholdersError(pos(7, 55)));
assertNoUnexpectedAlerts();
// more than 9 placeholders, but not too many dynamic
compile("<gxp:msg>",
"<gxp:ph name='ph1' example='1'/><gxp:eval expr='x+1'/><gxp:eph/>",