From b0b3e9c9d9c6ecda807435c1933e1de04a5e7f4f Mon Sep 17 00:00:00 2001 From: Max Doerner Date: Thu, 5 Jan 2017 22:08:49 +0100 Subject: [PATCH 1/3] alligned the load behaviour of the ICustomDeclarationLoader implementations --- .../Symbols/AliasDeclarations.cs | 26 +++++++++++++++--- .../Symbols/DebugDeclarations.cs | 9 +++++-- .../Symbols/SpecialFormDeclarations.cs | 27 ++++++++++++++----- 3 files changed, 49 insertions(+), 13 deletions(-) diff --git a/Rubberduck.Parsing/Symbols/AliasDeclarations.cs b/Rubberduck.Parsing/Symbols/AliasDeclarations.cs index 22271b9137..c113c43025 100644 --- a/Rubberduck.Parsing/Symbols/AliasDeclarations.cs +++ b/Rubberduck.Parsing/Symbols/AliasDeclarations.cs @@ -53,7 +53,14 @@ public IReadOnlyList Load() private IReadOnlyList AddAliasDeclarations() { - UpdateAliasFunctionModulesFromReferencedProjects(_state); + var finder = new DeclarationFinder(_state.AllDeclarations, new CommentNode[] { }, new IAnnotation[] { }); + + if (WeHaveAlreadyLoadedTheDeclarationsBefore(finder)) + { + return new List(); + } + + UpdateAliasFunctionModulesFromReferencedProjects(finder); if (NoReferenceToProjectContainingTheFunctionAliases()) { @@ -67,10 +74,8 @@ private IReadOnlyList AddAliasDeclarations() return functionAliases; } - private void UpdateAliasFunctionModulesFromReferencedProjects(RubberduckParserState state) + private void UpdateAliasFunctionModulesFromReferencedProjects(DeclarationFinder finder) { - var finder = new DeclarationFinder(state.AllDeclarations, new CommentNode[] {}, new IAnnotation[] {}); - var vba = finder.FindProject("VBA"); if (vba == null) { @@ -86,6 +91,19 @@ private void UpdateAliasFunctionModulesFromReferencedProjects(RubberduckParserSt } + private static bool WeHaveAlreadyLoadedTheDeclarationsBefore(DeclarationFinder finder) + { + return ThereIsAGlobalBuiltInErrVariableDeclaration(finder); + } + + private static bool ThereIsAGlobalBuiltInErrVariableDeclaration(DeclarationFinder finder) + { + return finder.MatchName(Grammar.Tokens.Err).Any(declaration => declaration.IsBuiltIn + && declaration.DeclarationType == DeclarationType.Variable + && declaration.Accessibility == Accessibility.Global); + } + + private bool NoReferenceToProjectContainingTheFunctionAliases() { return _conversionModule == null; diff --git a/Rubberduck.Parsing/Symbols/DebugDeclarations.cs b/Rubberduck.Parsing/Symbols/DebugDeclarations.cs index 53a3268bd2..e0fb367782 100644 --- a/Rubberduck.Parsing/Symbols/DebugDeclarations.cs +++ b/Rubberduck.Parsing/Symbols/DebugDeclarations.cs @@ -21,7 +21,7 @@ public IReadOnlyList Load() { var finder = new DeclarationFinder(_state.AllDeclarations, new CommentNode[] { }, new IAnnotation[] { }); - if (ThereIsAGlobalBuiltInErrVariableDeclaration(finder)) + if (WeHaveAlreadyLoadedTheDeclarationsBefore(finder)) { return new List(); } @@ -37,9 +37,14 @@ public IReadOnlyList Load() return LoadDebugDeclarations(vba); } + private static bool WeHaveAlreadyLoadedTheDeclarationsBefore(DeclarationFinder finder) + { + return ThereIsAGlobalBuiltInErrVariableDeclaration(finder); + } + private static bool ThereIsAGlobalBuiltInErrVariableDeclaration(DeclarationFinder finder) { - return finder.MatchName(Tokens.Err).Any(declaration => declaration.IsBuiltIn + return finder.MatchName(Grammar.Tokens.Err).Any(declaration => declaration.IsBuiltIn && declaration.DeclarationType == DeclarationType.Variable && declaration.Accessibility == Accessibility.Global); } diff --git a/Rubberduck.Parsing/Symbols/SpecialFormDeclarations.cs b/Rubberduck.Parsing/Symbols/SpecialFormDeclarations.cs index b58524170a..c99cf1d306 100644 --- a/Rubberduck.Parsing/Symbols/SpecialFormDeclarations.cs +++ b/Rubberduck.Parsing/Symbols/SpecialFormDeclarations.cs @@ -10,22 +10,24 @@ namespace Rubberduck.Parsing.Symbols { public class SpecialFormDeclarations : ICustomDeclarationLoader { - private readonly DeclarationFinder _finder; + private readonly RubberduckParserState _state; public SpecialFormDeclarations(RubberduckParserState state) { - _finder = new DeclarationFinder(state.AllDeclarations, new CommentNode[] { }, new IAnnotation[] { }); + _state = state; } public IReadOnlyList Load() { - if (ThereIsAGlobalBuiltInErrVariableDeclaration(_finder)) + var finder = new DeclarationFinder(_state.AllDeclarations, new CommentNode[] { }, new IAnnotation[] { }); + + if (WeHaveAlreadyLoadedTheDeclarationsBefore(finder)) { return new List(); } - var vba = _finder.FindProject("VBA"); + var vba = finder.FindProject("VBA"); if (vba == null) { // If the VBA project is null, we haven't loaded any COM references; @@ -33,15 +35,26 @@ public IReadOnlyList Load() return new List(); } - var informationModule = _finder.FindStdModule("Information", vba, true); - Debug.Assert(informationModule != null, "We expect the information module to exist in the VBA project."); + var informationModule = finder.FindStdModule("Information", vba, true); + if (informationModule == null) + { + //This should not happen under normal circumstances. + //Most probably, we are in a test that only addded parts of the VBA project. + return new List(); + } return LoadSpecialFormDeclarations(informationModule); } + + private static bool WeHaveAlreadyLoadedTheDeclarationsBefore(DeclarationFinder finder) + { + return ThereIsAGlobalBuiltInErrVariableDeclaration(finder); + } + private static bool ThereIsAGlobalBuiltInErrVariableDeclaration(DeclarationFinder finder) { - return finder.MatchName(Tokens.Err).Any(declaration => declaration.IsBuiltIn + return finder.MatchName(Grammar.Tokens.Err).Any(declaration => declaration.IsBuiltIn && declaration.DeclarationType == DeclarationType.Variable && declaration.Accessibility == Accessibility.Global); } From 1126e478e1748f146e1bb206801b0de9e178f93e Mon Sep 17 00:00:00 2001 From: Max Doerner Date: Thu, 5 Jan 2017 22:09:28 +0100 Subject: [PATCH 2/3] fixed FormEventDeclarations --- .../Symbols/DeclarationFinder.cs | 18 ++++++++++++++++++ .../Symbols/FormEventDeclarations.cs | 5 ++--- 2 files changed, 20 insertions(+), 3 deletions(-) diff --git a/Rubberduck.Parsing/Symbols/DeclarationFinder.cs b/Rubberduck.Parsing/Symbols/DeclarationFinder.cs index 95e1b4d6c8..8e2ffb5ee0 100644 --- a/Rubberduck.Parsing/Symbols/DeclarationFinder.cs +++ b/Rubberduck.Parsing/Symbols/DeclarationFinder.cs @@ -140,6 +140,24 @@ public Declaration FindStdModule(string name, Declaration parent = null, bool in return result; } + public Declaration FindClassModule(string name, Declaration parent = null, bool includeBuiltIn = false) + { + Declaration result = null; + try + { + var matches = MatchName(name); + result = matches.SingleOrDefault(declaration => declaration.DeclarationType.HasFlag(DeclarationType.ClassModule) + && (parent == null || parent.Equals(declaration.ParentDeclaration)) + && (includeBuiltIn || !declaration.IsBuiltIn)); + } + catch (InvalidOperationException exception) + { + Logger.Error(exception, "Multiple matches found for class module '{0}'.", name); + } + + return result; + } + public Declaration FindReferencedProject(Declaration callingProject, string referencedProjectName) { return FindInReferencedProjectByPriority(callingProject, referencedProjectName, p => p.DeclarationType.HasFlag(DeclarationType.Project)); diff --git a/Rubberduck.Parsing/Symbols/FormEventDeclarations.cs b/Rubberduck.Parsing/Symbols/FormEventDeclarations.cs index 73e78b7805..08748b0610 100644 --- a/Rubberduck.Parsing/Symbols/FormEventDeclarations.cs +++ b/Rubberduck.Parsing/Symbols/FormEventDeclarations.cs @@ -33,12 +33,11 @@ private static Declaration FormsClassModuleFromParserState(RubberduckParserState var msForms = finder.FindProject("MSForms"); if (msForms == 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. + //The corresponding COM reference has not been loaded. return null; } - return finder.FindStdModule("FormEvents", msForms, true); + return finder.FindClassModule("FormEvents", msForms, true); } From 7ca2d7818ffe44ed0f9969a60ffac150f333f7d0 Mon Sep 17 00:00:00 2001 From: Max Doerner Date: Thu, 5 Jan 2017 22:48:10 +0100 Subject: [PATCH 3/3] fixed setup of failing tests to make them pass again --- .../UntypedFunctionUsageInspectionTests.cs | 108 ++++++++++++------ 1 file changed, 75 insertions(+), 33 deletions(-) diff --git a/RubberduckTests/Inspections/UntypedFunctionUsageInspectionTests.cs b/RubberduckTests/Inspections/UntypedFunctionUsageInspectionTests.cs index b374aa0442..2b203d6e00 100644 --- a/RubberduckTests/Inspections/UntypedFunctionUsageInspectionTests.cs +++ b/RubberduckTests/Inspections/UntypedFunctionUsageInspectionTests.cs @@ -262,8 +262,16 @@ private List GetBuiltInDeclarations() new List(), new Attributes()); + var dateTimeModule = new ProceduralModuleDeclaration( + new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "DateTime"), "DateTime"), + vbaDeclaration, + "Strings", + true, + new List(), + 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"), + new QualifiedMemberName(interactionModule.QualifiedName.QualifiedModuleName, "_B_var_Command"), interactionModule, interactionModule, "Variant", @@ -278,7 +286,7 @@ private List GetBuiltInDeclarations() 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"), + new QualifiedMemberName(interactionModule.QualifiedName.QualifiedModuleName, "_B_var_Environ"), interactionModule, interactionModule, "Variant", @@ -293,7 +301,7 @@ private List GetBuiltInDeclarations() 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"), + new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_RTrim"), stringsModule, stringsModule, "Variant", @@ -308,7 +316,7 @@ private List GetBuiltInDeclarations() 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"), + new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_Chr"), stringsModule, stringsModule, "Variant", @@ -323,7 +331,7 @@ private List GetBuiltInDeclarations() 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"), + new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_Format"), stringsModule, stringsModule, "Variant", @@ -338,7 +346,7 @@ private List GetBuiltInDeclarations() 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"), + new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "Expression"), formatFunction, "Variant", null, @@ -347,7 +355,7 @@ private List GetBuiltInDeclarations() true); var secondFormatParam = new ParameterDeclaration( - new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "Format"), + new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "Format"), formatFunction, "Variant", null, @@ -356,7 +364,7 @@ private List GetBuiltInDeclarations() true); var thirdFormatParam = new ParameterDeclaration( - new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "FirstDayOfWeek"), + new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "FirstDayOfWeek"), formatFunction, "VbDayOfWeek", null, @@ -369,7 +377,7 @@ private List GetBuiltInDeclarations() 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"), + new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_Right"), stringsModule, stringsModule, "Variant", @@ -384,7 +392,7 @@ private List GetBuiltInDeclarations() 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"), + new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "String"), rightFunction, "Variant", null, @@ -395,7 +403,7 @@ private List GetBuiltInDeclarations() 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"), + new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_LCase"), stringsModule, stringsModule, "Variant", @@ -410,7 +418,7 @@ private List GetBuiltInDeclarations() 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"), + new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_LeftB"), stringsModule, stringsModule, "Variant", @@ -425,7 +433,7 @@ private List GetBuiltInDeclarations() 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"), + new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "String"), leftbFunction, "Variant", null, @@ -436,7 +444,7 @@ private List GetBuiltInDeclarations() 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"), + new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_ChrW"), stringsModule, stringsModule, "Variant", @@ -451,7 +459,7 @@ private List GetBuiltInDeclarations() 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"), + new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_Left"), stringsModule, stringsModule, "Variant", @@ -466,7 +474,7 @@ private List GetBuiltInDeclarations() 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"), + new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "String"), leftFunction, "Variant", null, @@ -477,7 +485,7 @@ private List GetBuiltInDeclarations() 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"), + new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_RightB"), stringsModule, stringsModule, "Variant", @@ -492,7 +500,7 @@ private List GetBuiltInDeclarations() 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"), + new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "String"), rightbFunction, "Variant", null, @@ -503,7 +511,7 @@ private List GetBuiltInDeclarations() 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"), + new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_MidB"), stringsModule, stringsModule, "Variant", @@ -518,7 +526,7 @@ private List GetBuiltInDeclarations() 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"), + new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "String"), midbFunction, "Variant", null, @@ -527,7 +535,7 @@ private List GetBuiltInDeclarations() true); var secondMidBParam = new ParameterDeclaration( - new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "Start"), + new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "Start"), midbFunction, "Long", null, @@ -539,7 +547,7 @@ private List GetBuiltInDeclarations() 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"), + new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_UCase"), stringsModule, stringsModule, "Variant", @@ -554,7 +562,7 @@ private List GetBuiltInDeclarations() 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"), + new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_Trim"), stringsModule, stringsModule, "Variant", @@ -569,7 +577,7 @@ private List GetBuiltInDeclarations() 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"), + new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_LTrim"), stringsModule, stringsModule, "Variant", @@ -584,7 +592,7 @@ private List GetBuiltInDeclarations() 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"), + new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "_B_var_Mid"), stringsModule, stringsModule, "Variant", @@ -599,7 +607,7 @@ private List GetBuiltInDeclarations() 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"), + new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "String"), midbFunction, "Variant", null, @@ -608,7 +616,7 @@ private List GetBuiltInDeclarations() true); var secondMidParam = new ParameterDeclaration( - new QualifiedMemberName(new QualifiedModuleName("VBA", "C:\\Program Files\\Common Files\\Microsoft Shared\\VBA\\VBA7.1\\VBE7.DLL", "Strings"), "Start"), + new QualifiedMemberName(stringsModule.QualifiedName.QualifiedModuleName, "Start"), midbFunction, "Long", null, @@ -620,7 +628,7 @@ private List GetBuiltInDeclarations() 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"), + new QualifiedMemberName(conversionModule.QualifiedName.QualifiedModuleName, "_B_var_Hex"), conversionModule, conversionModule, "Variant", @@ -635,7 +643,7 @@ private List GetBuiltInDeclarations() 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"), + new QualifiedMemberName(conversionModule.QualifiedName.QualifiedModuleName, "_B_var_Oct"), conversionModule, conversionModule, "Variant", @@ -650,7 +658,7 @@ private List GetBuiltInDeclarations() 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"), + new QualifiedMemberName(conversionModule.QualifiedName.QualifiedModuleName, "_B_var_Error"), conversionModule, conversionModule, "Variant", @@ -665,7 +673,7 @@ private List GetBuiltInDeclarations() 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"), + new QualifiedMemberName(conversionModule.QualifiedName.QualifiedModuleName, "_B_var_Str"), conversionModule, conversionModule, "Variant", @@ -680,7 +688,7 @@ private List GetBuiltInDeclarations() 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"), + new QualifiedMemberName(fileSystemModule.QualifiedName.QualifiedModuleName, "_B_var_CurDir"), fileSystemModule, fileSystemModule, "Variant", @@ -694,6 +702,37 @@ private List GetBuiltInDeclarations() new List(), new Attributes()); + var datePropertyGet = new PropertyGetDeclaration( + new QualifiedMemberName(dateTimeModule.QualifiedName.QualifiedModuleName, "Date"), + dateTimeModule, + dateTimeModule, + "Variant", + null, + string.Empty, + Accessibility.Global, + null, + new Selection(), + false, + true, + new List(), + new Attributes()); + + + var timePropertyGet = new PropertyGetDeclaration( + new QualifiedMemberName(dateTimeModule.QualifiedName.QualifiedModuleName, "Time"), + dateTimeModule, + dateTimeModule, + "Variant", + null, + string.Empty, + Accessibility.Global, + null, + new Selection(), + false, + true, + new List(), + new Attributes()); + return new List { vbaDeclaration, @@ -701,6 +740,7 @@ private List GetBuiltInDeclarations() fileSystemModule, interactionModule, stringsModule, + dateTimeModule, commandFunction, environFunction, rtrimFunction, @@ -732,7 +772,9 @@ private List GetBuiltInDeclarations() octFunction, errorFunction, strFunction, - curDirFunction + curDirFunction, + datePropertyGet, + timePropertyGet }; } }