Rubberduck.Parsing.Symbols.DeclarationFinder.FindStdModule C# (CSharp) Method

FindStdModule() public method

public FindStdModule ( Rubberduck.Parsing.Symbols.Declaration parent, string name, bool includeBuiltIn = false ) : Rubberduck.Parsing.Symbols.Declaration
parent Rubberduck.Parsing.Symbols.Declaration
name string
includeBuiltIn bool
return Rubberduck.Parsing.Symbols.Declaration
        public Declaration FindStdModule(Declaration parent, string name, bool includeBuiltIn = false)
        {
            Declaration result = null;
            try
            {
                var matches = MatchName(name);
                result = matches.SingleOrDefault(declaration => declaration.DeclarationType == DeclarationType.Module
                    && (parent == null || parent.Equals(declaration.ParentDeclaration))
                    && (includeBuiltIn || !declaration.IsBuiltIn));
            }
            catch (InvalidOperationException exception)
            {
                Debug.WriteLine("Multiple matches found for std.module '{0}'.\n{1}", name, exception);
            }

            return result;
        }

Usage Example

コード例 #1
0
        public IReadOnlyList <Declaration> Load()
        {
            foreach (var item in _finder.MatchName(Tokens.Err))
            {
                if (item.IsBuiltIn && item.DeclarationType == DeclarationType.Variable &&
                    item.Accessibility == Accessibility.Global)
                {
                    return(new List <Declaration>());
                }
            }

            var vba = _finder.FindProject("VBA");

            if (vba == null)
            {
                // if VBA project is null, we haven't loaded any COM references;
                // we're in a unit test and mock project didn't setup any references.
                return(new List <Declaration>());
            }

            var informationModule = _finder.FindStdModule("Information", vba, true);

            Debug.Assert(informationModule != null, "We expect the information module to exist in the VBA project.");

            return(Load(vba, informationModule));
        }