Skip to content

Commit 935f6da

Browse files
authored
Merge pull request #2970 from Hosch250/tweakRefactorings
Kill a few more uses of AllUserDeclarations
2 parents 72f7a27 + 375b399 commit 935f6da

8 files changed

+39
-45
lines changed

Rubberduck.Inspections/Concrete/ImplicitVariantReturnTypeInspection.cs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -18,17 +18,10 @@ public ImplicitVariantReturnTypeInspection(RubberduckParserState state)
1818

1919
public override CodeInspectionType InspectionType => CodeInspectionType.CodeQualityIssues;
2020

21-
private static readonly DeclarationType[] ProcedureTypes =
22-
{
23-
DeclarationType.Function,
24-
DeclarationType.PropertyGet,
25-
DeclarationType.LibraryFunction
26-
};
27-
2821
public override IEnumerable<IInspectionResult> GetInspectionResults()
2922
{
30-
var issues = from item in UserDeclarations
31-
where ProcedureTypes.Contains(item.DeclarationType) && !item.IsTypeSpecified
23+
var issues = from item in State.DeclarationFinder.UserDeclarations(DeclarationType.Function)
24+
where !item.IsTypeSpecified && !IsIgnoringInspectionResultFor(item, AnnotationName)
3225
let issue = new {Declaration = item, QualifiedContext = new QualifiedContext<ParserRuleContext>(item.QualifiedName, item.Context)}
3326
select new ImplicitVariantReturnTypeInspectionResult(this, issue.QualifiedContext, item);
3427
return issues;

Rubberduck.Inspections/Concrete/MoveFieldCloserToUsageInspection.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,12 @@ public MoveFieldCloserToUsageInspection(RubberduckParserState state)
1818

1919
public override IEnumerable<IInspectionResult> GetInspectionResults()
2020
{
21-
return UserDeclarations
21+
return State.DeclarationFinder.UserDeclarations(DeclarationType.Variable)
2222
.Where(declaration =>
2323
{
24-
if (declaration.DeclarationType != DeclarationType.Variable || declaration.IsWithEvents ||
25-
!new[] {DeclarationType.ClassModule, DeclarationType.ProceduralModule}.Contains(declaration.ParentDeclaration.DeclarationType))
24+
if (declaration.IsWithEvents
25+
|| !new[] {DeclarationType.ClassModule, DeclarationType.ProceduralModule}.Contains(declaration.ParentDeclaration.DeclarationType)
26+
|| IsIgnoringInspectionResultFor(declaration, AnnotationName))
2627
{
2728
return false;
2829
}

Rubberduck.Inspections/Concrete/SelfAssignedDeclarationInspection.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,15 @@ public SelfAssignedDeclarationInspection(RubberduckParserState state)
1919

2020
public override IEnumerable<IInspectionResult> GetInspectionResults()
2121
{
22-
return UserDeclarations
22+
return State.DeclarationFinder.UserDeclarations(DeclarationType.Variable)
2323
.Where(declaration => declaration.IsSelfAssigned
2424
&& declaration.IsTypeSpecified
2525
&& !SymbolList.ValueTypes.Contains(declaration.AsTypeName)
26-
&& declaration.DeclarationType == DeclarationType.Variable
2726
&& (declaration.AsTypeDeclaration == null
2827
|| declaration.AsTypeDeclaration.DeclarationType != DeclarationType.UserDefinedType)
2928
&& declaration.ParentScopeDeclaration != null
3029
&& declaration.ParentScopeDeclaration.DeclarationType.HasFlag(DeclarationType.Member))
30+
.Where(result => !IsIgnoringInspectionResultFor(result, AnnotationName))
3131
.Select(issue => new SelfAssignedDeclarationInspectionResult(this, issue));
3232
}
3333
}

Rubberduck.Inspections/Concrete/UnassignedVariableUsageInspection.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,12 @@ public UnassignedVariableUsageInspection(RubberduckParserState state)
2020

2121
public override IEnumerable<IInspectionResult> GetInspectionResults()
2222
{
23-
var declarations = UserDeclarations.Where(declaration =>
24-
declaration.DeclarationType == DeclarationType.Variable
25-
&& !UserDeclarations.Any(d => d.DeclarationType == DeclarationType.UserDefinedType
26-
&& d.IdentifierName == declaration.AsTypeName)
27-
&& !declaration.IsSelfAssigned
28-
&& !declaration.References.Any(reference => reference.IsAssignment && !IsIgnoringInspectionResultFor(reference, AnnotationName)));
23+
var declarations = State.DeclarationFinder.UserDeclarations(DeclarationType.Variable)
24+
.Where(result => !IsIgnoringInspectionResultFor(result, AnnotationName))
25+
.Where(declaration =>
26+
State.DeclarationFinder.MatchName(declaration.AsTypeName).All(d => d.DeclarationType != DeclarationType.UserDefinedType)
27+
&& !declaration.IsSelfAssigned
28+
&& !declaration.References.Any(reference => reference.IsAssignment && !IsIgnoringInspectionResultFor(reference, AnnotationName)));
2929

3030
//The parameter scoping was apparently incorrect before - need to filter for the actual function.
3131
var lenFunction = BuiltInDeclarations.SingleOrDefault(s => s.DeclarationType == DeclarationType.Function && s.Scope.Equals("VBE7.DLL;VBA.Strings.Len"));

Rubberduck.Inspections/Concrete/UndeclaredVariableInspection.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ public UndeclaredVariableInspection(RubberduckParserState state)
1818

1919
public override IEnumerable<IInspectionResult> GetInspectionResults()
2020
{
21-
return UserDeclarations.Where(item => item.IsUndeclared && item.DeclarationType == DeclarationType.Variable)
21+
return State.DeclarationFinder.UserDeclarations(DeclarationType.Variable)
22+
.Where(item => item.IsUndeclared && !IsIgnoringInspectionResultFor(item, AnnotationName))
2223
.Select(item => new UndeclaredVariableInspectionResult(this, item));
2324
}
2425
}

Rubberduck.Inspections/Concrete/VariableNotAssignedInspection.cs

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -18,24 +18,19 @@ public VariableNotAssignedInspection(RubberduckParserState state)
1818

1919
public override IEnumerable<IInspectionResult> GetInspectionResults()
2020
{
21-
var items = UserDeclarations.ToList();
22-
2321
// ignore arrays. todo: ArrayIndicesNotAccessedInspection
24-
var arrays = items.Where(declaration =>
25-
declaration.DeclarationType == DeclarationType.Variable
26-
&& declaration.IsArray).ToList();
22+
var arrays = State.DeclarationFinder.UserDeclarations(DeclarationType.Variable).Where(declaration => declaration.IsArray);
2723

28-
var declarations = items.Except(arrays).Where(declaration =>
29-
declaration.DeclarationType == DeclarationType.Variable
30-
&& !declaration.IsWithEvents
31-
&& !items.Any(item =>
32-
item.IdentifierName == declaration.AsTypeName
33-
&& item.DeclarationType == DeclarationType.UserDefinedType) // UDT variables don't need to be assigned
34-
&& !declaration.IsSelfAssigned
35-
&& !declaration.References.Any(reference => reference.IsAssignment));
24+
var declarations = State.DeclarationFinder.UserDeclarations(DeclarationType.Variable)
25+
.Except(arrays)
26+
.Where(declaration =>
27+
!declaration.IsWithEvents
28+
&& State.DeclarationFinder.MatchName(declaration.AsTypeName).All(item => item.DeclarationType != DeclarationType.UserDefinedType) // UDT variables don't need to be assigned
29+
&& !declaration.IsSelfAssigned
30+
&& !declaration.References.Any(reference => reference.IsAssignment))
31+
.Where(result => !IsIgnoringInspectionResultFor(result, AnnotationName));
3632

37-
return declarations.Select(issue =>
38-
new IdentifierNotAssignedInspectionResult(this, issue));
33+
return declarations.Select(issue => new IdentifierNotAssignedInspectionResult(this, issue));
3934
}
4035
}
4136
}

Rubberduck.Inspections/Concrete/VariableTypeNotDeclaredInspection.cs

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,16 @@ public VariableTypeNotDeclaredInspection(RubberduckParserState state)
1818

1919
public override IEnumerable<IInspectionResult> GetInspectionResults()
2020
{
21-
var issues = from item in UserDeclarations
22-
where (item.DeclarationType == DeclarationType.Variable
23-
|| item.DeclarationType == DeclarationType.Constant
24-
|| (item.DeclarationType == DeclarationType.Parameter && !item.IsArray))
21+
var s =
22+
State.DeclarationFinder.UserDeclarations(DeclarationType.Variable | DeclarationType.Constant |
23+
DeclarationType.Parameter);
24+
25+
var issues = from item in State.DeclarationFinder.UserDeclarations(DeclarationType.Variable)
26+
.Union(State.DeclarationFinder.UserDeclarations(DeclarationType.Constant))
27+
.Union(State.DeclarationFinder.UserDeclarations(DeclarationType.Parameter))
28+
where (item.DeclarationType != DeclarationType.Parameter || (item.DeclarationType == DeclarationType.Parameter && !item.IsArray))
29+
&& item.DeclarationType != DeclarationType.Control
30+
&& !IsIgnoringInspectionResultFor(item, AnnotationName)
2531
&& !item.IsTypeSpecified
2632
&& !item.IsUndeclared
2733
select new VariableTypeNotDeclaredInspectionResult(this, item);

Rubberduck.Inspections/Concrete/WriteOnlyPropertyInspection.cs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,15 +18,13 @@ public WriteOnlyPropertyInspection(RubberduckParserState state)
1818

1919
public override IEnumerable<IInspectionResult> GetInspectionResults()
2020
{
21-
var declarations = UserDeclarations.ToList();
22-
var setters = declarations
21+
var setters = State.DeclarationFinder.UserDeclarations(DeclarationType.Property | DeclarationType.Procedure)
2322
.Where(item =>
2423
(item.Accessibility == Accessibility.Implicit ||
2524
item.Accessibility == Accessibility.Public ||
2625
item.Accessibility == Accessibility.Global)
27-
&& (item.DeclarationType == DeclarationType.PropertyLet ||
28-
item.DeclarationType == DeclarationType.PropertySet)
29-
&& declarations.Where(declaration => declaration.IdentifierName == item.IdentifierName).All(accessor => accessor.DeclarationType != DeclarationType.PropertyGet))
26+
&& State.DeclarationFinder.MatchName(item.IdentifierName).All(accessor => accessor.DeclarationType != DeclarationType.PropertyGet))
27+
.Where(result => !IsIgnoringInspectionResultFor(result, AnnotationName))
3028
.GroupBy(item => new {item.QualifiedName, item.DeclarationType})
3129
.Select(grouping => grouping.First()); // don't get both Let and Set accessors
3230

0 commit comments

Comments
 (0)