// Emit a codedom directioned variable expression (ref int foo or out int foo) public static CodeExpression Emit(DirectionedArgument p) { var dir = FieldDirection.Out; if (p.Direction == ParameterDirection.Ref) { dir = FieldDirection.Ref; } var codeDirection = new CodeDirectionExpression(dir, new CodeVariableReferenceExpression(p.Name)); return(codeDirection); }
// Build an argument with a direction: out or ref void BuildDirectionedArgument(IronyParser parser, Root root, Expression parentExpression, ParseTreeNode currentNode) { DirectionedArgument o = new DirectionedArgument(parentExpression, currentNode.Token.Convert()); parentExpression.ChildExpressions.Add(o); switch (currentNode.ChildNodes[0].FindTokenAndGetText()) { case "out": o.Direction = ParameterDirection.Out; break; case "ref": o.Direction = ParameterDirection.Ref; break; } o.Name = currentNode.ChildNodes[1].FindTokenAndGetText(); }