Example #1
0
        private Positions ExprReplacementPositions(DareResult r, int tokPos, bool hasReplacement)
        {
            var ending           = InvarDecEndPosition(r);
            var tokLen           = ending.Item1 - tokPos;
            var usesTrailingSemi = ending.Item2;

            if (!hasReplacement && usesTrailingSemi)
            {
                tokLen++;
            }

            var current = tokPos + tokLen;
            var looking = true;

            while (looking)
            {
                var currentWord = new SnapshotSpan(Snapshot, current - 1, 1).GetText();
                looking = currentWord.Trim() == "";
                if (--current <= 0)
                {
                    throw new IndexOutOfRangeException($"Managed to escape {r.TypeOfRemovable}");
                }
            }

            tokLen--;

            return(new Positions(tokPos, tokLen));
        }