示例#1
0
        public CodeExpression VisitSet(PySet s)
        {
            m.EnsureImport("System.Collections");
            var items = s.exps.Select(e => new CodeCollectionInitializer(e.Accept(this)));
            var init  = m.New(m.TypeRef("HashSet"), items.ToArray());

            return(init);
        }
示例#2
0
        public CodeExpression VisitSet(PySet s)
        {
            var items = s.exps.Select(e => new CodeCollectionInitializer(e.Accept(this)));

            m.EnsureImport("System.Collections");
            var init = new CodeObjectCreateExpression
            {
                Type        = m.TypeRef("HashSet"),
                Initializer = new CodeCollectionInitializer
                {
                    Values = items.ToArray()
                }
            };

            return(init);
        }
示例#3
0
        public CodeExpression VisitSet(PySet s)
        {
            m.EnsureImport("System.Collections");
            if (s.exps.OfType <IterableUnpacker>().Any())
            {
                // Found iterable unpackers.
                var seq    = new List <CodeExpression>();
                var subseq = new List <CodeExpression>();
                foreach (var item in s.exps)
                {
                    CodeExpression exp = null;
                    if (item is IterableUnpacker unpacker)
                    {
                        if (subseq.Count > 0)
                        {
                            exp = m.NewArray(m.TypeRef(typeof(object)), subseq.ToArray());
                            seq.Add(exp);
                            subseq.Clear();
                        }
                        exp = unpacker.Iterable.Accept(this);
                        seq.Add(exp);
                    }
                    else
                    {
                        exp = item.Accept(this);
                        subseq.Add(exp);
                    }
                }
                if (subseq.Count > 0)
                {
                    var exp = m.NewArray(m.TypeRef(typeof(object)), subseq.ToArray());
                    seq.Add(exp);
                }

                var unpack = m.MethodRef(m.TypeRefExpr("SetUtils"), "Unpack");
                unpack.TypeReferences.Add(m.TypeRef(typeof(object)));
                return(m.Appl(unpack, seq.ToArray()));
            }
            else
            {
                var items = s.exps.Select(e => new CodeCollectionInitializer(e.Accept(this)));
                var init  = m.New(m.TypeRef("HashSet"), items.ToArray());
                return(init);
            }
        }
示例#4
0
 public void VisitSet(PySet setDisplay)
 {
     throw new NotImplementedException();
 }
示例#5
0
        public DataType VisitSet(PySet s)
        {
            DataType valType = ResolveUnion(s.exps);

            return(new SetType(valType));
        }
示例#6
0
 public void VisitSet(PySet setDisplay)
 {
     throw new NotImplementedException();
 }