コード例 #1
0
ファイル: SyntaxToken.cs プロジェクト: yonifra/roslyn
        /// <summary>
        /// Creates a new token from this token with the leading trivia specified..
        /// </summary>
        public SyntaxToken WithLeadingTrivia(IEnumerable <SyntaxTrivia> trivia)
        {
            var greenList = trivia == null ? null : trivia.Select(t => t.UnderlyingNode);

            return(_token != null
                ? new SyntaxToken(null, _token.WithLeadingTrivia(_token.CreateList(greenList)), position: 0, index: 0)
                : default(SyntaxToken));
        }
コード例 #2
0
ファイル: SyntaxTriviaList.cs プロジェクト: yonifra/roslyn
        /// <summary>
        /// Creates a new <see cref="SyntaxTriviaList"/> with the element at the specified index removed.
        /// </summary>
        /// <param name="index">The index identifying the element to remove.</param>
        public SyntaxTriviaList RemoveAt(int index)
        {
            if (index < 0 || index >= this.Count)
            {
                throw new ArgumentOutOfRangeException("index");
            }

            var list = this.ToList();

            list.RemoveAt(index);
            return(new SyntaxTriviaList(default(SyntaxToken), _node.CreateList(list.Select(n => n.UnderlyingNode)), 0, 0));
        }
コード例 #3
0
        private static SyntaxNodeOrTokenList CreateList(GreenNode creator, List<SyntaxNodeOrToken> items)
        {
            if (items.Count == 0)
            {
                return default(SyntaxNodeOrTokenList);
            }

            var newGreen = creator.CreateList(items.Select(n => n.UnderlyingNode));
            if (newGreen.IsToken)
            {
                newGreen = creator.CreateList(new[] { newGreen }, alwaysCreateListNode: true);
            }

            return new SyntaxNodeOrTokenList(newGreen.CreateRed(), 0);
        }
コード例 #4
0
ファイル: SyntaxTokenList.cs プロジェクト: paillave/roslyn
        /// <summary>
        /// Creates a new <see cref="SyntaxTokenList"/> with the specified tokens insert at the index.
        /// </summary>
        /// <param name="index">The index to insert the new tokens.</param>
        /// <param name="tokens">The tokens to insert.</param>
        public SyntaxTokenList InsertRange(int index, IEnumerable <SyntaxToken> tokens)
        {
            if (index < 0 || index > this.Count)
            {
                throw new ArgumentOutOfRangeException(nameof(index));
            }

            if (tokens == null)
            {
                throw new ArgumentNullException(nameof(tokens));
            }

            var items = tokens.ToList();

            if (items.Count == 0)
            {
                return(this);
            }

            var list = this.ToList();

            list.InsertRange(index, tokens);

            if (list.Count == 0)
            {
                return(this);
            }

            return(new SyntaxTokenList(null, GreenNode.CreateList(list.Select(n => n.RequiredNode)), 0, 0));
        }
コード例 #5
0
ファイル: SyntaxToken.cs プロジェクト: paillave/roslyn
        /// <summary>
        /// Creates a new token from this token with the trailing trivia specified.
        /// </summary>
        public SyntaxToken WithTrailingTrivia(IEnumerable <SyntaxTrivia>?trivia)
        {
            var greenList = trivia?.Select(t => t.RequiredUnderlyingNode);

            return(Node != null
                ? new SyntaxToken(null, Node.WithTrailingTrivia(GreenNode.CreateList(greenList)), position: 0, index: 0)
                : default(SyntaxToken));
        }
コード例 #6
0
        private static SyntaxList <TNode> CreateList(GreenNode creator, List <TNode> items)
        {
            if (items.Count == 0)
            {
                return(default(SyntaxList <TNode>));
            }

            var newGreen = creator.CreateList(items.Select(n => n.Green));

            return(new SyntaxList <TNode>(newGreen.CreateRed()));
        }
コード例 #7
0
        private static SyntaxNodeOrTokenList CreateList(List <SyntaxNodeOrToken> items)
        {
            if (items.Count == 0)
            {
                return(default(SyntaxNodeOrTokenList));
            }

            var newGreen = GreenNode.CreateList(items.Select(n => n.UnderlyingNode !)) !;

            if (newGreen.IsToken)
            {
                newGreen = GreenNode.CreateList(new[] { newGreen }, alwaysCreateListNode: true) !;
            }

            return(new SyntaxNodeOrTokenList(newGreen.CreateRed(), 0));
        }