public override void OnCollectionInitializationExpression(CollectionInitializationExpression node)
        {
            var temp = new ReferenceExpression(node.LexicalInfo, Context.GetUniqueName("collection"));

            var initialization = CodeBuilder.CreateEvalInvocation(node.LexicalInfo);

            // temp = $(node.Collection)
            initialization.Arguments.Add(new BinaryExpression(BinaryOperatorType.Assign, temp, node.Collection));

            if (node.Initializer is ListLiteralExpression)
            {
                foreach (var item in ((ListLiteralExpression)node.Initializer).Items)
                {
                    // temp.Add(item)
                    initialization.Arguments.Add(NewAddInvocation(item.LexicalInfo, temp, item));
                }
            }
            else
            {
                foreach (var pair in ((HashLiteralExpression)node.Initializer).Items)
                {
                    // temp.Add(key, value)
                    initialization.Arguments.Add(NewAddInvocation(pair.LexicalInfo, temp, pair.First, pair.Second));
                }
            }

            // return temp
            initialization.Arguments.Add(temp.CloneNode());

            ReplaceCurrentNode(initialization);
        }
 public override void OnCollectionInitializationExpression(CollectionInitializationExpression node)
 {
     throw new NotImplementedException();
 }
Beispiel #3
0
 override public void LeaveCollectionInitializationExpression(CollectionInitializationExpression node)
 {
     OnExpression(node);
 }
 public override void OnCollectionInitializationExpression(CollectionInitializationExpression node)
 {
     base.OnCollectionInitializationExpression(node);
     Check(node);
 }