Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 public void VisitMultiStatementExpression(JMultiStatementExpression node)
 {
     throw new NotImplementedException();
 }