Skip to content

Commit 8dcf4f7

Browse files
authored
Merge pull request #2554 from comintern/next
Lazy load quick-fixes.
2 parents 8536cd2 + 0c0fe1a commit 8dcf4f7

File tree

37 files changed

+486
-299
lines changed

37 files changed

+486
-299
lines changed

RetailCoder.VBE/Inspections/Results/AssignedByValParameterInspectionResult.cs

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,9 @@ namespace Rubberduck.Inspections.Results
99
{
1010
public class AssignedByValParameterInspectionResult : InspectionResultBase
1111
{
12-
private readonly IEnumerable<QuickFixBase> _quickFixes;
12+
private IEnumerable<QuickFixBase> _quickFixes;
1313

14-
public AssignedByValParameterInspectionResult(IInspection inspection, Declaration target)
15-
: base(inspection, target)
16-
{
17-
_quickFixes = new QuickFixBase[]
18-
{
19-
new PassParameterByReferenceQuickFix(target.Context, QualifiedSelection),
20-
new IgnoreOnceQuickFix(Context, QualifiedSelection, inspection.AnnotationName)
21-
};
22-
}
14+
public AssignedByValParameterInspectionResult(IInspection inspection, Declaration target) : base(inspection, target) { }
2315

2416
public override string Description
2517
{
@@ -29,6 +21,16 @@ public override string Description
2921
}
3022
}
3123

32-
public override IEnumerable<QuickFixBase> QuickFixes { get { return _quickFixes; } }
24+
public override IEnumerable<QuickFixBase> QuickFixes
25+
{
26+
get
27+
{
28+
return _quickFixes ?? (_quickFixes = new QuickFixBase[]
29+
{
30+
new PassParameterByReferenceQuickFix(Target.Context, QualifiedSelection),
31+
new IgnoreOnceQuickFix(Context, QualifiedSelection, Inspection.AnnotationName)
32+
});
33+
}
34+
}
3335
}
3436
}

RetailCoder.VBE/Inspections/Results/DefaultProjectNameInspectionResult.cs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,25 @@ namespace Rubberduck.Inspections.Results
99
{
1010
public class DefaultProjectNameInspectionResult : InspectionResultBase
1111
{
12-
private readonly IEnumerable<QuickFixBase> _quickFixes;
12+
private IEnumerable<QuickFixBase> _quickFixes;
13+
private readonly RubberduckParserState _state;
1314

1415
public DefaultProjectNameInspectionResult(IInspection inspection, Declaration target, RubberduckParserState state)
1516
: base(inspection, target)
1617
{
17-
_quickFixes = new[]
18-
{
19-
new RenameProjectQuickFix(target.Context, target.QualifiedSelection, target, state),
20-
};
18+
_state = state;
2119
}
2220

23-
public override IEnumerable<QuickFixBase> QuickFixes { get { return _quickFixes; } }
21+
public override IEnumerable<QuickFixBase> QuickFixes
22+
{
23+
get
24+
{
25+
return _quickFixes ?? (_quickFixes = new QuickFixBase[]
26+
{
27+
new RenameProjectQuickFix(Target.Context, Target.QualifiedSelection, Target, _state)
28+
});
29+
}
30+
}
2431

2532
public override string Description
2633
{

RetailCoder.VBE/Inspections/Results/EmptyStringLiteralInspectionResult.cs

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,20 +10,24 @@ namespace Rubberduck.Inspections.Results
1010
{
1111
public class EmptyStringLiteralInspectionResult : InspectionResultBase
1212
{
13-
private readonly IEnumerable<QuickFixBase> _quickFixes;
13+
private IEnumerable<QuickFixBase> _quickFixes;
1414

1515
public EmptyStringLiteralInspectionResult(IInspection inspection, QualifiedContext<VBAParser.LiteralExpressionContext> qualifiedContext)
1616
: base(inspection, qualifiedContext.ModuleName, qualifiedContext.Context)
17+
{ }
18+
19+
public override IEnumerable<QuickFixBase> QuickFixes
1720
{
18-
_quickFixes = new QuickFixBase[]
21+
get
1922
{
23+
return _quickFixes ?? (_quickFixes = new QuickFixBase[]
24+
{
2025
new RepaceEmptyStringLiteralStatementQuickFix(Context, QualifiedSelection),
2126
new IgnoreOnceQuickFix(Context, QualifiedSelection, Inspection.AnnotationName)
22-
};
27+
});
28+
}
2329
}
2430

25-
public override IEnumerable<QuickFixBase> QuickFixes { get { return _quickFixes; } }
26-
2731
public override string Description
2832
{
2933
get { return InspectionsUI.EmptyStringLiteralInspectionResultFormat.Captialize(); }

RetailCoder.VBE/Inspections/Results/EncapsulatePublicFieldInspectionResult.cs

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,28 @@ namespace Rubberduck.Inspections.Results
1111
{
1212
public class EncapsulatePublicFieldInspectionResult : InspectionResultBase
1313
{
14-
private readonly IEnumerable<QuickFixBase> _quickFixes;
14+
private IEnumerable<QuickFixBase> _quickFixes;
15+
private readonly RubberduckParserState _state;
16+
private readonly IIndenter _indenter;
1517

1618
public EncapsulatePublicFieldInspectionResult(IInspection inspection, Declaration target, RubberduckParserState state, IIndenter indenter)
1719
: base(inspection, target)
1820
{
19-
_quickFixes = new QuickFixBase[]
20-
{
21-
new EncapsulateFieldQuickFix(target.Context, target.QualifiedSelection, target, state, indenter),
22-
new IgnoreOnceQuickFix(Context, QualifiedSelection, Inspection.AnnotationName)
23-
};
21+
_state = state;
22+
_indenter = indenter;
2423
}
2524

26-
public override IEnumerable<QuickFixBase> QuickFixes { get { return _quickFixes; } }
25+
public override IEnumerable<QuickFixBase> QuickFixes
26+
{
27+
get
28+
{
29+
return _quickFixes ?? (_quickFixes = new QuickFixBase[]
30+
{
31+
new EncapsulateFieldQuickFix(Target.Context, Target.QualifiedSelection, Target, _state, _indenter),
32+
new IgnoreOnceQuickFix(Context, QualifiedSelection, Inspection.AnnotationName)
33+
});
34+
}
35+
}
2736

2837
public override string Description
2938
{

RetailCoder.VBE/Inspections/Results/FunctionReturnValueNotUsedInspectionResult.cs

Lines changed: 36 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -12,50 +12,55 @@
1212

1313
namespace Rubberduck.Inspections.Results
1414
{
15-
16-
1715
public class FunctionReturnValueNotUsedInspectionResult : InspectionResultBase
1816
{
19-
private readonly IEnumerable<QuickFixBase> _quickFixes;
17+
private IEnumerable<QuickFixBase> _quickFixes;
18+
private readonly IEnumerable<Tuple<ParserRuleContext, QualifiedSelection, Declaration>> _children;
19+
private readonly bool _allowConvertToProcedure;
20+
private readonly ParserRuleContext _context;
2021

21-
public FunctionReturnValueNotUsedInspectionResult(
22-
IInspection inspection,
23-
ParserRuleContext context,
24-
QualifiedMemberName qualifiedName,
25-
Declaration target,
26-
bool allowConvertToProcedure = true)
22+
public FunctionReturnValueNotUsedInspectionResult(IInspection inspection, ParserRuleContext context, QualifiedMemberName qualifiedName, Declaration target,
23+
bool allowConvertToProcedure = true)
2724
: this(inspection, context, qualifiedName, new List<Tuple<ParserRuleContext, QualifiedSelection, Declaration>>(), target, allowConvertToProcedure)
25+
{ }
26+
27+
public FunctionReturnValueNotUsedInspectionResult(IInspection inspection, ParserRuleContext context, QualifiedMemberName qualifiedName,
28+
IEnumerable<Tuple<ParserRuleContext, QualifiedSelection, Declaration>> children, Declaration target,
29+
bool allowConvertToProcedure = true)
30+
: base(inspection, qualifiedName.QualifiedModuleName, context, target)
2831
{
32+
_children = children;
33+
_allowConvertToProcedure = allowConvertToProcedure;
34+
_context = context;
2935
}
3036

31-
public FunctionReturnValueNotUsedInspectionResult(
32-
IInspection inspection,
33-
ParserRuleContext context,
34-
QualifiedMemberName qualifiedName,
35-
IEnumerable<Tuple<ParserRuleContext, QualifiedSelection, Declaration>> children,
36-
Declaration target, bool allowConvertToProcedure = true)
37-
: base(inspection, qualifiedName.QualifiedModuleName, context, target)
37+
public override IEnumerable<QuickFixBase> QuickFixes
3838
{
39-
var ignoreOnce = new IgnoreOnceQuickFix(Context, QualifiedSelection, Inspection.AnnotationName);
40-
if (allowConvertToProcedure)
39+
get
4140
{
42-
var root = new ConvertToProcedureQuickFix(context, QualifiedSelection, target);
43-
var compositeFix = new CompositeCodeInspectionFix(root);
44-
children.ToList().ForEach(child => compositeFix.AddChild(new ConvertToProcedureQuickFix(child.Item1, child.Item2, child.Item3)));
45-
_quickFixes = new QuickFixBase[]
41+
if (_quickFixes == null)
4642
{
47-
compositeFix,
48-
ignoreOnce
49-
};
50-
}
51-
else
52-
{
53-
_quickFixes = new[] {ignoreOnce};
43+
var ignoreOnce = new IgnoreOnceQuickFix(Context, QualifiedSelection, Inspection.AnnotationName);
44+
if (_allowConvertToProcedure)
45+
{
46+
var root = new ConvertToProcedureQuickFix(_context, QualifiedSelection, Target);
47+
var compositeFix = new CompositeCodeInspectionFix(root);
48+
_children.ToList().ForEach(child => compositeFix.AddChild(new ConvertToProcedureQuickFix(child.Item1, child.Item2, child.Item3)));
49+
_quickFixes = new QuickFixBase[]
50+
{
51+
compositeFix,
52+
ignoreOnce
53+
};
54+
}
55+
else
56+
{
57+
_quickFixes = new[] { ignoreOnce };
58+
}
59+
}
60+
return _quickFixes;
5461
}
5562
}
5663

57-
public override IEnumerable<QuickFixBase> QuickFixes { get { return _quickFixes; } }
58-
5964
public override string Description
6065
{
6166
get

RetailCoder.VBE/Inspections/Results/IdentifierNameInspectionResult.cs

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,32 @@ namespace Rubberduck.Inspections.Results
1313
{
1414
public class IdentifierNameInspectionResult : InspectionResultBase
1515
{
16-
private readonly IEnumerable<QuickFixBase> _quickFixes;
16+
private IEnumerable<QuickFixBase> _quickFixes;
17+
private readonly RubberduckParserState _parserState;
18+
private readonly IMessageBox _messageBox;
19+
private readonly IPersistanceService<CodeInspectionSettings> _settings;
1720

18-
public IdentifierNameInspectionResult(IInspection inspection, Declaration target, RubberduckParserState parserState, IMessageBox messageBox, IPersistanceService<CodeInspectionSettings> settings)
21+
public IdentifierNameInspectionResult(IInspection inspection, Declaration target, RubberduckParserState parserState, IMessageBox messageBox,
22+
IPersistanceService<CodeInspectionSettings> settings)
1923
: base(inspection, target)
2024
{
21-
_quickFixes = new QuickFixBase[]
22-
{
23-
new RenameDeclarationQuickFix(target.Context, target.QualifiedSelection, target, parserState, messageBox),
24-
new IgnoreOnceQuickFix(Context, target.QualifiedSelection, Inspection.AnnotationName),
25-
new AddIdentifierToWhiteListQuickFix(Context, target.QualifiedSelection, target, settings)
26-
};
25+
_parserState = parserState;
26+
_messageBox = messageBox;
27+
_settings = settings;
2728
}
2829

29-
public override IEnumerable<QuickFixBase> QuickFixes { get { return _quickFixes; } }
30+
public override IEnumerable<QuickFixBase> QuickFixes
31+
{
32+
get
33+
{
34+
return _quickFixes ?? (_quickFixes = new QuickFixBase[]
35+
{
36+
new RenameDeclarationQuickFix(Target.Context, Target.QualifiedSelection, Target, _parserState, _messageBox),
37+
new IgnoreOnceQuickFix(Context, Target.QualifiedSelection, Inspection.AnnotationName),
38+
new AddIdentifierToWhiteListQuickFix(Context, Target.QualifiedSelection, Target, _settings)
39+
});
40+
}
41+
}
3042

3143
public override string Description
3244
{

RetailCoder.VBE/Inspections/Results/IdentifierNotAssignedInspectionResult.cs

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,24 +10,29 @@ namespace Rubberduck.Inspections.Results
1010
{
1111
public class IdentifierNotAssignedInspectionResult : InspectionResultBase
1212
{
13-
private readonly IEnumerable<QuickFixBase> _quickFixes;
13+
private IEnumerable<QuickFixBase> _quickFixes;
14+
private readonly ParserRuleContext _context;
1415

15-
public IdentifierNotAssignedInspectionResult(IInspection inspection, Declaration target,
16-
ParserRuleContext context)
17-
: base(inspection, target)
16+
public IdentifierNotAssignedInspectionResult(IInspection inspection, Declaration target, ParserRuleContext context) : base(inspection, target)
1817
{
19-
_quickFixes = new QuickFixBase[]
20-
{
21-
new RemoveUnassignedIdentifierQuickFix(Context, QualifiedSelection, target),
22-
new IgnoreOnceQuickFix(context, QualifiedSelection, Inspection.AnnotationName),
23-
};
18+
_context = context;
2419
}
2520

2621
public override string Description
2722
{
2823
get { return string.Format(InspectionsUI.VariableNotAssignedInspectionResultFormat, Target.IdentifierName).Captialize(); }
2924
}
3025

31-
public override IEnumerable<QuickFixBase> QuickFixes { get { return _quickFixes; } }
26+
public override IEnumerable<QuickFixBase> QuickFixes
27+
{
28+
get
29+
{
30+
return _quickFixes ?? (_quickFixes = new QuickFixBase[]
31+
{
32+
new RemoveUnassignedIdentifierQuickFix(Context, QualifiedSelection, Target),
33+
new IgnoreOnceQuickFix(_context, QualifiedSelection, Inspection.AnnotationName)
34+
});
35+
}
36+
}
3237
}
3338
}

RetailCoder.VBE/Inspections/Results/IdentifierNotUsedInspectionResult.cs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,20 +12,28 @@ namespace Rubberduck.Inspections.Results
1212
{
1313
public class IdentifierNotUsedInspectionResult : InspectionResultBase
1414
{
15-
private readonly IEnumerable<QuickFixBase> _quickFixes;
15+
private IEnumerable<QuickFixBase> _quickFixes;
16+
private readonly ParserRuleContext _context;
1617

1718
public IdentifierNotUsedInspectionResult(IInspection inspection, Declaration target,
1819
ParserRuleContext context, QualifiedModuleName qualifiedName)
1920
: base(inspection, qualifiedName, context, target)
2021
{
21-
_quickFixes = new QuickFixBase[]
22+
_context = context;
23+
}
24+
25+
public override IEnumerable<QuickFixBase> QuickFixes
26+
{
27+
get
2228
{
23-
new RemoveUnusedDeclarationQuickFix(context, QualifiedSelection, Target),
24-
new IgnoreOnceQuickFix(context, QualifiedSelection, Inspection.AnnotationName),
25-
};
29+
return _quickFixes ?? (_quickFixes = new QuickFixBase[]
30+
{
31+
new RemoveUnusedDeclarationQuickFix(_context, QualifiedSelection, Target),
32+
new IgnoreOnceQuickFix(_context, QualifiedSelection, Inspection.AnnotationName)
33+
});
34+
}
2635
}
2736

28-
public override IEnumerable<QuickFixBase> QuickFixes { get { return _quickFixes; } }
2937
public override string Description
3038
{
3139
get

RetailCoder.VBE/Inspections/Results/ImplicitActiveSheetReferenceInspectionResult.cs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,24 @@ namespace Rubberduck.Inspections.Results
1010
public class ImplicitActiveSheetReferenceInspectionResult : InspectionResultBase
1111
{
1212
private readonly IdentifierReference _reference;
13-
private readonly IEnumerable<QuickFixBase> _quickFixes;
13+
private IEnumerable<QuickFixBase> _quickFixes;
1414

1515
public ImplicitActiveSheetReferenceInspectionResult(IInspection inspection, IdentifierReference reference)
1616
: base(inspection, reference.QualifiedModuleName, reference.Context)
1717
{
1818
_reference = reference;
19-
_quickFixes = new QuickFixBase[]
20-
{
21-
new IgnoreOnceQuickFix(reference.Context, QualifiedSelection, Inspection.AnnotationName),
22-
};
2319
}
2420

25-
public override IEnumerable<QuickFixBase> QuickFixes { get { return _quickFixes; } }
21+
public override IEnumerable<QuickFixBase> QuickFixes
22+
{
23+
get
24+
{
25+
return _quickFixes ?? (_quickFixes = new QuickFixBase[]
26+
{
27+
new IgnoreOnceQuickFix(_reference.Context, QualifiedSelection, Inspection.AnnotationName)
28+
});
29+
}
30+
}
2631

2732
public override string Description
2833
{

0 commit comments

Comments
 (0)