private void AddLocalVars(MetadataReader pdb, SymbolScope scope, LocalVariableHandleCollection localVars) { foreach (var varHandle in localVars) { var localVar = pdb.GetLocalVariable(varHandle); scope.AddLocal(new SymbolVariable(pdb.GetString(localVar.Name), localVar.Attributes, localVar.Index)); } }
private void AddChildScopes(MetadataReader pdb, SymbolScope parent, IEnumerator <LocalScopeHandle> scopes, SymbolMethod owner) { while (true) { scopes.MoveNext(); if (scopes.Current.IsNil) { break; } var currentScope = pdb.GetLocalScope(scopes.Current); var current = new SymbolScope(owner, null, currentScope.StartOffset, currentScope.EndOffset); AddLocalVars(pdb, current, currentScope.GetLocalVariables()); AddChildScopes(pdb, current, currentScope.GetChildren(), owner); parent.AddChild(current); } }