Skip to content

Commit b4ae264

Browse files
committed
Replace generic function on IInspectionResult with additional generic interface IWithInspectionResultProperties<T>
This change makes the structure look a bit cleaner. Unfortunately, the new interface cannot extend the old one because the corresponding generic inspection result classes have to inherit from the non-generic ones.
1 parent 940eb7e commit b4ae264

21 files changed

+132
-79
lines changed

Rubberduck.CodeAnalysis/Inspections/Abstract/InspectionResultBase.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,6 @@ protected InspectionResultBase(IInspection inspection,
3737
public Declaration Target { get; }
3838
public ICollection<string> DisabledQuickFixes { get; }
3939

40-
public virtual T Properties<T>() => default;
41-
4240
public virtual bool ChangesInvalidateResult(ICollection<QualifiedModuleName> modifiedModules)
4341
{
4442
return modifiedModules.Contains(QualifiedName)

Rubberduck.CodeAnalysis/Inspections/Results/DeclarationInspectionResult.cs

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -44,15 +44,13 @@ public override bool ChangesInvalidateResult(ICollection<QualifiedModuleName> mo
4444
}
4545
}
4646

47-
public class DeclarationInspectionResult<TProperties> : DeclarationInspectionResult
47+
public class DeclarationInspectionResult<T> : DeclarationInspectionResult, IWithInspectionResultProperties<T>
4848
{
49-
private readonly TProperties _properties;
50-
5149
public DeclarationInspectionResult(
5250
IInspection inspection,
5351
string description,
5452
Declaration target,
55-
TProperties properties,
53+
T properties,
5654
QualifiedContext context = null,
5755
ICollection<string> disabledQuickFixes = null) :
5856
base(
@@ -62,17 +60,9 @@ public DeclarationInspectionResult(
6260
context,
6361
disabledQuickFixes)
6462
{
65-
_properties = properties;
63+
Properties = properties;
6664
}
6765

68-
public override T Properties<T>()
69-
{
70-
if (_properties is T properties)
71-
{
72-
return properties;
73-
}
74-
75-
return base.Properties<T>();
76-
}
66+
public T Properties { get; }
7767
}
7868
}

Rubberduck.CodeAnalysis/Inspections/Results/IdentifierReferenceInspectionResult.cs

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,14 @@ public override bool ChangesInvalidateResult(ICollection<QualifiedModuleName> mo
4444
}
4545
}
4646

47-
public class IdentifierReferenceInspectionResult<TProperties> : IdentifierReferenceInspectionResult
47+
public class IdentifierReferenceInspectionResult<T> : IdentifierReferenceInspectionResult, IWithInspectionResultProperties<T>
4848
{
49-
private readonly TProperties _properties;
50-
5149
public IdentifierReferenceInspectionResult(
5250
IInspection inspection,
5351
string description,
5452
IDeclarationFinderProvider declarationFinderProvider,
5553
IdentifierReference reference,
56-
TProperties properties,
54+
T properties,
5755
ICollection<string> disabledQuickFixes = null)
5856
: base(
5957
inspection,
@@ -62,17 +60,9 @@ public IdentifierReferenceInspectionResult(
6260
reference,
6361
disabledQuickFixes)
6462
{
65-
_properties = properties;
63+
Properties = properties;
6664
}
6765

68-
public override T Properties<T>()
69-
{
70-
if (_properties is T properties)
71-
{
72-
return properties;
73-
}
74-
75-
return base.Properties<T>();
76-
}
66+
public T Properties { get; }
7767
}
7868
}

Rubberduck.CodeAnalysis/Inspections/Results/QualifiedContextInspectionResult.cs

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -24,33 +24,23 @@ public QualifiedContextInspectionResult(
2424
{}
2525
}
2626

27-
public class QualifiedContextInspectionResult<TProperties> : QualifiedContextInspectionResult
27+
public class QualifiedContextInspectionResult<T> : QualifiedContextInspectionResult, IWithInspectionResultProperties<T>
2828
{
29-
private readonly TProperties _properties;
30-
3129
public QualifiedContextInspectionResult(
3230
IInspection inspection,
3331
string description,
3432
QualifiedContext context,
35-
TProperties properties,
33+
T properties,
3634
ICollection<string> disabledQuickFixes = null) :
3735
base(
3836
inspection,
3937
description,
4038
context,
4139
disabledQuickFixes)
4240
{
43-
_properties = properties;
41+
Properties = properties;
4442
}
4543

46-
public override T Properties<T>()
47-
{
48-
if (_properties is T properties)
49-
{
50-
return properties;
51-
}
52-
53-
return base.Properties<T>();
54-
}
44+
public T Properties { get; }
5545
}
5646
}

Rubberduck.CodeAnalysis/QuickFixes/AccessSheetUsingCodeNameQuickFix.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public AccessSheetUsingCodeNameQuickFix(IDeclarationFinderProvider declarationFi
4848

4949
public override void Fix(IInspectionResult result, IRewriteSession rewriteSession)
5050
{
51-
var referenceResult = (IdentifierReferenceInspectionResult)result;
51+
var referenceResult = (IdentifierReferenceInspectionResult<string>)result;
5252

5353
var rewriter = rewriteSession.CheckOutModuleRewriter(referenceResult.QualifiedName);
5454

@@ -62,7 +62,7 @@ public override void Fix(IInspectionResult result, IRewriteSession rewriteSessio
6262
var indexExprContext = referenceResult.Context.Parent.Parent as VBAParser.IndexExprContext ??
6363
referenceResult.Context.Parent as VBAParser.IndexExprContext;
6464

65-
var codeName = referenceResult.Properties<string>();
65+
var codeName = referenceResult.Properties;
6666
rewriter.Replace(indexExprContext, codeName);
6767
}
6868
else
@@ -98,7 +98,7 @@ public override void Fix(IInspectionResult result, IRewriteSession rewriteSessio
9898

9999
foreach (var reference in sheetDeclaration.References)
100100
{
101-
var codeName = referenceResult.Properties<string>();
101+
var codeName = referenceResult.Properties;
102102
rewriter.Replace(reference.Context, codeName);
103103
}
104104

Rubberduck.CodeAnalysis/QuickFixes/AddAttributeAnnotationQuickFix.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,13 @@ public AddAttributeAnnotationQuickFix(IAnnotationUpdater annotationUpdater, IAtt
6060

6161
public override void Fix(IInspectionResult result, IRewriteSession rewriteSession)
6262
{
63+
if (!(result is IWithInspectionResultProperties<(string attributeName, IReadOnlyList<string> AttributeValues)> resultProperties))
64+
{
65+
return;
66+
}
67+
6368
var declaration = result.Target;
64-
var (attributeName, attributeValues) = result.Properties<(string attributeName, IReadOnlyList<string> AttributeValues)>();
69+
var (attributeName, attributeValues) = resultProperties.Properties;
6570
var (annotationType, annotationValues) = declaration.DeclarationType.HasFlag(DeclarationType.Module)
6671
? _attributeAnnotationProvider.ModuleAttributeAnnotation(attributeName, attributeValues)
6772
: _attributeAnnotationProvider.MemberAttributeAnnotation(AttributeBaseName(attributeName, declaration), attributeValues);

Rubberduck.CodeAnalysis/QuickFixes/AddMissingAttributeQuickFix.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,13 @@ public AddMissingAttributeQuickFix(IAttributesUpdater attributesUpdater)
5454

5555
public override void Fix(IInspectionResult result, IRewriteSession rewriteSession)
5656
{
57+
if (!(result is IWithInspectionResultProperties<IParseTreeAnnotation> resultProperties))
58+
{
59+
return;
60+
}
61+
5762
var declaration = result.Target;
58-
var annotationInstance = result.Properties<IParseTreeAnnotation>();
63+
var annotationInstance = resultProperties.Properties;
5964
if (!(annotationInstance.Annotation is IAttributeAnnotation annotation))
6065
{
6166
return;

Rubberduck.CodeAnalysis/QuickFixes/AdjustAttributeAnnotationQuickFix.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,13 @@ public AdjustAttributeAnnotationQuickFix(IAnnotationUpdater annotationUpdater, I
5959

6060
public override void Fix(IInspectionResult result, IRewriteSession rewriteSession)
6161
{
62+
if (!(result is IWithInspectionResultProperties<(IParseTreeAnnotation Annotation, string AttributeName, IReadOnlyList<string> AttributeValues)> resultProperties))
63+
{
64+
return;
65+
}
66+
6267
var declaration = result.Target;
63-
var (oldParseTreeAnnotation, attributeBaseName, attributeValues) = result.Properties<(IParseTreeAnnotation Annotation, string AttributeName, IReadOnlyList<string> AttributeValues)>();
68+
var (oldParseTreeAnnotation, attributeBaseName, attributeValues) = resultProperties.Properties;
6469

6570
if (declaration.DeclarationType.HasFlag(DeclarationType.Module))
6671
{

Rubberduck.CodeAnalysis/QuickFixes/AdjustAttributeValuesQuickFix.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,13 @@ public AdjustAttributeValuesQuickFix(IAttributesUpdater attributesUpdater)
6161

6262
public override void Fix(IInspectionResult result, IRewriteSession rewriteSession)
6363
{
64+
if (!(result is IWithInspectionResultProperties<(IParseTreeAnnotation Annotation, string AttributeName, IReadOnlyList<string> AttributeValues)> resultProperties))
65+
{
66+
return;
67+
}
68+
6469
var declaration = result.Target;
65-
var (parseTreeAnnotation, attributeBaseName, attributeValues) = result.Properties<(IParseTreeAnnotation Annotation, string AttributeName, IReadOnlyList<string> AttributeValues)>();
70+
var (parseTreeAnnotation, attributeBaseName, attributeValues) = resultProperties.Properties;
6671

6772
var attributeName = declaration.DeclarationType.HasFlag(DeclarationType.Module)
6873
? attributeBaseName

Rubberduck.CodeAnalysis/QuickFixes/ExpandDefaultMemberQuickFix.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,12 @@ public override void Fix(IInspectionResult result, IRewriteSession rewriteSessio
7676

7777
if (result.Inspection is SuspiciousLetAssignmentInspection)
7878
{
79-
var rhsReference = result.Properties<IdentifierReference>();
79+
if (!(result is IWithInspectionResultProperties<IdentifierReference> resultProperties))
80+
{
81+
return;
82+
}
83+
84+
var rhsReference = resultProperties.Properties;
8085
var rhsLExpressionContext = rhsReference.Context;
8186
var rhsSelection = rhsReference.QualifiedSelection;
8287
InsertDefaultMember(rhsLExpressionContext, rhsSelection, finder, rewriter);

0 commit comments

Comments
 (0)