private void FixMultiStatements(JMultiStatementExpression node, JNode parent) { var list = new List <JStatement>(); foreach (var st in node.Statements) { if (st is JExpressionStatement) { var stExp = (JExpressionStatement)st; if (stExp.Expression is JInvocationExpression) { var expInvoke = (JInvocationExpression)stExp.Expression; if (expInvoke.Arguments.Count == 1 && expInvoke.Arguments[0] is JMultiStatementExpression) { var mse = (JMultiStatementExpression)expInvoke.Arguments[0]; var stRet = (JReturnStatement)mse.Statements.Last(); list.AddRange(mse.Statements.Take(mse.Statements.Count - 1)); expInvoke.Arguments[0] = stRet.Expression; continue; } } } list.Add(st); } node.Statements = list; var node2 = J.CreateActionOrFunc(new JBlock { Statements = node.Statements.ToList() }, null, node.Type, Project).Member("invoke").Invoke(); ReplaceChild(parent, node, node2); }
public void VisitMultiStatementExpression(JMultiStatementExpression node) { throw new NotImplementedException(); }