Skip to content

Commit 688d922

Browse files
committed
UserForm modules have UserForm declaration type; fixes the tests broken by 49db96c
1 parent 49db96c commit 688d922

File tree

4 files changed

+16
-8
lines changed

4 files changed

+16
-8
lines changed

Rubberduck.CodeAnalysis/Inspections/Concrete/ShadowedDeclarationInspection.cs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ private static bool DeclarationInReferencedProjectCanBeShadowed(Declaration orig
197197
return false;
198198
}
199199

200-
if (userDeclaration.DeclarationType == DeclarationType.ClassModule || userDeclaration.DeclarationType == DeclarationType.Document)
200+
if (userDeclaration.DeclarationType.HasFlag(DeclarationType.ClassModule))
201201
{
202202
switch (userDeclarationEnclosingType)
203203
{
@@ -208,8 +208,7 @@ private static bool DeclarationInReferencedProjectCanBeShadowed(Declaration orig
208208
}
209209
}
210210

211-
if ((userDeclaration.DeclarationType != DeclarationType.ClassModule && userDeclaration.DeclarationType != DeclarationType.Document) ||
212-
(userDeclarationEnclosingType != ComponentType.UserForm && userDeclarationEnclosingType != ComponentType.Document))
211+
if (!userDeclaration.DeclarationType.HasFlag(DeclarationType.ClassModule))
213212
{
214213
if (!ReferencedProjectTypeShadowingRelations[originalDeclaration.DeclarationType].Contains(userDeclaration.DeclarationType))
215214
{
@@ -256,22 +255,25 @@ private static bool DeclarationInAnotherComponentCanBeShadowed(Declaration origi
256255
// It is not possible to directly access any declarations placed inside a Class Module.
257256
if (originalDeclaration.DeclarationType != DeclarationType.ClassModule &&
258257
originalDeclaration.DeclarationType != DeclarationType.Document &&
258+
originalDeclaration.DeclarationType != DeclarationType.UserForm &&
259259
originalDeclarationEnclosingType == ComponentType.ClassModule)
260260
{
261261
return false;
262262
}
263263

264264
// It is not possible to directly access any declarations placed inside a Document Module. (Document Modules have DeclarationType ClassMoodule.)
265265
if (originalDeclaration.DeclarationType != DeclarationType.ClassModule &&
266-
originalDeclaration.DeclarationType != DeclarationType.Document &&
266+
originalDeclaration.DeclarationType != DeclarationType.Document &&
267+
originalDeclaration.DeclarationType != DeclarationType.UserForm &&
267268
originalDeclarationEnclosingType == ComponentType.Document)
268269
{
269270
return false;
270271
}
271272

272-
// It is not possible to directly access any declarations placed inside a User Form. (User Forms have DeclarationType ClassMoodule.)
273+
// It is not possible to directly access any declarations placed inside a User Form.
273274
if (originalDeclaration.DeclarationType != DeclarationType.ClassModule &&
274-
originalDeclaration.DeclarationType != DeclarationType.Document &&
275+
originalDeclaration.DeclarationType != DeclarationType.Document &&
276+
originalDeclaration.DeclarationType != DeclarationType.UserForm &&
275277
originalDeclarationEnclosingType == ComponentType.UserForm)
276278
{
277279
return false;
@@ -315,9 +317,11 @@ private static bool DeclarationInTheSameComponentCanBeShadowed(Declaration origi
315317
if (originalDeclaration.DeclarationType == DeclarationType.ProceduralModule ||
316318
originalDeclaration.DeclarationType == DeclarationType.ClassModule ||
317319
originalDeclaration.DeclarationType == DeclarationType.Document ||
320+
originalDeclaration.DeclarationType == DeclarationType.UserForm ||
318321
userDeclaration.DeclarationType == DeclarationType.ProceduralModule ||
319322
userDeclaration.DeclarationType == DeclarationType.ClassModule ||
320-
userDeclaration.DeclarationType == DeclarationType.Document)
323+
userDeclaration.DeclarationType == DeclarationType.Document ||
324+
userDeclaration.DeclarationType == DeclarationType.UserForm)
321325
{
322326
return false;
323327
}

Rubberduck.Parsing/VBA/DeclarationCaching/DeclarationFinder.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,7 @@ private IDictionary<ClassModuleDeclaration, List<Declaration>> FindAllInterfaceM
243243
{
244244
return UserDeclarations(DeclarationType.ClassModule)
245245
.Concat(UserDeclarations(DeclarationType.Document))
246+
.Concat(UserDeclarations(DeclarationType.UserForm))
246247
.Cast<ClassModuleDeclaration>()
247248
.Where(module => module.IsInterface)
248249
.ToDictionary(

Rubberduck.Parsing/VBA/DeclarationResolving/DeclarationResolveRunnerBase.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,9 @@ private ModuleDeclaration NewModuleDeclaration(
206206
qualifiedModuleName.ComponentName,
207207
true,
208208
moduleAnnotations,
209-
moduleAttributes, isUserForm:true);
209+
moduleAttributes,
210+
hasDefaultInstanceVariable:true,
211+
isUserForm:true);
210212
case ComponentType.Document:
211213
return new DocumentModuleDeclaration(
212214
qualifiedModuleName.QualifyMemberName(qualifiedModuleName.ComponentName),

Rubberduck.Parsing/VBA/ReferenceManagement/CompilationPasses/TypeHierarchyPass.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ public void Execute(IReadOnlyCollection<QualifiedModuleName> modules)
3333
{
3434
var toRelsolveSupertypesFor = _declarationFinder.UserDeclarations(DeclarationType.ClassModule)
3535
.Concat(_declarationFinder.UserDeclarations(DeclarationType.Document))
36+
.Concat(_declarationFinder.UserDeclarations(DeclarationType.UserForm))
3637
.Where(decl => modules.Contains(decl.QualifiedName.QualifiedModuleName))
3738
.Concat(_declarationFinder.BuiltInDeclarations(DeclarationType.ClassModule));
3839
foreach (var declaration in toRelsolveSupertypesFor)

0 commit comments

Comments
 (0)