private static SymbolAtom FigureOutLocalVarName(StackEntry stackEntry, ILocalVar lvar) { Contract.Requires(stackEntry != null); Contract.Requires(lvar != null); // if lvar.Name is explicitly set --> return lvar.Name if (lvar.Name.IsValid) { return(lvar.Name); } // if lvar.Index is less than the number of captured variables in this frame --> look up the name in the parent frame. if (stackEntry.Lambda.Captures > lvar.Index) { while ((stackEntry = stackEntry.Previous) != null) { var localVarInParentFrame = stackEntry.DebugInfo.m_locals[lvar.Index]; if (localVarInParentFrame.Name.IsValid) { return(localVarInParentFrame.Name); } } } // Invalid if all previous efforts failed. return(SymbolAtom.Invalid); }
internal String ILocalVarToString(ILocalVar lv) { var name = lv.Source.DebugInfo == null ? null : lv.Source.DebugInfo.LocalNames.GetOrDefault(lv.Index); return(name == null?lv.Index.ToString() : String.Format("{0} ({1})", lv.Index.ToString(), name)); }
public String this[ILocalVar local] { get { return(LocalNames[local.Index]); } }
public bool Equals(ILocalVar other) { return(Equals(other as LocalVar)); }
public String this[ILocalVar local] { get { return LocalNames[local.Index]; } }