提交 a1cb7c61 编写于 作者: P Paul Harrington

Make SourceText.Lines non-virtual and introduce GetLinesCore protected virtual method.

上级 c4f8f719
......@@ -1327,6 +1327,7 @@ Microsoft.CodeAnalysis.Text.SourceText
Microsoft.CodeAnalysis.Text.SourceText.ChecksumAlgorithm.get
Microsoft.CodeAnalysis.Text.SourceText.ContentEquals(Microsoft.CodeAnalysis.Text.SourceText other)
Microsoft.CodeAnalysis.Text.SourceText.GetSubText(int start)
Microsoft.CodeAnalysis.Text.SourceText.Lines.get
Microsoft.CodeAnalysis.Text.SourceText.Replace(Microsoft.CodeAnalysis.Text.TextSpan span, string newText)
Microsoft.CodeAnalysis.Text.SourceText.Replace(int start, int length, string newText)
Microsoft.CodeAnalysis.Text.SourceText.SourceText(System.Collections.Immutable.ImmutableArray<byte> checksum = default(System.Collections.Immutable.ImmutableArray<byte>), Microsoft.CodeAnalysis.Text.SourceHashAlgorithm checksumAlgorithm = Microsoft.CodeAnalysis.Text.SourceHashAlgorithm.Sha1, Microsoft.CodeAnalysis.Text.SourceTextContainer container = null)
......@@ -2106,9 +2107,9 @@ virtual Microsoft.CodeAnalysis.SyntaxWalker.VisitTrivia(Microsoft.CodeAnalysis.S
virtual Microsoft.CodeAnalysis.Text.SourceText.Container.get
virtual Microsoft.CodeAnalysis.Text.SourceText.ContentEqualsImpl(Microsoft.CodeAnalysis.Text.SourceText other)
virtual Microsoft.CodeAnalysis.Text.SourceText.GetChangeRanges(Microsoft.CodeAnalysis.Text.SourceText oldText)
virtual Microsoft.CodeAnalysis.Text.SourceText.GetLinesCore()
virtual Microsoft.CodeAnalysis.Text.SourceText.GetSubText(Microsoft.CodeAnalysis.Text.TextSpan span)
virtual Microsoft.CodeAnalysis.Text.SourceText.GetTextChanges(Microsoft.CodeAnalysis.Text.SourceText oldText)
virtual Microsoft.CodeAnalysis.Text.SourceText.Lines.get
virtual Microsoft.CodeAnalysis.Text.SourceText.ToString(Microsoft.CodeAnalysis.Text.TextSpan span)
virtual Microsoft.CodeAnalysis.Text.SourceText.WithChanges(System.Collections.Generic.IEnumerable<Microsoft.CodeAnalysis.Text.TextChange> changes)
virtual Microsoft.CodeAnalysis.Text.SourceText.Write(System.IO.TextWriter writer, Microsoft.CodeAnalysis.Text.TextSpan span, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken))
......
......@@ -25,7 +25,7 @@ public abstract class SourceText
private readonly SourceHashAlgorithm _checksumAlgorithm;
private SourceTextContainer _lazyContainer;
private LineInfo _lazyLineInfo;
private TextLineCollection _lazyLineInfo;
private ImmutableArray<byte> _lazyChecksum;
protected SourceText(ImmutableArray<byte> checksum = default(ImmutableArray<byte>), SourceHashAlgorithm checksumAlgorithm = SourceHashAlgorithm.Sha1, SourceTextContainer container = null)
......@@ -479,20 +479,20 @@ public virtual IReadOnlyList<TextChange> GetTextChanges(SourceText oldText)
/// <summary>
/// The collection of individual text lines.
/// </summary>
public virtual TextLineCollection Lines
public TextLineCollection Lines
{
get
{
if (_lazyLineInfo == null)
{
var info = new LineInfo(this, this.ParseLineStarts());
Interlocked.CompareExchange(ref _lazyLineInfo, info, null);
}
return _lazyLineInfo;
var info = _lazyLineInfo;
return info ?? Interlocked.CompareExchange(ref _lazyLineInfo, info = GetLinesCore(), null) ?? info;
}
}
protected virtual TextLineCollection GetLinesCore()
{
return new LineInfo(this, ParseLineStarts());
}
private class LineInfo : TextLineCollection
{
private readonly SourceText _text;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册