/// <summary> /// Gets the module containing the code for the coverage node. /// </summary> /// <param name="node">The node to get the module for.</param> /// <returns>The module for the code, or null if the module is not found.</returns> private Module GetModule(CoverageNodeModel node) { node = node?.ClosestAncestor(CoverageNodeType.Module); if (node != null) { return(_asm.GetModule(node.Name)); } return(null); }
/// <summary> /// Loads the metadata for the given model. /// </summary> /// <param name="model">The model to read into.</param> public void LoadMetadataFor(CoverageNodeModel model) { if (!model.HasReadMetadata) { switch (model.NodeType) { case CoverageNodeType.CoverageFile: case CoverageNodeType.Module: case CoverageNodeType.Namespace: // nothing to simplify break; case CoverageNodeType.Type: LoadTypeMetadata(model); break; case CoverageNodeType.Function: { // read the metadata for the declaring type. var cls = model.ClosestAncestor(CoverageNodeType.Type); if (cls != null) { LoadMetadataFor(cls); } break; } default: throw Utility.UnreachableCode("Unexpected coverage node type."); } foreach (var child in model.Children) { LoadMetadataFor(child); } } }