Пример #1
0
        /// <summary>
        /// Parses a fragment spred or inline fragment within a selection set.
        /// <see cref="ParseFragmentSpread" /> and
        /// <see cref="ParseInlineFragment" />.
        /// </summary>
        /// <param name="context">The parser context.</param>
        private static ISelectionNode ParseFragment(ParserContext context)
        {
            SyntaxToken start = context.Current;

            context.ExpectSpread();
            var isOnKeyword = context.Current.IsOnKeyword();

            if (!isOnKeyword && context.Current.IsName())
            {
                return(ParseFragmentSpread(context, start));
            }

            NamedTypeNode typeCondition = null;

            if (isOnKeyword)
            {
                context.MoveNext();
                typeCondition = ParseNamedType(context);
            }

            return(ParseInlineFragment(context, start, typeCondition));
        }