Exemplo n.º 1
0
            public override PLanguageType VisitNamedTupleType(PParser.NamedTupleTypeContext context)
            {
                HashSet <string> names = new HashSet <string>();

                PParser.IdenTypeContext[] namedTupleFields = context.idenTypeList().idenType();
                if (context.idenTypeList().idenType().Length > 8)
                {
                    throw handler.TupleSizeMoreThanEight(context);
                }

                NamedTupleEntry[] fields = new NamedTupleEntry[namedTupleFields.Length];
                for (int i = 0; i < namedTupleFields.Length; i++)
                {
                    PParser.IdenTypeContext field = namedTupleFields[i];
                    string fieldName = field.name.GetText();
                    if (names.Contains(fieldName))
                    {
                        throw handler.DuplicateNamedTupleEntry(field.name, fieldName);
                    }

                    names.Add(fieldName);
                    fields[i] = new NamedTupleEntry {
                        Name = fieldName, FieldNo = i, Type = Visit(field.type())
                    };
                }

                return(new NamedTupleType(fields));
            }
Exemplo n.º 2
0
            public override PLanguageType VisitNamedTupleType(PParser.NamedTupleTypeContext context)
            {
                var names            = new HashSet <string>();
                var namedTupleFields = context.idenTypeList().idenType();
                var fields           = new NamedTupleEntry[namedTupleFields.Length];

                for (var i = 0; i < namedTupleFields.Length; i++)
                {
                    PParser.IdenTypeContext field = namedTupleFields[i];
                    string fieldName = field.name.GetText();
                    if (names.Contains(fieldName))
                    {
                        throw handler.DuplicateNamedTupleEntry(field.name, fieldName);
                    }

                    names.Add(fieldName);
                    fields[i] = new NamedTupleEntry {
                        Name = fieldName, Type = Visit(field.type())
                    };
                }

                return(new NamedTupleType(fields));
            }
Exemplo n.º 3
0
 public override object VisitIdenType(PParser.IdenTypeContext context)
 {
     return(null);
 }