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;
}
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)); }