Skip to content

Commit e98ab4d

Browse files
committed
Make UseSetKeywordForObjectAssignmentQuickFix able to deal with Suspicious Let assignments
1 parent 8818fbe commit e98ab4d

File tree

3 files changed

+46
-6
lines changed

3 files changed

+46
-6
lines changed

Rubberduck.CodeAnalysis/QuickFixes/UseSetKeywordForObjectAssignmentQuickFix.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ namespace Rubberduck.Inspections.QuickFixes
1010
public sealed class UseSetKeywordForObjectAssignmentQuickFix : QuickFixBase
1111
{
1212
public UseSetKeywordForObjectAssignmentQuickFix()
13-
: base(typeof(ObjectVariableNotSetInspection))
13+
: base(typeof(ObjectVariableNotSetInspection), typeof(SuspiciousLetAssignmentInspection))
1414
{}
1515

1616
public override void Fix(IInspectionResult result, IRewriteSession rewriteSession)

RubberduckTests/QuickFixes/ExpandBangNotationQuickFixTests.cs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
using Rubberduck.Inspections.Concrete;
44
using Rubberduck.Parsing.Inspections.Abstract;
55
using Rubberduck.Parsing.VBA;
6-
using Rubberduck.Parsing.VBA.Parsing;
76
using Rubberduck.VBEditor.SafeComWrappers;
87
using RubberduckTests.Mocks;
98

@@ -46,7 +45,7 @@ End Function
4645
("Class2", class2Code, ComponentType.ClassModule),
4746
("Module1", moduleCode, ComponentType.StandardModule));
4847

49-
var actualModuleCode = ApplyQuickFixToFirstInspectionResult(vbe.Object, "Module1", state => new UseOfBangNotationInspection(state), CodeKind.AttributesCode);
48+
var actualModuleCode = ApplyQuickFixToFirstInspectionResult(vbe.Object, "Module1", state => new UseOfBangNotationInspection(state));
5049
Assert.AreEqual(expectedModuleCode, actualModuleCode);
5150
}
5251

@@ -85,7 +84,7 @@ End Function
8584
("Class2", class2Code, ComponentType.ClassModule),
8685
("Module1", moduleCode, ComponentType.StandardModule));
8786

88-
var actualModuleCode = ApplyQuickFixToFirstInspectionResult(vbe.Object, "Module1", state => new UseOfRecursiveBangNotationInspection(state), CodeKind.AttributesCode);
87+
var actualModuleCode = ApplyQuickFixToFirstInspectionResult(vbe.Object, "Module1", state => new UseOfRecursiveBangNotationInspection(state));
8988
Assert.AreEqual(expectedModuleCode, actualModuleCode);
9089
}
9190

@@ -126,7 +125,7 @@ End Function
126125
("Class2", class2Code, ComponentType.ClassModule),
127126
("Module1", moduleCode, ComponentType.StandardModule));
128127

129-
var actualModuleCode = ApplyQuickFixToFirstInspectionResult(vbe.Object, "Module1", state => new UseOfBangNotationInspection(state), CodeKind.AttributesCode);
128+
var actualModuleCode = ApplyQuickFixToFirstInspectionResult(vbe.Object, "Module1", state => new UseOfBangNotationInspection(state));
130129
Assert.AreEqual(expectedModuleCode, actualModuleCode);
131130
}
132131

@@ -167,7 +166,7 @@ End Function
167166
("Class2", class2Code, ComponentType.ClassModule),
168167
("Module1", moduleCode, ComponentType.StandardModule));
169168

170-
var actualModuleCode = ApplyQuickFixToFirstInspectionResult(vbe.Object, "Module1", state => new UseOfRecursiveBangNotationInspection(state), CodeKind.AttributesCode);
169+
var actualModuleCode = ApplyQuickFixToFirstInspectionResult(vbe.Object, "Module1", state => new UseOfRecursiveBangNotationInspection(state));
171170
Assert.AreEqual(expectedModuleCode, actualModuleCode);
172171
}
173172

RubberduckTests/QuickFixes/UseSetKeywordForObjectAssignmentQuickFixTests.cs

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,47 @@ End Property
9797
Assert.AreEqual(expectedCode, actualCode);
9898
}
9999

100+
[Test]
101+
[Category("Inspections")]
102+
public void BothSidesOfAssignmentHaveDefaultMemberAccess_NoExplicitLet_QuickFixWorks()
103+
{
104+
var class1Code = @"
105+
Public Property Get Baz() As Long
106+
Attribute Baz.VB_UserMemId = 0
107+
End Property
108+
109+
Public Property Let Baz(RHS As Long)
110+
End Property
111+
";
112+
113+
var moduleCode = $@"
114+
Private Sub Bar()
115+
Dim cls1 As Class1
116+
Dim cls2 As Class1
117+
Set cls1 = New Class1
118+
Set cls2 = New Class1
119+
cls2 = cls1
120+
End Sub
121+
";
122+
123+
var expectedModuleCode = $@"
124+
Private Sub Bar()
125+
Dim cls1 As Class1
126+
Dim cls2 As Class1
127+
Set cls1 = New Class1
128+
Set cls2 = New Class1
129+
Set cls2 = cls1
130+
End Sub
131+
";
132+
133+
var vbe = MockVbeBuilder.BuildFromModules(
134+
("Class1", class1Code, ComponentType.ClassModule),
135+
("Module1", moduleCode, ComponentType.StandardModule));
136+
137+
var actualModuleCode = ApplyQuickFixToAllInspectionResults(vbe.Object, "Module1", state => new SuspiciousLetAssignmentInspection(state));
138+
Assert.AreEqual(expectedModuleCode, actualModuleCode);
139+
}
140+
100141

101142
protected override IQuickFix QuickFix(RubberduckParserState state)
102143
{

0 commit comments

Comments
 (0)