Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
        /// <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);
                }
            }
        }