Example #1
0
            private TypeId ToTypeId(int arity)
            {
                if (m_CurrentName == null)
                {
                    throw new InvalidOperationException("Cannot create type id when no name segment was added.");
                }

                if (arity == 0)
                {
                    return(new SimpleTypeId(m_NamespaceBuilder.ToNamespaceId(), m_CurrentName));
                }
                else
                {
                    return(new GenericTypeId(m_NamespaceBuilder.ToNamespaceId(), m_CurrentName, arity));
                }
            }
Example #2
0
        private NamespaceId ParseNamespaceId()
        {
            var namespaceBuilder = new NamespaceIdBuilder();

            // there needs to be at least one name
            namespaceBuilder.AddNameSegment(MatchToken(MemberIdTokenKind.Name));

            // as long as there are more dots, consume more name segments
            while (TestAndMatchToken(MemberIdTokenKind.Dot))
            {
                namespaceBuilder.AddNameSegment(MatchToken(MemberIdTokenKind.Name));
            }

            // all tokens should be parsed now
            MatchToken(MemberIdTokenKind.Eof);

            return(namespaceBuilder.ToNamespaceId());
        }