Skip to content

Commit f0c8a50

Browse files
committed
Synced with latest commits. Merge remote-tracking branch 'rubberduck-vba/next' into next
2 parents b8535e0 + e5e692f commit f0c8a50

13 files changed

+103
-36
lines changed

RetailCoder.VBE/Inspections/ImplicitByRefParameterInspection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public ImplicitByRefParameterInspection(RubberduckParserState state)
2323
public override IEnumerable<InspectionResultBase> GetInspectionResults()
2424
{
2525
var interfaceMembers = UserDeclarations.FindInterfaceImplementationMembers();
26-
var builtinEventHandlers = State.DeclarationFinder.FindBuiltinEventHandlers();
26+
var builtinEventHandlers = State.DeclarationFinder.FindEventHandlers();
2727

2828
var issues = State.DeclarationFinder
2929
.UserDeclarations(DeclarationType.Parameter)

RetailCoder.VBE/Inspections/ParameterCanBeByValInspection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public override IEnumerable<InspectionResultBase> GetInspectionResults()
3333

3434
var eventMembers = declarations.Where(item => !item.IsBuiltIn && item.DeclarationType == DeclarationType.Event).ToList();
3535
var formEventHandlerScopes = State.FindFormEventHandlers().Select(handler => handler.Scope);
36-
var eventHandlerScopes = State.DeclarationFinder.FindBuiltinEventHandlers().Concat(declarations.FindUserEventHandlers()).Select(e => e.Scope);
36+
var eventHandlerScopes = State.DeclarationFinder.FindEventHandlers().Concat(declarations.FindUserEventHandlers()).Select(e => e.Scope);
3737
var eventScopes = eventMembers.Select(s => s.Scope)
3838
.Concat(formEventHandlerScopes)
3939
.Concat(eventHandlerScopes);

RetailCoder.VBE/Inspections/ParameterNotUsedInspection.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using System.Collections.Generic;
22
using System.Linq;
3-
using Rubberduck.Common;
43
using Rubberduck.Inspections.Abstract;
54
using Rubberduck.Inspections.Resources;
65
using Rubberduck.Inspections.Results;
@@ -29,7 +28,7 @@ public override IEnumerable<InspectionResultBase> GetInspectionResults()
2928
var interfaceMembers = State.DeclarationFinder.FindAllInterfaceMembers();
3029
var interfaceImplementationMembers = State.DeclarationFinder.FindAllInterfaceImplementingMembers();
3130

32-
var builtInHandlers = State.DeclarationFinder.FindBuiltinEventHandlers();
31+
var handlers = State.DeclarationFinder.FindEventHandlers();
3332

3433
var parameters = State.DeclarationFinder
3534
.UserDeclarations(DeclarationType.Parameter)
@@ -39,7 +38,7 @@ public override IEnumerable<InspectionResultBase> GetInspectionResults()
3938
&& parameter.ParentDeclaration.DeclarationType != DeclarationType.LibraryFunction
4039
&& parameter.ParentDeclaration.DeclarationType != DeclarationType.LibraryProcedure
4140
&& !interfaceMembers.Contains(parameter.ParentDeclaration)
42-
&& !builtInHandlers.Contains(parameter.ParentDeclaration))
41+
&& !handlers.Contains(parameter.ParentDeclaration))
4342
.ToList();
4443

4544
var issues = from issue in parameters

RetailCoder.VBE/Inspections/ProcedureCanBeWrittenAsFunctionInspection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public override IEnumerable<InspectionResultBase> GetInspectionResults()
4343
}
4444

4545
var userDeclarations = UserDeclarations.ToList();
46-
var builtinHandlers = State.DeclarationFinder.FindBuiltinEventHandlers().ToList();
46+
var builtinHandlers = State.DeclarationFinder.FindEventHandlers().ToList();
4747

4848
var contextLookup = userDeclarations.Where(decl => decl.Context != null).ToDictionary(decl => decl.Context);
4949

RetailCoder.VBE/Inspections/ProcedureNotUsedInspection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public override IEnumerable<InspectionResultBase> GetInspectionResults()
4141
var handlers = State.DeclarationFinder.UserDeclarations(DeclarationType.Control)
4242
.SelectMany(control => declarations.FindEventHandlers(control)).ToList();
4343

44-
var builtInHandlers = State.DeclarationFinder.FindBuiltinEventHandlers();
44+
var builtInHandlers = State.DeclarationFinder.FindEventHandlers();
4545
handlers.AddRange(builtInHandlers);
4646

4747
var withEventFields = State.DeclarationFinder.UserDeclarations(DeclarationType.Variable).Where(item => item.IsWithEvents).ToList();

RetailCoder.VBE/Inspections/UseMeaningfulNameInspection.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public override IEnumerable<InspectionResultBase> GetInspectionResults()
4242
var settings = _settings.Load(new CodeInspectionSettings()) ?? new CodeInspectionSettings();
4343
var whitelistedNames = settings.WhitelistedIdentifiers.Select(s => s.Identifier).ToArray();
4444

45-
var handlers = State.DeclarationFinder.FindBuiltinEventHandlers();
45+
var handlers = State.DeclarationFinder.FindEventHandlers();
4646

4747
var issues = UserDeclarations
4848
.Where(declaration => !string.IsNullOrEmpty(declaration.IdentifierName) &&

RetailCoder.VBE/Root/RubberduckModule.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -466,7 +466,9 @@ private IMenuItem GetRefactoringsParentMenu()
466466
var items = new IMenuItem[]
467467
{
468468
KernelInstance.Get<CodePaneRefactorRenameCommandMenuItem>(),
469+
#if DEBUG
469470
KernelInstance.Get<RefactorExtractMethodCommandMenuItem>(),
471+
#endif
470472
KernelInstance.Get<RefactorReorderParametersCommandMenuItem>(),
471473
KernelInstance.Get<RefactorRemoveParametersCommandMenuItem>(),
472474
KernelInstance.Get<RefactorIntroduceParameterCommandMenuItem>(),
Lines changed: 4 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
using System;
2-
using System.Diagnostics;
3-
using System.Runtime.InteropServices;
1+
using System.Diagnostics;
42
using System.Runtime.InteropServices.ComTypes;
53
using TYPEATTR = System.Runtime.InteropServices.ComTypes.TYPEATTR;
64
using TYPEFLAGS = System.Runtime.InteropServices.ComTypes.TYPEFLAGS;
@@ -10,7 +8,6 @@ namespace Rubberduck.Parsing.ComReflection
108
[DebuggerDisplay("{Name} As {TypeName}")]
119
public class ComAlias : ComBase
1210
{
13-
public VarEnum VarType { get; private set; }
1411
public string TypeName { get; private set; }
1512
public bool IsHidden { get; private set; }
1613
public bool IsRestricted { get; private set; }
@@ -20,7 +17,6 @@ public ComAlias(ITypeLib typeLib, ITypeInfo info, int index, TYPEATTR attributes
2017
Index = index;
2118
Documentation = new ComDocumentation(typeLib, index);
2219
Guid = attributes.guid;
23-
VarType = (VarEnum)attributes.tdescAlias.vt;
2420
IsHidden = attributes.wTypeFlags.HasFlag(TYPEFLAGS.TYPEFLAG_FHIDDEN);
2521
IsRestricted = attributes.wTypeFlags.HasFlag(TYPEFLAGS.TYPEFLAG_FRESTRICTED);
2622

@@ -29,22 +25,9 @@ public ComAlias(ITypeLib typeLib, ITypeInfo info, int index, TYPEATTR attributes
2925
TypeName = "LongPtr";
3026
return;
3127
}
32-
33-
if (ComVariant.TypeNames.ContainsKey(VarType))
34-
{
35-
TypeName = ComVariant.TypeNames[VarType];
36-
}
37-
else if (VarType == VarEnum.VT_USERDEFINED)
38-
{
39-
ITypeInfo refType;
40-
info.GetRefTypeInfo((int)attributes.tdescAlias.lpValue, out refType);
41-
var doc = new ComDocumentation(refType, -1);
42-
TypeName = doc.Name;
43-
}
44-
else
45-
{
46-
throw new NotImplementedException(string.Format("Didn't expect an alias with a type of {0}.", VarType));
47-
}
28+
29+
var aliased = new ComParameter(attributes, info);
30+
TypeName = aliased.TypeName;
4831
}
4932
}
5033
}

Rubberduck.Parsing/ComReflection/ComParameter.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ public string DeclarationName
3737
public bool IsOptional { get; private set; }
3838
public bool IsParamArray { get; set; }
3939

40-
4140
private Guid _enumGuid = Guid.Empty;
4241
public bool IsEnumMember
4342
{
@@ -81,6 +80,12 @@ public ComParameter(ELEMDESC elemDesc, ITypeInfo info, string name)
8180
DefaultAsEnum = member != null ? member.Name : string.Empty;
8281
}
8382

83+
//This overload should only be used for retrieving the TypeName from a random TYPEATTR. TODO: Should be a base class of ComParameter instead.
84+
public ComParameter(TYPEATTR attributes, ITypeInfo info)
85+
{
86+
GetParameterType(attributes.tdescAlias, info);
87+
}
88+
8489
private void GetParameterType(TYPEDESC desc, ITypeInfo info)
8590
{
8691
var vt = (VarEnum)desc.vt;

Rubberduck.Parsing/Symbols/BoundExpressionVisitor.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using Rubberduck.Parsing.Annotations;
22
using Rubberduck.Parsing.Binding;
3+
using Rubberduck.Parsing.Grammar;
34
using Rubberduck.VBEditor;
45

56
namespace Rubberduck.Parsing.Symbols
@@ -47,6 +48,13 @@ private void Visit(
4748
bool isAssignmentTarget,
4849
bool hasExplicitLetStatement)
4950
{
51+
if (isAssignmentTarget && expression.Context.Parent is VBAParser.IndexExprContext && !expression.ReferencedDeclaration.IsArray)
52+
{
53+
// 'SomeDictionary' is not the assignment target in 'SomeDictionary("key") = 42'
54+
// ..but we want to treat array index assignment as assignment to the array itself.
55+
isAssignmentTarget = false;
56+
}
57+
5058
var callSiteContext = expression.Context;
5159
var identifier = expression.Context.GetText();
5260
var callee = expression.ReferencedDeclaration;

0 commit comments

Comments
 (0)