From 7f9b1226c17ece2a83ba7adaeebe132e7a3b06c3 Mon Sep 17 00:00:00 2001 From: comintern Date: Fri, 20 Jan 2017 17:38:40 -0600 Subject: [PATCH 1/4] Fix selection navigation from TestMethod, ref #2563 (1) --- RetailCoder.VBE/UnitTesting/TestMethod.cs | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/RetailCoder.VBE/UnitTesting/TestMethod.cs b/RetailCoder.VBE/UnitTesting/TestMethod.cs index 6c70b020f7..ff0e07cedc 100644 --- a/RetailCoder.VBE/UnitTesting/TestMethod.cs +++ b/RetailCoder.VBE/UnitTesting/TestMethod.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Globalization; using System.Linq; +using Rubberduck.Parsing; using Rubberduck.Parsing.Symbols; using Rubberduck.UI; using Rubberduck.UI.Controls; @@ -88,16 +89,7 @@ private AssertCompletedEventArgs EvaluateResults() public NavigateCodeEventArgs GetNavigationArgs() { - var moduleName = Declaration.QualifiedName.QualifiedModuleName; - var methodName = Declaration.IdentifierName; - var module = moduleName.Component.CodeModule; - - var startLine = module.GetProcBodyStartLine(methodName, ProcKind.Procedure); - var endLine = startLine + module.GetProcCountLines(methodName, ProcKind.Procedure); - var endLineColumns = module.GetLines(endLine, 1).Length; - - var selection = new Selection(startLine, 1, endLine, endLineColumns == 0 ? 1 : endLineColumns); - return new NavigateCodeEventArgs(new QualifiedSelection(moduleName, selection)); + return new NavigateCodeEventArgs(new QualifiedSelection(Declaration.QualifiedName.QualifiedModuleName, Declaration.Context.GetSelection())); } public object[] ToArray() From 178daebed814419751777f2e8e06c48ed9a20ae6 Mon Sep 17 00:00:00 2001 From: comintern Date: Fri, 20 Jan 2017 17:42:20 -0600 Subject: [PATCH 2/4] Move DeclarationLoaders to thier own namespace, WIP API declaration loader. --- RetailCoder.VBE/API/Declaration.cs | 8 +- RetailCoder.VBE/API/ParserState.cs | 14 +- RetailCoder.VBE/Root/RubberduckModule.cs | 1 + Rubberduck.Parsing/Rubberduck.Parsing.csproj | 11 +- .../AliasDeclarations.cs | 6 +- .../DebugDeclarations.cs | 9 +- .../FormEventDeclarations.cs | 4 +- .../ICustomDeclarationLoader.cs | 2 +- .../RubberduckApiDeclarations.cs | 164 ++++++++++++++++++ .../SpecialFormDeclarations.cs | 11 +- .../Symbols/IdentifierReferenceResolver.cs | 1 + Rubberduck.Parsing/VBA/ParseCoordinator.cs | 1 + .../VBA/RubberduckParserState.cs | 11 -- Rubberduck.sln | 2 +- RubberduckTests/Mocks/MockParser.cs | 1 + 15 files changed, 206 insertions(+), 40 deletions(-) rename Rubberduck.Parsing/Symbols/{ => DeclarationLoaders}/AliasDeclarations.cs (99%) rename Rubberduck.Parsing/Symbols/{ => DeclarationLoaders}/DebugDeclarations.cs (97%) rename Rubberduck.Parsing/Symbols/{ => DeclarationLoaders}/FormEventDeclarations.cs (99%) rename Rubberduck.Parsing/Symbols/{ => DeclarationLoaders}/ICustomDeclarationLoader.cs (71%) create mode 100644 Rubberduck.Parsing/Symbols/DeclarationLoaders/RubberduckApiDeclarations.cs rename Rubberduck.Parsing/Symbols/{ => DeclarationLoaders}/SpecialFormDeclarations.cs (98%) diff --git a/RetailCoder.VBE/API/Declaration.cs b/RetailCoder.VBE/API/Declaration.cs index e6b4058669..69e650cf87 100644 --- a/RetailCoder.VBE/API/Declaration.cs +++ b/RetailCoder.VBE/API/Declaration.cs @@ -10,14 +10,18 @@ namespace Rubberduck.API [InterfaceType(ComInterfaceType.InterfaceIsDual)] public interface IDeclaration { + [ComVisible(true)] string Name { get; } + [ComVisible(true)] Accessibility Accessibility { get; } + [ComVisible(true)] DeclarationType DeclarationType { get; } string TypeName { get; } + [ComVisible(true)] bool IsArray { get; } - + [ComVisible(true)] Declaration ParentDeclaration { get; } - + [ComVisible(true)] IdentifierReference[] References { get; } } diff --git a/RetailCoder.VBE/API/ParserState.cs b/RetailCoder.VBE/API/ParserState.cs index 72007d90f3..f16dc5bd5f 100644 --- a/RetailCoder.VBE/API/ParserState.cs +++ b/RetailCoder.VBE/API/ParserState.cs @@ -4,12 +4,11 @@ using System.Linq; using System.Runtime.InteropServices; using Rubberduck.Common; +using Rubberduck.Parsing.Symbols.DeclarationLoaders; using Rubberduck.Parsing.VBA; using Rubberduck.UI.Command.MenuItems; using Rubberduck.Parsing.Preprocessing; using System.Globalization; -using Rubberduck.Parsing.Symbols; -using Rubberduck.VBEditor.SafeComWrappers; using Rubberduck.VBEditor.SafeComWrappers.VBA; namespace Rubberduck.API @@ -72,7 +71,14 @@ public void Initialize(Microsoft.Vbe.Interop.VBE vbe) Func preprocessorFactory = () => new VBAPreprocessor(double.Parse(_vbe.Version, CultureInfo.InvariantCulture)); _attributeParser = new AttributeParser(new ModuleExporter(), preprocessorFactory); _parser = new ParseCoordinator(_vbe, _state, _attributeParser, preprocessorFactory, - new List { new DebugDeclarations(_state), new SpecialFormDeclarations(_state), new FormEventDeclarations(_state), new AliasDeclarations(_state) }); + new List + { + new DebugDeclarations(_state), + new SpecialFormDeclarations(_state), + new FormEventDeclarations(_state), + new AliasDeclarations(_state), + new RubberduckApiDeclarations(_state) + }); } /// @@ -97,7 +103,7 @@ public void BeginParse() public event Action OnReady; public event Action OnError; - private void _state_StateChanged(object sender, System.EventArgs e) + private void _state_StateChanged(object sender, EventArgs e) { _allDeclarations = _state.AllDeclarations .Select(item => new Declaration(item)) diff --git a/RetailCoder.VBE/Root/RubberduckModule.cs b/RetailCoder.VBE/Root/RubberduckModule.cs index 613bf70e6b..6cb62b23da 100644 --- a/RetailCoder.VBE/Root/RubberduckModule.cs +++ b/RetailCoder.VBE/Root/RubberduckModule.cs @@ -7,6 +7,7 @@ using Ninject.Modules; using Rubberduck.Common; using Rubberduck.Parsing; +using Rubberduck.Parsing.Symbols.DeclarationLoaders; using Rubberduck.Parsing.VBA; using Rubberduck.Settings; using Rubberduck.SettingsProvider; diff --git a/Rubberduck.Parsing/Rubberduck.Parsing.csproj b/Rubberduck.Parsing/Rubberduck.Parsing.csproj index 208197c693..1888dca353 100644 --- a/Rubberduck.Parsing/Rubberduck.Parsing.csproj +++ b/Rubberduck.Parsing/Rubberduck.Parsing.csproj @@ -143,13 +143,13 @@ - + - - - - + + + + @@ -257,6 +257,7 @@ + diff --git a/Rubberduck.Parsing/Symbols/AliasDeclarations.cs b/Rubberduck.Parsing/Symbols/DeclarationLoaders/AliasDeclarations.cs similarity index 99% rename from Rubberduck.Parsing/Symbols/AliasDeclarations.cs rename to Rubberduck.Parsing/Symbols/DeclarationLoaders/AliasDeclarations.cs index ffcbe05495..8938b3bd81 100644 --- a/Rubberduck.Parsing/Symbols/AliasDeclarations.cs +++ b/Rubberduck.Parsing/Symbols/DeclarationLoaders/AliasDeclarations.cs @@ -1,10 +1,10 @@ using System.Collections.Generic; -using Rubberduck.Parsing.VBA; -using Rubberduck.VBEditor; using System.Linq; using Rubberduck.Parsing.Annotations; +using Rubberduck.Parsing.VBA; +using Rubberduck.VBEditor; -namespace Rubberduck.Parsing.Symbols +namespace Rubberduck.Parsing.Symbols.DeclarationLoaders { public class AliasDeclarations : ICustomDeclarationLoader { diff --git a/Rubberduck.Parsing/Symbols/DebugDeclarations.cs b/Rubberduck.Parsing/Symbols/DeclarationLoaders/DebugDeclarations.cs similarity index 97% rename from Rubberduck.Parsing/Symbols/DebugDeclarations.cs rename to Rubberduck.Parsing/Symbols/DeclarationLoaders/DebugDeclarations.cs index 934456a412..2e706d118c 100644 --- a/Rubberduck.Parsing/Symbols/DebugDeclarations.cs +++ b/Rubberduck.Parsing/Symbols/DeclarationLoaders/DebugDeclarations.cs @@ -1,11 +1,10 @@ -using Rubberduck.Parsing.Annotations; +using System.Collections.Generic; +using System.Linq; +using Rubberduck.Parsing.Annotations; using Rubberduck.Parsing.VBA; using Rubberduck.VBEditor; -using System.Collections.Generic; -using System.Linq; -using Rubberduck.Parsing.Grammar; -namespace Rubberduck.Parsing.Symbols +namespace Rubberduck.Parsing.Symbols.DeclarationLoaders { public class DebugDeclarations : ICustomDeclarationLoader { diff --git a/Rubberduck.Parsing/Symbols/FormEventDeclarations.cs b/Rubberduck.Parsing/Symbols/DeclarationLoaders/FormEventDeclarations.cs similarity index 99% rename from Rubberduck.Parsing/Symbols/FormEventDeclarations.cs rename to Rubberduck.Parsing/Symbols/DeclarationLoaders/FormEventDeclarations.cs index b12ba229d3..4f81c52dcc 100644 --- a/Rubberduck.Parsing/Symbols/FormEventDeclarations.cs +++ b/Rubberduck.Parsing/Symbols/DeclarationLoaders/FormEventDeclarations.cs @@ -1,9 +1,9 @@ using System.Collections.Generic; +using Rubberduck.Parsing.Annotations; using Rubberduck.Parsing.VBA; using Rubberduck.VBEditor; -using Rubberduck.Parsing.Annotations; -namespace Rubberduck.Parsing.Symbols +namespace Rubberduck.Parsing.Symbols.DeclarationLoaders { public class FormEventDeclarations : ICustomDeclarationLoader { diff --git a/Rubberduck.Parsing/Symbols/ICustomDeclarationLoader.cs b/Rubberduck.Parsing/Symbols/DeclarationLoaders/ICustomDeclarationLoader.cs similarity index 71% rename from Rubberduck.Parsing/Symbols/ICustomDeclarationLoader.cs rename to Rubberduck.Parsing/Symbols/DeclarationLoaders/ICustomDeclarationLoader.cs index 45df9be267..6027861c2b 100644 --- a/Rubberduck.Parsing/Symbols/ICustomDeclarationLoader.cs +++ b/Rubberduck.Parsing/Symbols/DeclarationLoaders/ICustomDeclarationLoader.cs @@ -1,6 +1,6 @@ using System.Collections.Generic; -namespace Rubberduck.Parsing.Symbols +namespace Rubberduck.Parsing.Symbols.DeclarationLoaders { public interface ICustomDeclarationLoader { diff --git a/Rubberduck.Parsing/Symbols/DeclarationLoaders/RubberduckApiDeclarations.cs b/Rubberduck.Parsing/Symbols/DeclarationLoaders/RubberduckApiDeclarations.cs new file mode 100644 index 0000000000..0e94b7883c --- /dev/null +++ b/Rubberduck.Parsing/Symbols/DeclarationLoaders/RubberduckApiDeclarations.cs @@ -0,0 +1,164 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Runtime.InteropServices; +using Rubberduck.Parsing.Annotations; +using Rubberduck.Parsing.ComReflection; +using Rubberduck.Parsing.VBA; +using Rubberduck.VBEditor; + +namespace Rubberduck.Parsing.Symbols.DeclarationLoaders +{ + public class RubberduckApiDeclarations : ICustomDeclarationLoader + { + private readonly RubberduckParserState _state; + private readonly List _declarations = new List(); + + public RubberduckApiDeclarations(RubberduckParserState state) + { + _state = state; + } + + public IReadOnlyList Load() + { + var assembly = AppDomain.CurrentDomain.GetAssemblies().SingleOrDefault(a => a.GetName().Name.Equals("Rubberduck")); + if (assembly == null) + { + return _declarations; + } + + var name = assembly.GetName(); + var path = Path.ChangeExtension(assembly.Location, "tlb"); + + var projectName = new QualifiedModuleName("Rubberduck", path, "Rubberduck"); + var project = new ProjectDeclaration(projectName.QualifyMemberName("Rubberduck"), "Rubberduck", true, null) + { + MajorVersion = name.Version.Major, + MinorVersion = name.Version.Minor + }; + _declarations.Add(project); + + var types = assembly.DefinedTypes.WhereIsComVisible(); + + foreach (var type in types) + { + var module = type.ToModuleDeclaration(project, projectName, type.IsEnum); + _declarations.Add(module); + + var properties = type.GetProperties().WhereIsComVisible().ToList(); + + foreach (var property in properties) + { + if (property.CanWrite && property.GetSetMethod().IsPublic) + { + var declaration = property.ToMemberDeclaration(module, false); + _declarations.Add(declaration); + } + if (property.CanRead && property.GetGetMethod().IsPublic) + { + var declaration = property.ToMemberDeclaration(module, true); + _declarations.Add(declaration); + } + } + + var members = type.GetMembers().WhereIsComVisible(); + + foreach (var member in members) + { + if (member.MemberType == MemberTypes.Property) + { + + } + //var declaration = member.ToMemberDeclaration(project); + } + }; + return _declarations; + } + } + + internal static class RubberduckApiDeclarationStatics + { + public static IEnumerable WhereIsComVisible(this IEnumerable source) where T : MemberInfo + { + return source.Where(member => + { + var attr = member.GetCustomAttributes(typeof(ComVisibleAttribute), true).FirstOrDefault(); + return attr != null && ((ComVisibleAttribute)attr).Value; + }); + } + + public static Declaration ToModuleDeclaration(this TypeInfo type, Declaration project, QualifiedModuleName projectName, bool isEnum = false) + { + return isEnum ? new ProceduralModuleDeclaration(projectName.QualifyMemberName(type.Name), project, type.Name, true, null, null) as Declaration : + new ClassModuleDeclaration(projectName.QualifyMemberName(type.Name), project, type.Name, true, null, null); + } + + public static Declaration ToMemberDeclaration(this PropertyInfo member, Declaration parent, bool getter) + { + if (getter) + { + return new PropertyGetDeclaration(parent.QualifiedName.QualifiedModuleName.QualifyMemberName(member.Name), + parent, + parent, + member.PropertyType.ToVbaTypeName(), + null, + string.Empty, + parent.Accessibility, + null, + Selection.Home, + member.PropertyType.IsArray, + true, + null, + new Attributes()); + } + if (member.PropertyType.IsClass) + { + return new PropertySetDeclaration(parent.QualifiedName.QualifiedModuleName.QualifyMemberName(member.Name), + parent, + parent, + member.PropertyType.ToVbaTypeName(), + parent.Accessibility, + null, + Selection.Home, + true, + null, + new Attributes()); + } + return new PropertyLetDeclaration(parent.QualifiedName.QualifiedModuleName.QualifyMemberName(member.Name), + parent, + parent, + member.PropertyType.ToVbaTypeName(), + parent.Accessibility, + null, + Selection.Home, + true, + null, + new Attributes()); + } + + public static string ToVbaTypeName(this Type type) + { + var name = string.Empty; + if (type.IsClass || type.IsEnum) + { + name = type.Name; + } + switch (type.Name) + { + case "bool": + name = "Boolean"; + break; + case "short": + name = "Integer"; + break; + case "int": + name = "Long"; + break; + } + return name + (type.IsArray ? "()" : string.Empty); + } + } +} diff --git a/Rubberduck.Parsing/Symbols/SpecialFormDeclarations.cs b/Rubberduck.Parsing/Symbols/DeclarationLoaders/SpecialFormDeclarations.cs similarity index 98% rename from Rubberduck.Parsing/Symbols/SpecialFormDeclarations.cs rename to Rubberduck.Parsing/Symbols/DeclarationLoaders/SpecialFormDeclarations.cs index 07bfc05add..0f7bb8d9a3 100644 --- a/Rubberduck.Parsing/Symbols/SpecialFormDeclarations.cs +++ b/Rubberduck.Parsing/Symbols/DeclarationLoaders/SpecialFormDeclarations.cs @@ -1,12 +1,11 @@ -using Rubberduck.Parsing.Annotations; -using Rubberduck.Parsing.VBA; -using Rubberduck.VBEditor; -using System.Collections.Generic; +using System.Collections.Generic; using System.Diagnostics; using System.Linq; -using Rubberduck.Parsing.Grammar; +using Rubberduck.Parsing.Annotations; +using Rubberduck.Parsing.VBA; +using Rubberduck.VBEditor; -namespace Rubberduck.Parsing.Symbols +namespace Rubberduck.Parsing.Symbols.DeclarationLoaders { public class SpecialFormDeclarations : ICustomDeclarationLoader { diff --git a/Rubberduck.Parsing/Symbols/IdentifierReferenceResolver.cs b/Rubberduck.Parsing/Symbols/IdentifierReferenceResolver.cs index 7b2a6320db..1817740425 100644 --- a/Rubberduck.Parsing/Symbols/IdentifierReferenceResolver.cs +++ b/Rubberduck.Parsing/Symbols/IdentifierReferenceResolver.cs @@ -3,6 +3,7 @@ using Rubberduck.Parsing.Annotations; using Rubberduck.Parsing.Binding; using Rubberduck.Parsing.Grammar; +using Rubberduck.Parsing.Symbols.DeclarationLoaders; using Rubberduck.VBEditor; using System.Collections.Generic; using System.Linq; diff --git a/Rubberduck.Parsing/VBA/ParseCoordinator.cs b/Rubberduck.Parsing/VBA/ParseCoordinator.cs index b9015c33aa..b37d6098b7 100644 --- a/Rubberduck.Parsing/VBA/ParseCoordinator.cs +++ b/Rubberduck.Parsing/VBA/ParseCoordinator.cs @@ -6,6 +6,7 @@ using Antlr4.Runtime; using Antlr4.Runtime.Tree; using Rubberduck.Parsing.Symbols; +using Rubberduck.Parsing.Symbols.DeclarationLoaders; using Rubberduck.VBEditor; using Rubberduck.Parsing.Preprocessing; using System.Diagnostics; diff --git a/Rubberduck.Parsing/VBA/RubberduckParserState.cs b/Rubberduck.Parsing/VBA/RubberduckParserState.cs index cdb93a30b1..662f83b0d3 100644 --- a/Rubberduck.Parsing/VBA/RubberduckParserState.cs +++ b/Rubberduck.Parsing/VBA/RubberduckParserState.cs @@ -532,17 +532,6 @@ public List AllComments } } - public IEnumerable GetModuleComments(IVBComponent component) - { - ModuleState state; - if (_moduleStates.TryGetValue(new QualifiedModuleName(component), out state)) - { - return state.Comments; - } - - return new List(); - } - public void SetModuleComments(IVBComponent component, IEnumerable comments) { _moduleStates[new QualifiedModuleName(component)].SetComments(new List(comments)); diff --git a/Rubberduck.sln b/Rubberduck.sln index a3fe2a57e1..2d2259e3b8 100644 --- a/Rubberduck.sln +++ b/Rubberduck.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 # Visual Studio 2013 -VisualStudioVersion = 12.0.40629.0 +VisualStudioVersion = 12.0.31101.0 MinimumVisualStudioVersion = 10.0.40219.1 Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Rubberduck", "RetailCoder.VBE\Rubberduck.csproj", "{20589DE8-432E-4359-9232-69EB070B7185}" ProjectSection(ProjectDependencies) = postProject diff --git a/RubberduckTests/Mocks/MockParser.cs b/RubberduckTests/Mocks/MockParser.cs index c14fb05397..f06da5913e 100644 --- a/RubberduckTests/Mocks/MockParser.cs +++ b/RubberduckTests/Mocks/MockParser.cs @@ -5,6 +5,7 @@ using Microsoft.VisualStudio.TestTools.UnitTesting; using Moq; using Rubberduck.Parsing.Symbols; +using Rubberduck.Parsing.Symbols.DeclarationLoaders; using Rubberduck.Parsing.VBA; using Rubberduck.VBEditor; using Rubberduck.Parsing.Preprocessing; From 5f2bae820b57aa94c0426937f49de3706995897a Mon Sep 17 00:00:00 2001 From: comintern Date: Fri, 20 Jan 2017 17:46:30 -0600 Subject: [PATCH 3/4] Comment out WIP RubberduckApiDeclarations so it doesn't bind. --- .../RubberduckApiDeclarations.cs | 296 +++++++++--------- 1 file changed, 148 insertions(+), 148 deletions(-) diff --git a/Rubberduck.Parsing/Symbols/DeclarationLoaders/RubberduckApiDeclarations.cs b/Rubberduck.Parsing/Symbols/DeclarationLoaders/RubberduckApiDeclarations.cs index 0e94b7883c..df73174b5d 100644 --- a/Rubberduck.Parsing/Symbols/DeclarationLoaders/RubberduckApiDeclarations.cs +++ b/Rubberduck.Parsing/Symbols/DeclarationLoaders/RubberduckApiDeclarations.cs @@ -1,164 +1,164 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Linq; -using System.Reflection; -using System.Runtime.InteropServices; -using Rubberduck.Parsing.Annotations; -using Rubberduck.Parsing.ComReflection; -using Rubberduck.Parsing.VBA; -using Rubberduck.VBEditor; +//using System; +//using System.Collections.Generic; +//using System.Diagnostics; +//using System.IO; +//using System.Linq; +//using System.Reflection; +//using System.Runtime.InteropServices; +//using Rubberduck.Parsing.Annotations; +//using Rubberduck.Parsing.ComReflection; +//using Rubberduck.Parsing.VBA; +//using Rubberduck.VBEditor; -namespace Rubberduck.Parsing.Symbols.DeclarationLoaders -{ - public class RubberduckApiDeclarations : ICustomDeclarationLoader - { - private readonly RubberduckParserState _state; - private readonly List _declarations = new List(); +//namespace Rubberduck.Parsing.Symbols.DeclarationLoaders +//{ +// public class RubberduckApiDeclarations : ICustomDeclarationLoader +// { +// private readonly RubberduckParserState _state; +// private readonly List _declarations = new List(); - public RubberduckApiDeclarations(RubberduckParserState state) - { - _state = state; - } +// public RubberduckApiDeclarations(RubberduckParserState state) +// { +// _state = state; +// } - public IReadOnlyList Load() - { - var assembly = AppDomain.CurrentDomain.GetAssemblies().SingleOrDefault(a => a.GetName().Name.Equals("Rubberduck")); - if (assembly == null) - { - return _declarations; - } +// public IReadOnlyList Load() +// { +// var assembly = AppDomain.CurrentDomain.GetAssemblies().SingleOrDefault(a => a.GetName().Name.Equals("Rubberduck")); +// if (assembly == null) +// { +// return _declarations; +// } - var name = assembly.GetName(); - var path = Path.ChangeExtension(assembly.Location, "tlb"); +// var name = assembly.GetName(); +// var path = Path.ChangeExtension(assembly.Location, "tlb"); - var projectName = new QualifiedModuleName("Rubberduck", path, "Rubberduck"); - var project = new ProjectDeclaration(projectName.QualifyMemberName("Rubberduck"), "Rubberduck", true, null) - { - MajorVersion = name.Version.Major, - MinorVersion = name.Version.Minor - }; - _declarations.Add(project); +// var projectName = new QualifiedModuleName("Rubberduck", path, "Rubberduck"); +// var project = new ProjectDeclaration(projectName.QualifyMemberName("Rubberduck"), "Rubberduck", true, null) +// { +// MajorVersion = name.Version.Major, +// MinorVersion = name.Version.Minor +// }; +// _declarations.Add(project); - var types = assembly.DefinedTypes.WhereIsComVisible(); +// var types = assembly.DefinedTypes.WhereIsComVisible(); - foreach (var type in types) - { - var module = type.ToModuleDeclaration(project, projectName, type.IsEnum); - _declarations.Add(module); +// foreach (var type in types) +// { +// var module = type.ToModuleDeclaration(project, projectName, type.IsEnum); +// _declarations.Add(module); - var properties = type.GetProperties().WhereIsComVisible().ToList(); +// var properties = type.GetProperties().WhereIsComVisible().ToList(); - foreach (var property in properties) - { - if (property.CanWrite && property.GetSetMethod().IsPublic) - { - var declaration = property.ToMemberDeclaration(module, false); - _declarations.Add(declaration); - } - if (property.CanRead && property.GetGetMethod().IsPublic) - { - var declaration = property.ToMemberDeclaration(module, true); - _declarations.Add(declaration); - } - } +// foreach (var property in properties) +// { +// if (property.CanWrite && property.GetSetMethod().IsPublic) +// { +// var declaration = property.ToMemberDeclaration(module, false); +// _declarations.Add(declaration); +// } +// if (property.CanRead && property.GetGetMethod().IsPublic) +// { +// var declaration = property.ToMemberDeclaration(module, true); +// _declarations.Add(declaration); +// } +// } - var members = type.GetMembers().WhereIsComVisible(); +// var members = type.GetMembers().WhereIsComVisible(); - foreach (var member in members) - { - if (member.MemberType == MemberTypes.Property) - { +// foreach (var member in members) +// { +// if (member.MemberType == MemberTypes.Property) +// { - } - //var declaration = member.ToMemberDeclaration(project); - } - }; - return _declarations; - } - } +// } +// //var declaration = member.ToMemberDeclaration(project); +// } +// }; +// return _declarations; +// } +// } - internal static class RubberduckApiDeclarationStatics - { - public static IEnumerable WhereIsComVisible(this IEnumerable source) where T : MemberInfo - { - return source.Where(member => - { - var attr = member.GetCustomAttributes(typeof(ComVisibleAttribute), true).FirstOrDefault(); - return attr != null && ((ComVisibleAttribute)attr).Value; - }); - } +// internal static class RubberduckApiDeclarationStatics +// { +// public static IEnumerable WhereIsComVisible(this IEnumerable source) where T : MemberInfo +// { +// return source.Where(member => +// { +// var attr = member.GetCustomAttributes(typeof(ComVisibleAttribute), true).FirstOrDefault(); +// return attr != null && ((ComVisibleAttribute)attr).Value; +// }); +// } - public static Declaration ToModuleDeclaration(this TypeInfo type, Declaration project, QualifiedModuleName projectName, bool isEnum = false) - { - return isEnum ? new ProceduralModuleDeclaration(projectName.QualifyMemberName(type.Name), project, type.Name, true, null, null) as Declaration : - new ClassModuleDeclaration(projectName.QualifyMemberName(type.Name), project, type.Name, true, null, null); - } +// public static Declaration ToModuleDeclaration(this TypeInfo type, Declaration project, QualifiedModuleName projectName, bool isEnum = false) +// { +// return isEnum ? new ProceduralModuleDeclaration(projectName.QualifyMemberName(type.Name), project, type.Name, true, null, null) as Declaration : +// new ClassModuleDeclaration(projectName.QualifyMemberName(type.Name), project, type.Name, true, null, null); +// } - public static Declaration ToMemberDeclaration(this PropertyInfo member, Declaration parent, bool getter) - { - if (getter) - { - return new PropertyGetDeclaration(parent.QualifiedName.QualifiedModuleName.QualifyMemberName(member.Name), - parent, - parent, - member.PropertyType.ToVbaTypeName(), - null, - string.Empty, - parent.Accessibility, - null, - Selection.Home, - member.PropertyType.IsArray, - true, - null, - new Attributes()); - } - if (member.PropertyType.IsClass) - { - return new PropertySetDeclaration(parent.QualifiedName.QualifiedModuleName.QualifyMemberName(member.Name), - parent, - parent, - member.PropertyType.ToVbaTypeName(), - parent.Accessibility, - null, - Selection.Home, - true, - null, - new Attributes()); - } - return new PropertyLetDeclaration(parent.QualifiedName.QualifiedModuleName.QualifyMemberName(member.Name), - parent, - parent, - member.PropertyType.ToVbaTypeName(), - parent.Accessibility, - null, - Selection.Home, - true, - null, - new Attributes()); - } +// public static Declaration ToMemberDeclaration(this PropertyInfo member, Declaration parent, bool getter) +// { +// if (getter) +// { +// return new PropertyGetDeclaration(parent.QualifiedName.QualifiedModuleName.QualifyMemberName(member.Name), +// parent, +// parent, +// member.PropertyType.ToVbaTypeName(), +// null, +// string.Empty, +// parent.Accessibility, +// null, +// Selection.Home, +// member.PropertyType.IsArray, +// true, +// null, +// new Attributes()); +// } +// if (member.PropertyType.IsClass) +// { +// return new PropertySetDeclaration(parent.QualifiedName.QualifiedModuleName.QualifyMemberName(member.Name), +// parent, +// parent, +// member.PropertyType.ToVbaTypeName(), +// parent.Accessibility, +// null, +// Selection.Home, +// true, +// null, +// new Attributes()); +// } +// return new PropertyLetDeclaration(parent.QualifiedName.QualifiedModuleName.QualifyMemberName(member.Name), +// parent, +// parent, +// member.PropertyType.ToVbaTypeName(), +// parent.Accessibility, +// null, +// Selection.Home, +// true, +// null, +// new Attributes()); +// } - public static string ToVbaTypeName(this Type type) - { - var name = string.Empty; - if (type.IsClass || type.IsEnum) - { - name = type.Name; - } - switch (type.Name) - { - case "bool": - name = "Boolean"; - break; - case "short": - name = "Integer"; - break; - case "int": - name = "Long"; - break; - } - return name + (type.IsArray ? "()" : string.Empty); - } - } -} +// public static string ToVbaTypeName(this Type type) +// { +// var name = string.Empty; +// if (type.IsClass || type.IsEnum) +// { +// name = type.Name; +// } +// switch (type.Name) +// { +// case "bool": +// name = "Boolean"; +// break; +// case "short": +// name = "Integer"; +// break; +// case "int": +// name = "Long"; +// break; +// } +// return name + (type.IsArray ? "()" : string.Empty); +// } +// } +//} From bb2a07d2031473d23c32ffa42c6c6c9bb606c7f5 Mon Sep 17 00:00:00 2001 From: comintern Date: Fri, 20 Jan 2017 18:07:21 -0600 Subject: [PATCH 4/4] *Finished* commenting out declaration loader. --- RetailCoder.VBE/API/ParserState.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RetailCoder.VBE/API/ParserState.cs b/RetailCoder.VBE/API/ParserState.cs index f16dc5bd5f..b7851acd42 100644 --- a/RetailCoder.VBE/API/ParserState.cs +++ b/RetailCoder.VBE/API/ParserState.cs @@ -77,7 +77,7 @@ public void Initialize(Microsoft.Vbe.Interop.VBE vbe) new SpecialFormDeclarations(_state), new FormEventDeclarations(_state), new AliasDeclarations(_state), - new RubberduckApiDeclarations(_state) + //new RubberduckApiDeclarations(_state) }); }