/// <summary> /// Gets all ILSpans of a statement /// </summary> /// <param name="statementSpan">Statement span</param> /// <returns></returns> public DbgILSpan[] GetILSpansOfStatement(DbgTextSpan statementSpan) { if (statementsDict == null) { Interlocked.CompareExchange(ref statementsDict, CreateStatementsDict(Statements), null); } if (statementsDict.TryGetValue(statementSpan, out var list)) { var spans = list.ToArray(); #if DEBUG for (int i = 1; i < spans.Length; i++) { Debug.Assert(spans[i - 1].End <= spans[i].Start); } #endif return(spans); } return(Array.Empty <DbgILSpan>()); }
/// <summary> /// Constructor /// </summary> /// <param name="ilSpan">IL span</param> /// <param name="textSpan">Text span</param> public DbgSourceStatement(DbgILSpan ilSpan, DbgTextSpan textSpan) { this.ilSpan = ilSpan; this.textSpan = textSpan; }