private Argument functionArgument(ExprData data,String type, boolean varKeyUpperCase) throws TemplateException {
Expression expr = assignOp(data);
try{
if (data.cfml.forwardIfCurrent(":")) {
comments(data);
return new NamedArgument(expr,assignOp(data),type,varKeyUpperCase);
}
else if(expr instanceof DynAssign){
DynAssign da=(DynAssign) expr;
return new NamedArgument(da.getName(),da.getValue(),type,varKeyUpperCase);
}
else if(expr instanceof Assign && !(expr instanceof OpVariable)){
Assign a=(Assign) expr;
return new NamedArgument(a.getVariable(),a.getValue(),type,varKeyUpperCase);
}
}
catch(BytecodeException be) {
throw new TemplateException(data.cfml,be.getMessage());
}