private void AddBuiltInDeclarations(IReadOnlyList <VBProject> projects) { var finder = new DeclarationFinder(_state.AllDeclarations, new CommentNode[] { }, new IAnnotation[] { }); foreach (var item in finder.MatchName(Tokens.Err)) { if (item.IsBuiltIn && item.DeclarationType == DeclarationType.Variable && item.Accessibility == Accessibility.Global) { return; } } 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; } var informationModule = finder.FindStdModule("Information", vba, true); Debug.Assert(informationModule != null, "We expect the information module to exist in the VBA project."); var customDeclarations = CustomDeclarations.Load(vba, informationModule); lock (_state) { foreach (var customDeclaration in customDeclarations) { _state.AddDeclaration(customDeclaration); } } }
private static Declaration FormsClassModuleFromParserState(DeclarationFinder finder) { var msForms = finder.FindProject("MSForms"); if (msForms == null) { //The corresponding COM reference has not been loaded. return(null); } return(finder.FindClassModule("FormEvents", msForms, true)); }
private void UpdateAliasFunctionModulesFromReferencedProjects(DeclarationFinder finder) { var vba = finder.FindProject("VBA"); if (vba == null) { // If the VBA project is null, we haven't loaded any COM references; // we're in a unit test and the mock project didn't setup any references. return; } _conversionModule = finder.FindStdModule("Conversion", vba, true); _fileSystemModule = finder.FindStdModule("FileSystem", vba, true); _interactionModule = finder.FindStdModule("Interaction", vba, true); _stringsModule = finder.FindStdModule("Strings", vba, true); _dateTimeModule = finder.FindStdModule("DateTime", vba, true); _hiddenModule = finder.FindStdModule("_HiddenModule", vba, true); }
private void AddBuiltInDeclarations(IReadOnlyList <VBProject> projects) { SyncComReferences(projects); var finder = new DeclarationFinder(_state.AllDeclarations, new CommentNode[] {}, new IAnnotation[] {}); if (finder.MatchName(Tokens.Err).Any(item => item.IsBuiltIn && item.DeclarationType == DeclarationType.Variable && item.Accessibility == Accessibility.Global)) { return; } var vba = finder.FindProject("VBA"); Debug.Assert(vba != null); var errObject = finder.FindClass(vba, "ErrObject", true); Debug.Assert(errObject != null); var qualifiedName = new QualifiedModuleName(vba.IdentifierName, vba.IdentifierName, errObject.IdentifierName); var err = new Declaration(new QualifiedMemberName(qualifiedName, Tokens.Err), vba, "Global", errObject.IdentifierName, true, false, Accessibility.Global, DeclarationType.Variable); _state.AddDeclaration(err); var debugClassName = new QualifiedModuleName(vba.IdentifierName, vba.IdentifierName, "DebugClass"); var debugClass = new Declaration(new QualifiedMemberName(debugClassName, "DebugClass"), vba, "Global", "DebugClass", false, false, Accessibility.Global, DeclarationType.ClassModule); var debugObject = new Declaration(new QualifiedMemberName(debugClassName, "Debug"), vba, "Global", "DebugClass", true, false, Accessibility.Global, DeclarationType.Variable); var debugAssert = new Declaration(new QualifiedMemberName(debugClassName, "Assert"), debugObject, debugObject.Scope, null, false, false, Accessibility.Global, DeclarationType.Procedure); var debugPrint = new Declaration(new QualifiedMemberName(debugClassName, "Print"), debugObject, debugObject.Scope, null, false, false, Accessibility.Global, DeclarationType.Procedure); _state.AddDeclaration(debugClass); _state.AddDeclaration(debugObject); _state.AddDeclaration(debugAssert); _state.AddDeclaration(debugPrint); }