コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: ILOp.cs プロジェクト: avaranovich/truesight-lite
        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));
        }
コード例 #3
0
 public String this[ILocalVar local] {
     get { return(LocalNames[local.Index]); }
 }
コード例 #4
0
 public bool Equals(ILocalVar other)
 {
     return(Equals(other as LocalVar));
 }
コード例 #5
0
 public String this[ILocalVar local] { get { return LocalNames[local.Index]; } }