protected List <Declaration> LoadDeclarationsFromComProject(ComProject type) { var declarations = new List <Declaration>(); var projectName = new QualifiedModuleName(type.Name, type.Path, type.Name); var project = new ProjectDeclaration(type, projectName); declarations.Add(project); foreach (var alias in type.Aliases.Select(item => new AliasDeclaration(item, project, projectName))) { declarations.Add(alias); } foreach (var module in type.Members) { var moduleIdentifier = module.Type == DeclarationType.Enumeration || module.Type == DeclarationType.UserDefinedType ? $"_{module.Name}" : module.Name; var moduleName = new QualifiedModuleName(type.Name, type.Path, moduleIdentifier); var moduleDeclarations = GetDeclarationsForModule(module, moduleName, project); declarations.AddRange(moduleDeclarations); } return(declarations); }
public SerializableProject SerializableProject(ProjectDeclaration projectDeclaration) { var finder = _declarationFinderProvider.DeclarationFinder; var serializableProject = new SerializableProject(projectDeclaration); var projectName = projectDeclaration.QualifiedModuleName; var projectLevelDeclarationsByParent = ProjectLevelDeclarations(projectName, finder) .Where(declaration => declaration.ParentDeclaration != null) .GroupBy(declaration => declaration.ParentDeclaration) .ToDictionary(); if (projectLevelDeclarationsByParent.TryGetValue(projectDeclaration, out var nonModuleProjectChildren)) { foreach (var projectLevelDeclaration in nonModuleProjectChildren) { serializableProject.AddDeclaration(new SerializableDeclarationTree(projectLevelDeclaration)); } } foreach (var module in ProjectModules(projectName, finder)) { var serializableModule = SerializableModule(module, projectDeclaration, projectLevelDeclarationsByParent, finder); serializableProject.AddDeclaration(serializableModule); } serializableProject.SortDeclarations(); return(serializableProject); }
private List <Declaration> GetExcelRangeDeclarations() { var excelDeclaration = new ProjectDeclaration(new QualifiedMemberName(new QualifiedModuleName("Excel", "C:\\Program Files\\Microsoft Office\\Root\\Office 16\\EXCEL.EXE", "Excel"), "Excel"), "Excel", true); var globalDeclaration = new ClassModuleDeclaration(new QualifiedMemberName( new QualifiedModuleName("Excel", "C:\\Program Files\\Microsoft Office\\Root\\Office 16\\EXCEL.EXE", "_Global"), "_Global"), excelDeclaration, "_Global", true, null, null); var globalCoClassDeclarationAttributes = new Attributes(); globalCoClassDeclarationAttributes.AddPredeclaredIdTypeAttribute(); globalCoClassDeclarationAttributes.AddGlobalClassAttribute(); var globalCoClassDeclaration = new ClassModuleDeclaration(new QualifiedMemberName( new QualifiedModuleName("Excel", "C:\\Program Files\\Microsoft Office\\Root\\Office 16\\EXCEL.EXE", "Global"), "Global"), excelDeclaration, "Global", true, null, globalCoClassDeclarationAttributes); globalDeclaration.AddSubtype(globalCoClassDeclaration); globalCoClassDeclaration.AddSupertype(globalDeclaration); globalCoClassDeclaration.AddSupertype("_Global"); var rangeClassModuleDeclaration = new ClassModuleDeclaration(new QualifiedMemberName( new QualifiedModuleName("Excel", "C:\\Program Files\\Microsoft Office\\Root\\Office 16\\EXCEL.EXE", "Range"), "Range"), excelDeclaration, "Range", true, new List <IAnnotation>(), new Attributes()); var rangeDeclaration = new PropertyGetDeclaration(new QualifiedMemberName( new QualifiedModuleName("Excel", "C:\\Program Files\\Microsoft Office\\Root\\Office 16\\EXCEL.EXE", "_Global"), "Range"), globalDeclaration, globalDeclaration, "Range", null, null, Accessibility.Global, null, Selection.Home, false, true, new List <IAnnotation>(), new Attributes()); var firstParamDeclaration = new ParameterDeclaration(new QualifiedMemberName( new QualifiedModuleName("Excel", "C:\\Program Files\\Microsoft Office\\Root\\Office 16\\EXCEL.EXE", "_Global"), "Cell1"), rangeDeclaration, "Variant", null, null, false, false); var secondParamDeclaration = new ParameterDeclaration(new QualifiedMemberName( new QualifiedModuleName("Excel", "C:\\Program Files\\Microsoft Office\\Root\\Office 16\\EXCEL.EXE", "_Global"), "Cell2"), rangeDeclaration, "Variant", null, null, true, false); rangeDeclaration.AddParameter(firstParamDeclaration); rangeDeclaration.AddParameter(secondParamDeclaration); return(new List <Declaration> { excelDeclaration, globalDeclaration, globalCoClassDeclaration, rangeClassModuleDeclaration, rangeDeclaration, firstParamDeclaration, secondParamDeclaration, }); }
public SerializableProject(ProjectDeclaration declaration) { Node = new SerializableDeclaration(declaration); var project = (ProjectDeclaration)declaration; MajorVersion = project.MajorVersion; MinorVersion = project.MinorVersion; }
public void ReportsRange() { const string inputCode = @"Sub foo() Dim arr1() As Variant arr1 = Range(""A1:B2"") End Sub "; //Arrange var builder = new MockVbeBuilder(); var project = builder.ProjectBuilder("TestProject1", vbext_ProjectProtection.vbext_pp_none) .AddComponent("Class1", vbext_ComponentType.vbext_ct_ClassModule, inputCode) .AddReference("Excel", string.Empty, true) // Apparently, the COM loader can't find it when it isn't actually loaded... //.AddReference("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", true) .Build(); var vbe = builder.AddProject(project).Build(); var mockHost = new Mock <IHostApplication>(); mockHost.SetupAllProperties(); var parser = MockParser.Create(vbe.Object, new RubberduckParserState()); var excelDeclaration = new ProjectDeclaration(new QualifiedMemberName(new QualifiedModuleName("Excel", "C:\\Program Files\\Microsoft Office\\Root\\Office 16\\EXCEL.EXE", "Excel"), "Excel"), "Excel", true); var listColumnDeclaration = new ClassModuleDeclaration(new QualifiedMemberName( new QualifiedModuleName("Excel", "C:\\Program Files\\Microsoft Office\\Root\\Office 16\\EXCEL.EXE", "ListColumn"), "ListColumn"), excelDeclaration, "ListColumn", true, null, null); var rangeDeclaration = new Declaration( new QualifiedMemberName( new QualifiedModuleName("Excel", "C:\\Program Files\\Microsoft Office\\Root\\Office 16\\EXCEL.EXE", "ListColumn"), "Range"), listColumnDeclaration, "EXCEL.EXE;Excel.ListColumn", "Range", null, false, false, Accessibility.Global, (DeclarationType)3712, false, null, true, null, new Attributes()); parser.State.AddDeclaration(excelDeclaration); parser.State.AddDeclaration(listColumnDeclaration); parser.State.AddDeclaration(rangeDeclaration); parser.Parse(); if (parser.State.Status >= ParserState.Error) { Assert.Inconclusive("Parser Error"); } var inspection = new ImplicitActiveSheetReferenceInspection(vbe.Object, parser.State); var inspectionResults = inspection.GetInspectionResults(); Assert.AreEqual(1, inspectionResults.Count()); }
private static void AddReferences(ProjectDeclaration projectDeclaration, List <ReferencePriorityMap> references) { var projectId = projectDeclaration.ProjectId; foreach (var reference in references) { int priority = reference[projectId]; projectDeclaration.AddProjectReference(reference.ReferencedProjectId, priority); } }
private Declaration CreateProjectDeclaration(string projectId) { var project = _state.ProjectsProvider.Project(projectId); var qualifiedModuleName = new QualifiedModuleName(project); var qualifiedName = qualifiedModuleName.QualifyMemberName(project.Name); var projectDeclaration = new ProjectDeclaration(qualifiedName, qualifiedName.MemberName, true, project); return(projectDeclaration); }
private SearchResultsViewModel CreateViewModel(ProjectDeclaration project, ProjectDeclaration reference, IEnumerable <IdentifierReference> usages) { var results = usages.Select(usage => new SearchResultItem(usage.ParentNonScoping, new NavigateCodeEventArgs(usage.QualifiedModuleName, usage.Selection), GetModuleLine(usage.QualifiedModuleName, usage.Selection.StartLine))); var viewModel = new SearchResultsViewModel(_navigateCommand, string.Format(RubberduckUI.SearchResults_AllReferencesTabFormat, reference.IdentifierName), project, results); return(viewModel); }
private Declaration CreateProjectDeclaration(IVBProject project) { var qualifiedModuleName = new QualifiedModuleName(project); var qualifiedName = qualifiedModuleName.QualifyMemberName(project.Name); var projectId = qualifiedModuleName.ProjectId; var projectDeclaration = new ProjectDeclaration(qualifiedName, qualifiedName.MemberName, true, project); var references = ProjectReferences(projectId); AddReferences(projectDeclaration, references); return(projectDeclaration); }
public AddRemoveReferencesModel(ProjectDeclaration project, IEnumerable <ReferenceModel> references, ReferenceSettings settings) { Settings = settings; Project = project; References = references.ToList(); try { ApplySettingsToModel(); } catch { //Meh. } }
private Declaration CreateProjectDeclaration(QualifiedModuleName projectQualifiedName, VBProject project) { var qualifiedName = projectQualifiedName.QualifyMemberName(project.Name); var projectId = qualifiedName.QualifiedModuleName.ProjectId; var projectDeclaration = new ProjectDeclaration(qualifiedName, project.Name); var references = _projectReferences.Where(projectContainingReference => projectContainingReference.ContainsKey(projectId)); foreach (var reference in references) { int priority = reference[projectId]; projectDeclaration.AddProjectReference(reference.ReferencedProjectId, priority); } return(projectDeclaration); }
public AddRemoveReferencesModel(RubberduckParserState state, ProjectDeclaration project, IEnumerable <ReferenceModel> references, ReferenceSettings settings) { State = state; Settings = settings; Project = project; References = references.ToList(); try { ApplySettingsToModel(); } catch { //Meh. } }
public IAddRemoveReferencesModel Show(ProjectDeclaration project) { if (project is null) { return(null); } Model.Project = project; _view.ViewModel.Model = Model; _view.ShowDialog(); if (_view.DialogResult != DialogResult.OK) { return(null); } Model.NewReferences = _view.ViewModel.ProjectReferences.SourceCollection.OfType <ReferenceModel>().ToList(); return(Model); }
private List <Declaration> LoadDeclarationsFromLibrary(ReferenceInfo reference) { var libraryPath = reference.FullPath; // Failure to load might mean that it's a "normal" VBProject that will get parsed by us anyway. var typeLibrary = GetTypeLibrary(libraryPath); if (typeLibrary == null) { return(new List <Declaration>()); } var declarations = new List <Declaration>(); var type = new ComProject(typeLibrary, libraryPath); var projectName = new QualifiedModuleName(type.Name, libraryPath, type.Name); var project = new ProjectDeclaration(type, projectName); declarations.Add(project); foreach (var alias in type.Aliases.Select(item => new AliasDeclaration(item, project, projectName))) { declarations.Add(alias); } foreach (var module in type.Members) { var moduleIdentifier = module.Type == DeclarationType.Enumeration || module.Type == DeclarationType.UserDefinedType ? $"_{module.Name}" : module.Name; var moduleName = new QualifiedModuleName(reference.Name, libraryPath, moduleIdentifier); var moduleDeclarations = GetDeclarationsForModule(module, moduleName, project); declarations.AddRange(moduleDeclarations); } return(declarations); }
private Declaration CreateProjectDeclaration(QualifiedModuleName projectQualifiedName, VBProject project) { var qualifiedName = projectQualifiedName.QualifyMemberName(project.Name); var projectId = qualifiedName.QualifiedModuleName.ProjectId; var projectDeclaration = new ProjectDeclaration(qualifiedName, project.Name, isBuiltIn: false); var references = new List <ReferencePriorityMap>(); foreach (var item in _projectReferences) { if (item.ContainsKey(projectId)) { references.Add(item); } } foreach (var reference in references) { int priority = reference[projectId]; projectDeclaration.AddProjectReference(reference.ReferencedProjectId, priority); } return(projectDeclaration); }
public void FindAllReferences(ProjectDeclaration project, ReferenceInfo reference) { if (_state.Status != ParserState.Ready) { _logger.Debug($"ParserState is {_state.Status}. This action requires a Ready state."); return; } var usages = _state.DeclarationFinder.FindAllReferenceUsesInProject(project, reference, out var referenceProject).ToList(); if (referenceProject == null) { return; } if (!Confirm(referenceProject.IdentifierName, usages.Count)) { return; } var viewModel = CreateViewModel(project, referenceProject.IdentifierName, usages); ShowResults(viewModel); }
private List <Declaration> GetBuiltInDeclarations() { var vbaDeclaration = new ProjectDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", MockVbeBuilder.LibraryPathVBA, "VBA"), "VBA"), "VBA", false, null); var conversionModule = new ProceduralModuleDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", MockVbeBuilder.LibraryPathVBA, "Conversion"), "Conversion"), vbaDeclaration, "Conversion", false, new List <IAnnotation>(), new Attributes()); var fileSystemModule = new ProceduralModuleDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", MockVbeBuilder.LibraryPathVBA, "FileSystem"), "FileSystem"), vbaDeclaration, "FileSystem", false, new List <IAnnotation>(), new Attributes()); var interactionModule = new ProceduralModuleDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", MockVbeBuilder.LibraryPathVBA, "Interaction"), "Interaction"), vbaDeclaration, "Interaction", false, new List <IAnnotation>(), new Attributes()); var stringsModule = new ProceduralModuleDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", MockVbeBuilder.LibraryPathVBA, "Strings"), "Strings"), vbaDeclaration, "Strings", false, new List <IAnnotation>(), new Attributes()); var dateTimeModule = new ProceduralModuleDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", MockVbeBuilder.LibraryPathVBA, "DateTime"), "DateTime"), vbaDeclaration, "Strings", false, new List <IAnnotation>(), new Attributes()); var hiddenModule = new ProceduralModuleDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", MockVbeBuilder.LibraryPathVBA, "_HiddenModule"), "_HiddenModule"), vbaDeclaration, "_HiddenModule", false, new List <IAnnotation>(), new Attributes()); var commandFunction = new FunctionDeclaration( new QualifiedMemberName(interactionModule.QualifiedName.QualifiedModuleName, "_B_var_Command"), interactionModule, interactionModule, "Variant", null, null, Accessibility.Global, null, null, Selection.Home, false, false, new List <IAnnotation>(), new Attributes()); var environFunction = new FunctionDeclaration( new QualifiedMemberName(interactionModule.QualifiedName.QualifiedModuleName, "_B_var_Environ"), interactionModule, interactionModule, "Variant", null, null, Accessibility.Global, null, null, Selection.Home, false, false, new List <IAnnotation>(), new Attributes()); var rtrimFunction = new FunctionDeclaration( new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_RTrim"), stringsModule, stringsModule, "Variant", null, null, Accessibility.Global, null, null, Selection.Home, false, false, new List <IAnnotation>(), new Attributes()); var chrFunction = new FunctionDeclaration( new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_Chr"), stringsModule, stringsModule, "Variant", null, null, Accessibility.Global, null, null, Selection.Home, false, false, new List <IAnnotation>(), new Attributes()); var formatFunction = new FunctionDeclaration( new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_Format"), stringsModule, stringsModule, "Variant", null, null, Accessibility.Global, null, null, Selection.Home, false, false, new List <IAnnotation>(), new Attributes()); var firstFormatParam = new ParameterDeclaration( new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "Expression"), formatFunction, "Variant", null, null, false, true); var secondFormatParam = new ParameterDeclaration( new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "Format"), formatFunction, "Variant", null, null, true, true); var thirdFormatParam = new ParameterDeclaration( new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "FirstDayOfWeek"), formatFunction, "VbDayOfWeek", null, null, true, false); formatFunction.AddParameter(firstFormatParam); formatFunction.AddParameter(secondFormatParam); formatFunction.AddParameter(thirdFormatParam); var rightFunction = new FunctionDeclaration( new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_Right"), stringsModule, stringsModule, "Variant", null, null, Accessibility.Global, null, null, Selection.Home, false, false, new List <IAnnotation>(), new Attributes()); var firstRightParam = new ParameterDeclaration( new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "String"), rightFunction, "Variant", null, null, false, true); rightFunction.AddParameter(firstRightParam); var lcaseFunction = new FunctionDeclaration( new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_LCase"), stringsModule, stringsModule, "Variant", null, null, Accessibility.Global, null, null, Selection.Home, false, false, new List <IAnnotation>(), new Attributes()); var leftbFunction = new FunctionDeclaration( new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_LeftB"), stringsModule, stringsModule, "Variant", null, null, Accessibility.Global, null, null, Selection.Home, false, false, new List <IAnnotation>(), new Attributes()); var firstLeftBParam = new ParameterDeclaration( new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "String"), leftbFunction, "Variant", null, null, false, true); leftbFunction.AddParameter(firstLeftBParam); var chrwFunction = new FunctionDeclaration( new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_ChrW"), stringsModule, stringsModule, "Variant", null, null, Accessibility.Global, null, null, Selection.Home, false, false, new List <IAnnotation>(), new Attributes()); var leftFunction = new FunctionDeclaration( new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_Left"), stringsModule, stringsModule, "Variant", null, null, Accessibility.Global, null, null, Selection.Home, false, false, new List <IAnnotation>(), new Attributes()); var firstLeftParam = new ParameterDeclaration( new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "String"), leftFunction, "Variant", null, null, false, true); leftFunction.AddParameter(firstLeftParam); var rightbFunction = new FunctionDeclaration( new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_RightB"), stringsModule, stringsModule, "Variant", null, null, Accessibility.Global, null, null, Selection.Home, false, false, new List <IAnnotation>(), new Attributes()); var firstRightBParam = new ParameterDeclaration( new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "String"), rightbFunction, "Variant", null, null, false, true); rightbFunction.AddParameter(firstRightBParam); var midbFunction = new FunctionDeclaration( new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_MidB"), stringsModule, stringsModule, "Variant", null, null, Accessibility.Global, null, null, Selection.Home, false, false, new List <IAnnotation>(), new Attributes()); var firstMidBParam = new ParameterDeclaration( new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "String"), midbFunction, "Variant", null, null, false, true); var secondMidBParam = new ParameterDeclaration( new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "Start"), midbFunction, "Long", null, null, false, false); midbFunction.AddParameter(firstMidBParam); midbFunction.AddParameter(secondMidBParam); var ucaseFunction = new FunctionDeclaration( new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_UCase"), stringsModule, stringsModule, "Variant", null, null, Accessibility.Global, null, null, Selection.Home, false, false, new List <IAnnotation>(), new Attributes()); var trimFunction = new FunctionDeclaration( new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_Trim"), stringsModule, stringsModule, "Variant", null, null, Accessibility.Global, null, null, Selection.Home, false, false, new List <IAnnotation>(), new Attributes()); var ltrimFunction = new FunctionDeclaration( new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_LTrim"), stringsModule, stringsModule, "Variant", null, null, Accessibility.Global, null, null, Selection.Home, false, false, new List <IAnnotation>(), new Attributes()); var midFunction = new FunctionDeclaration( new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_Mid"), stringsModule, stringsModule, "Variant", null, null, Accessibility.Global, null, null, Selection.Home, false, false, new List <IAnnotation>(), new Attributes()); var firstMidParam = new ParameterDeclaration( new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "String"), midFunction, "Variant", null, null, false, true); var secondMidParam = new ParameterDeclaration( new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "Start"), midFunction, "Long", null, null, false, false); midFunction.AddParameter(firstMidParam); midFunction.AddParameter(secondMidParam); var hexFunction = new FunctionDeclaration( new QualifiedMemberName(conversionModule.QualifiedName.QualifiedModuleName, "_B_var_Hex"), conversionModule, conversionModule, "Variant", null, null, Accessibility.Global, null, null, Selection.Home, false, false, new List <IAnnotation>(), new Attributes()); var octFunction = new FunctionDeclaration( new QualifiedMemberName(conversionModule.QualifiedName.QualifiedModuleName, "_B_var_Oct"), conversionModule, conversionModule, "Variant", null, null, Accessibility.Global, null, null, Selection.Home, false, false, new List <IAnnotation>(), new Attributes()); var errorFunction = new FunctionDeclaration( new QualifiedMemberName(conversionModule.QualifiedName.QualifiedModuleName, "_B_var_Error"), conversionModule, conversionModule, "Variant", null, null, Accessibility.Global, null, null, Selection.Home, false, false, new List <IAnnotation>(), new Attributes()); var strFunction = new FunctionDeclaration( new QualifiedMemberName(conversionModule.QualifiedName.QualifiedModuleName, "_B_var_Str"), conversionModule, conversionModule, "Variant", null, null, Accessibility.Global, null, null, Selection.Home, false, false, new List <IAnnotation>(), new Attributes()); var curDirFunction = new FunctionDeclaration( new QualifiedMemberName(fileSystemModule.QualifiedName.QualifiedModuleName, "_B_var_CurDir"), fileSystemModule, fileSystemModule, "Variant", null, null, Accessibility.Global, null, null, Selection.Home, false, false, new List <IAnnotation>(), new Attributes()); var datePropertyGet = new PropertyGetDeclaration( new QualifiedMemberName(dateTimeModule.QualifiedName.QualifiedModuleName, "Date"), dateTimeModule, dateTimeModule, "Variant", null, string.Empty, Accessibility.Global, null, null, new Selection(), false, false, new List <IAnnotation>(), new Attributes()); var timePropertyGet = new PropertyGetDeclaration( new QualifiedMemberName(dateTimeModule.QualifiedName.QualifiedModuleName, "Time"), dateTimeModule, dateTimeModule, "Variant", null, string.Empty, Accessibility.Global, null, null, new Selection(), false, false, new List <IAnnotation>(), new Attributes()); var inputbFunction = new FunctionDeclaration( new QualifiedMemberName(hiddenModule.QualifiedName.QualifiedModuleName, "_B_var_InputB"), hiddenModule, hiddenModule, "Variant", null, null, Accessibility.Global, null, null, Selection.Home, false, false, new List <IAnnotation>(), new Attributes()); var firstInputBParam = new ParameterDeclaration( new QualifiedMemberName(hiddenModule.QualifiedName.QualifiedModuleName, "Number"), inputbFunction, "Long", null, null, false, true); var secondInputBParam = new ParameterDeclaration( new QualifiedMemberName(hiddenModule.QualifiedName.QualifiedModuleName, "FileNumber"), inputbFunction, "Integer", null, null, false, true); inputbFunction.AddParameter(firstInputBParam); inputbFunction.AddParameter(secondInputBParam); var inputFunction = new FunctionDeclaration( new QualifiedMemberName(hiddenModule.QualifiedName.QualifiedModuleName, "_B_var_Input"), hiddenModule, hiddenModule, "Variant", null, null, Accessibility.Global, null, null, Selection.Home, false, false, new List <IAnnotation>(), new Attributes()); var firstInputParam = new ParameterDeclaration( new QualifiedMemberName(hiddenModule.QualifiedName.QualifiedModuleName, "Number"), inputFunction, "Long", null, null, false, true); var secondInputParam = new ParameterDeclaration( new QualifiedMemberName(hiddenModule.QualifiedName.QualifiedModuleName, "FileNumber"), inputFunction, "Integer", null, null, false, true); inputFunction.AddParameter(firstInputParam); inputFunction.AddParameter(secondInputParam); return(new List <Declaration> { vbaDeclaration, conversionModule, fileSystemModule, interactionModule, stringsModule, dateTimeModule, hiddenModule, commandFunction, environFunction, rtrimFunction, chrFunction, formatFunction, firstFormatParam, secondFormatParam, thirdFormatParam, rightFunction, firstRightParam, lcaseFunction, leftbFunction, firstLeftBParam, chrwFunction, leftFunction, firstLeftParam, rightbFunction, firstRightBParam, midbFunction, firstMidBParam, secondMidBParam, ucaseFunction, trimFunction, ltrimFunction, midFunction, firstMidParam, secondMidParam, hexFunction, octFunction, errorFunction, strFunction, curDirFunction, datePropertyGet, timePropertyGet, inputbFunction, firstInputBParam, secondInputBParam, inputFunction, firstInputParam, secondInputParam }); }
private static HashSet <string> ReferencedProjectIds(ProjectDeclaration project) { return(project.ProjectReferences .Select(reference => reference.ReferencedProjectId) .ToHashSet()); }
public AddRemoveReferencesPresenter Create(ProjectDeclaration project) { if (project is null) { return(null); } AddRemoveReferencesModel model = null; try { Cursor.Current = Cursors.WaitCursor; var refs = new Dictionary <RegisteredLibraryKey, RegisteredLibraryInfo>(); // Iterating the returned libraries here instead of just .ToDictionary() using because we can't trust that the registry doesn't contain errors. foreach (var reference in _finder.FindRegisteredLibraries()) { if (refs.ContainsKey(reference.UniqueId)) { _logger.Warn( $"Duplicate registry definition for {reference.Guid} version {reference.Version}."); continue; } refs.Add(reference.UniqueId, reference); } var models = new Dictionary <RegisteredLibraryKey, ReferenceModel>(); using (var references = project.Project?.References) { if (references is null) { return(null); } var priority = 1; foreach (var reference in references) { var guid = Guid.TryParse(reference.Guid, out var result) ? result : Guid.Empty; // This avoids collisions when the parse actually succeeds, but the result is empty. if (guid.Equals(Guid.Empty)) { guid = new Guid(priority, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); } var libraryId = new RegisteredLibraryKey(guid, reference.Major, reference.Minor); // TODO: If for some reason the VBA reference is broken, we could technically use this to repair it. Just a thought... var adding = refs.ContainsKey(libraryId) ? new ReferenceModel(refs[libraryId], reference, priority++) : new ReferenceModel(reference, priority++); adding.IsUsed = adding.IsBuiltIn || _state.DeclarationFinder.IsReferenceUsedInProject(project, adding.ToReferenceInfo()); models.Add(libraryId, adding); reference.Dispose(); } } foreach (var reference in refs.Where(library => (_use64BitPaths || library.Value.Has32BitVersion) && !models.ContainsKey(library.Key))) { models.Add(reference.Key, new ReferenceModel(reference.Value)); } var settings = _settings.Create(); model = new AddRemoveReferencesModel(project, models.Values, settings); if (AddRemoveReferencesViewModel.HostHasProjects) { model.References.AddRange(GetUserProjectFolderModels(model.Settings).Where(proj => !model.References.Any(item => item.FullPath.Equals(proj.FullPath, StringComparison.OrdinalIgnoreCase)))); } } catch (Exception ex) { _logger.Warn(ex, "Unexpected exception attempting to create AddRemoveReferencesModel."); } finally { Cursor.Current = Cursors.Default; } return((model != null) ? new AddRemoveReferencesPresenter( new AddRemoveReferencesDialog(new AddRemoveReferencesViewModel(model, _reconciler, _browser))) : null); }
public List <Declaration> LoadDeclarationsFromLibrary() { ITypeLib typeLibrary; // Failure to load might mean that it's a "normal" VBProject that will get parsed by us anyway. LoadTypeLibEx(_path, REGKIND.REGKIND_NONE, out typeLibrary); if (typeLibrary == null) { return(_declarations); } var type = new ComProject(typeLibrary) { Path = _path }; var projectName = new QualifiedModuleName(type.Name, _path, type.Name); var project = new ProjectDeclaration(type, projectName); _serialized = new SerializableProject(project); _declarations.Add(project); foreach (var alias in type.Aliases.Select(item => new AliasDeclaration(item, project, projectName))) { _declarations.Add(alias); _serialized.AddDeclaration(new SerializableDeclarationTree(alias)); } foreach (var module in type.Members) { var moduleName = new QualifiedModuleName(_referenceName, _path, module.Type == DeclarationType.Enumeration || module.Type == DeclarationType.UserDefinedType ? string.Format("_{0}", module.Name) : module.Name); var declaration = CreateModuleDeclaration(module, moduleName, project, GetModuleAttributes(module)); var moduleTree = new SerializableDeclarationTree(declaration); _declarations.Add(declaration); _serialized.AddDeclaration(moduleTree); var membered = module as IComTypeWithMembers; if (membered != null) { CreateMemberDeclarations(membered.Members, moduleName, declaration, moduleTree, membered.DefaultMember); var coClass = membered as ComCoClass; if (coClass != null) { CreateMemberDeclarations(coClass.SourceMembers, moduleName, declaration, moduleTree, coClass.DefaultMember, true); } } var enumeration = module as ComEnumeration; if (enumeration != null) { var enumDeclaration = new Declaration(enumeration, declaration, moduleName); _declarations.Add(enumDeclaration); var members = enumeration.Members.Select(e => new Declaration(e, enumDeclaration, moduleName)).ToList(); _declarations.AddRange(members); var enumTree = new SerializableDeclarationTree(enumDeclaration); moduleTree.AddChildTree(enumTree); enumTree.AddChildren(members); } var structure = module as ComStruct; if (structure != null) { var typeDeclaration = new Declaration(structure, declaration, moduleName); _declarations.Add(typeDeclaration); var members = structure.Fields.Select(f => new Declaration(f, typeDeclaration, moduleName)).ToList(); _declarations.AddRange(members); var typeTree = new SerializableDeclarationTree(typeDeclaration); moduleTree.AddChildTree(typeTree); typeTree.AddChildren(members); } var fields = module as IComTypeWithFields; if (fields == null || !fields.Fields.Any()) { continue; } var declarations = fields.Fields.Select(f => new Declaration(f, declaration, projectName)).ToList(); _declarations.AddRange(declarations); moduleTree.AddChildren(declarations); } _state.BuiltInDeclarationTrees.TryAdd(_serialized); return(_declarations); }
private static ICollection <Declaration> GetDeclarationsForModule(IComType module, QualifiedModuleName moduleName, ProjectDeclaration project) { var declarations = new List <Declaration>(); var attributes = GetModuleAttributes(module); var moduleDeclaration = CreateModuleDeclaration(module, moduleName, project, attributes); declarations.Add(moduleDeclaration); switch (module) { case IComTypeWithMembers membered: var(memberDeclarations, defaultMember) = GetDeclarationsForProperties(membered.Properties, moduleName, moduleDeclaration); declarations.AddRange(memberDeclarations); AssignDefaultMember(moduleDeclaration, defaultMember); (memberDeclarations, defaultMember) = GetDeclarationsForMembers(membered.Members, moduleName, moduleDeclaration, membered.DefaultMember); declarations.AddRange(memberDeclarations); AssignDefaultMember(moduleDeclaration, defaultMember); if (membered is ComCoClass coClass) { (memberDeclarations, defaultMember) = GetDeclarationsForMembers(coClass.SourceMembers, moduleName, moduleDeclaration, coClass.DefaultMember, true); declarations.AddRange(memberDeclarations); AssignDefaultMember(moduleDeclaration, defaultMember); } break; case ComEnumeration enumeration: { var enumDeclaration = new Declaration(enumeration, moduleDeclaration, moduleName); declarations.Add(enumDeclaration); var members = enumeration.Members .Select(enumMember => new ValuedDeclaration(enumMember, enumDeclaration, moduleName)) .ToList(); declarations.AddRange(members); break; } case ComStruct structure: { var typeDeclaration = new Declaration(structure, moduleDeclaration, moduleName); declarations.Add(typeDeclaration); var members = structure.Fields .Select(f => new Declaration(f, typeDeclaration, moduleName)) .ToList(); declarations.AddRange(members); break; } } if (module is IComTypeWithFields fields && fields.Fields.Any()) { var projectName = project.QualifiedModuleName; var fieldDeclarations = new List <Declaration>(); foreach (var field in fields.Fields) { fieldDeclarations.Add(field.Type == DeclarationType.Constant ? new ValuedDeclaration(field, moduleDeclaration, projectName) : new Declaration(field, moduleDeclaration, projectName)); } declarations.AddRange(fieldDeclarations); } return(declarations); }
private SerializableDeclarationTree SerializableModule(QualifiedModuleName module, ProjectDeclaration project, Dictionary <Declaration, List <Declaration> > projectLevelDeclarationsByParent, DeclarationFinder finder) { var members = finder.Members(module).ToList(); var membersByParent = members.Where(declaration => declaration.ParentDeclaration != null) .GroupBy(declaration => declaration.ParentDeclaration) .ToDictionary(); var moduleDeclaration = membersByParent[project].Single(); var serializableModule = SerializableTree(moduleDeclaration, membersByParent); if (projectLevelDeclarationsByParent.TryGetValue(moduleDeclaration, out var memberDeclarationsOnProjectLevel)) { serializableModule.AddChildren(memberDeclarationsOnProjectLevel); } return(serializableModule); }
private List <Declaration> GetBuiltInDeclarations() { var vbaDeclaration = new ProjectDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "VBA"), "VBA"), "VBA", true); var conversionModule = new ProceduralModuleDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Conversion"), "Conversion"), vbaDeclaration, "Conversion", true, new List <IAnnotation>(), new Attributes()); var fileSystemModule = new ProceduralModuleDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "FileSystem"), "FileSystem"), vbaDeclaration, "FileSystem", true, new List <IAnnotation>(), new Attributes()); var interactionModule = new ProceduralModuleDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Interaction"), "Interaction"), vbaDeclaration, "Interaction", true, new List <IAnnotation>(), new Attributes()); var stringsModule = new ProceduralModuleDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "Strings"), vbaDeclaration, "Strings", true, new List <IAnnotation>(), new Attributes()); var commandFunction = new FunctionDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Interaction"), "_B_var_Command"), interactionModule, interactionModule, "Variant", null, null, Accessibility.Global, null, Selection.Home, false, true, new List <IAnnotation>(), new Attributes()); var environFunction = new FunctionDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Interaction"), "_B_var_Environ"), interactionModule, interactionModule, "Variant", null, null, Accessibility.Global, null, Selection.Home, false, true, new List <IAnnotation>(), new Attributes()); var rtrimFunction = new FunctionDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "_B_var_RTrim"), stringsModule, stringsModule, "Variant", null, null, Accessibility.Global, null, Selection.Home, false, true, new List <IAnnotation>(), new Attributes()); var chrFunction = new FunctionDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "_B_var_Chr"), stringsModule, stringsModule, "Variant", null, null, Accessibility.Global, null, Selection.Home, false, true, new List <IAnnotation>(), new Attributes()); var formatFunction = new FunctionDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "_B_var_Format"), stringsModule, stringsModule, "Variant", null, null, Accessibility.Global, null, Selection.Home, false, true, new List <IAnnotation>(), new Attributes()); var firstFormatParam = new ParameterDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "Expression"), formatFunction, "Variant", null, null, false, true); var secondFormatParam = new ParameterDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "Format"), formatFunction, "Variant", null, null, true, true); var thirdFormatParam = new ParameterDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "FirstDayOfWeek"), formatFunction, "VbDayOfWeek", null, null, true, false); formatFunction.AddParameter(firstFormatParam); formatFunction.AddParameter(secondFormatParam); formatFunction.AddParameter(thirdFormatParam); var rightFunction = new FunctionDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "_B_var_Right"), stringsModule, stringsModule, "Variant", null, null, Accessibility.Global, null, Selection.Home, false, true, new List <IAnnotation>(), new Attributes()); var firstRightParam = new ParameterDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "String"), rightFunction, "Variant", null, null, false, true); rightFunction.AddParameter(firstRightParam); var lcaseFunction = new FunctionDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "_B_var_LCase"), stringsModule, stringsModule, "Variant", null, null, Accessibility.Global, null, Selection.Home, false, true, new List <IAnnotation>(), new Attributes()); var leftbFunction = new FunctionDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "_B_var_LeftB"), stringsModule, stringsModule, "Variant", null, null, Accessibility.Global, null, Selection.Home, false, true, new List <IAnnotation>(), new Attributes()); var firstLeftBParam = new ParameterDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "String"), leftbFunction, "Variant", null, null, false, true); leftbFunction.AddParameter(firstLeftBParam); var chrwFunction = new FunctionDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "_B_var_ChrW"), stringsModule, stringsModule, "Variant", null, null, Accessibility.Global, null, Selection.Home, false, true, new List <IAnnotation>(), new Attributes()); var leftFunction = new FunctionDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "_B_var_Left"), stringsModule, stringsModule, "Variant", null, null, Accessibility.Global, null, Selection.Home, false, true, new List <IAnnotation>(), new Attributes()); var firstLeftParam = new ParameterDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "String"), leftFunction, "Variant", null, null, false, true); leftFunction.AddParameter(firstLeftParam); var rightbFunction = new FunctionDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "_B_var_RightB"), stringsModule, stringsModule, "Variant", null, null, Accessibility.Global, null, Selection.Home, false, true, new List <IAnnotation>(), new Attributes()); var firstRightBParam = new ParameterDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "String"), rightbFunction, "Variant", null, null, false, true); rightbFunction.AddParameter(firstRightBParam); var midbFunction = new FunctionDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "_B_var_MidB"), stringsModule, stringsModule, "Variant", null, null, Accessibility.Global, null, Selection.Home, false, true, new List <IAnnotation>(), new Attributes()); var firstMidBParam = new ParameterDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "String"), midbFunction, "Variant", null, null, false, true); var secondMidBParam = new ParameterDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "Start"), midbFunction, "Long", null, null, false, false); midbFunction.AddParameter(firstMidBParam); midbFunction.AddParameter(secondMidBParam); var ucaseFunction = new FunctionDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "_B_var_UCase"), stringsModule, stringsModule, "Variant", null, null, Accessibility.Global, null, Selection.Home, false, true, new List <IAnnotation>(), new Attributes()); var trimFunction = new FunctionDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "_B_var_Trim"), stringsModule, stringsModule, "Variant", null, null, Accessibility.Global, null, Selection.Home, false, true, new List <IAnnotation>(), new Attributes()); var ltrimFunction = new FunctionDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "_B_var_LTrim"), stringsModule, stringsModule, "Variant", null, null, Accessibility.Global, null, Selection.Home, false, true, new List <IAnnotation>(), new Attributes()); var midFunction = new FunctionDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "_B_var_Mid"), stringsModule, stringsModule, "Variant", null, null, Accessibility.Global, null, Selection.Home, false, true, new List <IAnnotation>(), new Attributes()); var firstMidParam = new ParameterDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "String"), midbFunction, "Variant", null, null, false, true); var secondMidParam = new ParameterDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "Start"), midbFunction, "Long", null, null, false, false); midFunction.AddParameter(firstMidParam); midFunction.AddParameter(secondMidParam); var hexFunction = new FunctionDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "_B_var_Hex"), conversionModule, conversionModule, "Variant", null, null, Accessibility.Global, null, Selection.Home, false, true, new List <IAnnotation>(), new Attributes()); var octFunction = new FunctionDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "_B_var_Oct"), conversionModule, conversionModule, "Variant", null, null, Accessibility.Global, null, Selection.Home, false, true, new List <IAnnotation>(), new Attributes()); var errorFunction = new FunctionDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "_B_var_Error"), conversionModule, conversionModule, "Variant", null, null, Accessibility.Global, null, Selection.Home, false, true, new List <IAnnotation>(), new Attributes()); var strFunction = new FunctionDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "_B_var_Str"), conversionModule, conversionModule, "Variant", null, null, Accessibility.Global, null, Selection.Home, false, true, new List <IAnnotation>(), new Attributes()); var curDirFunction = new FunctionDeclaration( new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "_B_var_CurDir"), fileSystemModule, fileSystemModule, "Variant", null, null, Accessibility.Global, null, Selection.Home, false, true, new List <IAnnotation>(), new Attributes()); return(new List <Declaration> { vbaDeclaration, conversionModule, fileSystemModule, interactionModule, stringsModule, commandFunction, environFunction, rtrimFunction, chrFunction, formatFunction, firstFormatParam, secondFormatParam, thirdFormatParam, rightFunction, firstRightParam, lcaseFunction, leftbFunction, firstLeftBParam, chrwFunction, leftFunction, firstLeftParam, rightbFunction, firstRightBParam, midbFunction, firstMidBParam, secondMidBParam, ucaseFunction, trimFunction, ltrimFunction, midFunction, firstMidParam, secondMidParam, hexFunction, octFunction, errorFunction, strFunction, curDirFunction }); }