Skip to content

Commit 47ca544

Browse files
committed
Fix a few more inspections
1 parent e09a073 commit 47ca544

File tree

4 files changed

+12
-8
lines changed

4 files changed

+12
-8
lines changed

RetailCoder.VBE/Common/DeclarationExtensions.cs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -220,33 +220,35 @@ public static IEnumerable<Declaration> FindEventHandlers(this IEnumerable<Declar
220220
&& declaration.IdentifierName.StartsWith(control.IdentifierName + "_"));
221221
}
222222

223-
public static IEnumerable<Declaration> FindBuiltInEventHandlers(this List<Declaration> declarations)
223+
public static IEnumerable<Declaration> FindBuiltInEventHandlers(this IEnumerable<Declaration> declarations)
224224
{
225-
var handlerNames = declarations.Where(declaration => declaration.IsBuiltIn && declaration.DeclarationType == DeclarationType.Event)
225+
var declarationList = declarations.ToList();
226+
227+
var handlerNames = declarationList.Where(declaration => declaration.IsBuiltIn && declaration.DeclarationType == DeclarationType.Event)
226228
.Select(e => e.ParentDeclaration.IdentifierName + "_" + e.IdentifierName);
227229

228230
// class module built-in events
229-
var classModuleHandlers = declarations.Where(item =>
231+
var classModuleHandlers = declarationList.Where(item =>
230232
item.DeclarationType == DeclarationType.Procedure &&
231233
item.ParentDeclaration.DeclarationType == DeclarationType.ClassModule &&
232234
(item.IdentifierName == "Class_Initialize" || item.IdentifierName == "Class_Terminate"));
233235

234236
// user form built-in events
235-
var userFormHandlers = declarations.Where(item =>
237+
var userFormHandlers = declarationList.Where(item =>
236238
item.DeclarationType == DeclarationType.Procedure &&
237239
item.ParentDeclaration.DeclarationType == DeclarationType.ClassModule &&
238240
item.QualifiedName.QualifiedModuleName.Component.Type == vbext_ComponentType.vbext_ct_MSForm &&
239241
new[]
240242
{
241243
"UserForm_Activate", "UserForm_AddControl", "UserForm_BeforeDragOver", "UserForm_BeforeDropOrPaste",
242-
"UserForm_Click", "UserForm_DblCIick", "UserForm_Deactivate", "UserForm_Error",
244+
"UserForm_Click", "UserForm_DblClick", "UserForm_Deactivate", "UserForm_Error",
243245
"UserForm_Initialize", "UserForm_KeyDown", "UserForm_KeyPress", "UserForm_KeyUp", "UserForm_Layout",
244246
"UserForm_MouseDown", "UserForm_MouseMove", "UserForm_MouseUp", "UserForm_QueryClose",
245247
"UserForm_RemoveControl", "UserForm_Resize", "UserForm_Scroll", "UserForm_Terminate",
246248
"UserForm_Zoom"
247249
}.Contains(item.IdentifierName));
248250

249-
var handlers = declarations.Where(declaration => !declaration.IsBuiltIn
251+
var handlers = declarationList.Where(declaration => !declaration.IsBuiltIn
250252
&& declaration.DeclarationType == DeclarationType.Procedure
251253
&& handlerNames.Contains(declaration.IdentifierName)).ToList();
252254

RetailCoder.VBE/Inspections/ImplicitByRefParameterInspection.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public override IEnumerable<InspectionResultBase> GetInspectionResults()
3030
// ParamArray parameters do not allow an explicit "ByRef" parameter mechanism.
3131
&& !((ParameterDeclaration)item).IsParamArray
3232
&& !interfaceMembers.Select(m => m.Scope).Contains(item.ParentScope)
33+
&& !UserDeclarations.FindBuiltInEventHandlers().Contains(item.ParentDeclaration)
3334
let arg = item.Context as VBAParser.ArgContext
3435
where arg != null && arg.BYREF() == null && arg.BYVAL() == null
3536
select new QualifiedContext<VBAParser.ArgContext>(item.QualifiedName, arg))

RetailCoder.VBE/Inspections/ParameterCanBeByValInspection.cs

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

5050
var eventScopes = declarations.Where(item =>
5151
!item.IsBuiltIn && item.DeclarationType == DeclarationType.Event)
52-
.Select(e => e.Scope);
52+
.Select(e => e.Scope).Concat(declarations.FindBuiltInEventHandlers().Select(e => e.Scope));
5353

5454
var declareScopes = declarations.Where(item =>
5555
item.DeclarationType == DeclarationType.LibraryFunction

RetailCoder.VBE/Inspections/ProcedureCanBeWrittenAsFunctionInspection.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,8 @@ public override IEnumerable<InspectionResultBase> GetInspectionResults()
7171
if (declaration == null) { return false; } // rather be safe than sorry
7272

7373
return UserDeclarations.Where(item => item.IsWithEvents)
74-
.All(withEvents => UserDeclarations.FindEventProcedures(withEvents) == null);
74+
.All(withEvents => UserDeclarations.FindEventProcedures(withEvents) == null) &&
75+
!UserDeclarations.FindBuiltInEventHandlers().Contains(declaration);
7576
});
7677

7778
return ParseTreeResults.ArgListsWithOneByRefParam

0 commit comments

Comments
 (0)