Skip to content

Commit 4494b8d

Browse files
committed
Change Rewrite to TryRewrite
This change on the IRewriteSession allows the user to see whether the rewrite actually happened successfully.
1 parent 7450c58 commit 4494b8d

File tree

19 files changed

+140
-60
lines changed

19 files changed

+140
-60
lines changed

Rubberduck.CodeAnalysis/QuickFixes/QuickFixProvider.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public void Fix(IQuickFix fix, IInspectionResult result)
7878

7979
var rewriteSession = RewriteSession(fix.TargetCodeKind);
8080
fix.Fix(result, rewriteSession);
81-
rewriteSession.Rewrite();
81+
rewriteSession.TryRewrite();
8282
}
8383

8484
private IRewriteSession RewriteSession(CodeKind targetCodeKind)
@@ -115,7 +115,7 @@ public void FixInProcedure(IQuickFix fix, QualifiedMemberName? qualifiedMember,
115115

116116
fix.Fix(result, rewriteSession);
117117
}
118-
rewriteSession.Rewrite();
118+
rewriteSession.TryRewrite();
119119
}
120120

121121
public void FixInModule(IQuickFix fix, QualifiedSelection selection, Type inspectionType, IEnumerable<IInspectionResult> results)
@@ -137,7 +137,7 @@ public void FixInModule(IQuickFix fix, QualifiedSelection selection, Type inspec
137137

138138
fix.Fix(result, rewriteSession);
139139
}
140-
rewriteSession.Rewrite();
140+
rewriteSession.TryRewrite();
141141
}
142142

143143
public void FixInProject(IQuickFix fix, QualifiedSelection selection, Type inspectionType, IEnumerable<IInspectionResult> results)
@@ -159,7 +159,7 @@ public void FixInProject(IQuickFix fix, QualifiedSelection selection, Type inspe
159159

160160
fix.Fix(result, rewriteSession);
161161
}
162-
rewriteSession.Rewrite();
162+
rewriteSession.TryRewrite();
163163
}
164164

165165
public void FixAll(IQuickFix fix, Type inspectionType, IEnumerable<IInspectionResult> results)
@@ -181,7 +181,7 @@ public void FixAll(IQuickFix fix, Type inspectionType, IEnumerable<IInspectionRe
181181

182182
fix.Fix(result, rewriteSession);
183183
}
184-
rewriteSession.Rewrite();
184+
rewriteSession.TryRewrite();
185185
}
186186

187187
public bool HasQuickFixes(IInspectionResult inspectionResult)

Rubberduck.Parsing/Rewriter/AttributesRewriteSession.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,17 @@ protected override IExecutableModuleRewriter ModuleRewriter(QualifiedModuleName
2323
return RewriterProvider.AttributesModuleRewriter(module);
2424
}
2525

26-
protected override void RewriteInternal()
26+
protected override bool TryRewriteInternal()
2727
{
2828
//The suspension ensures that only one parse gets executed instead of two for each rewritten module.
2929
var result = _parseManager.OnSuspendParser(this, new[] {ParserState.Ready}, ExecuteAllRewriters);
3030
if(result != SuspensionResult.Completed)
3131
{
3232
Logger.Warn($"Rewriting attribute modules did not succeed. suspension result = {result}");
33+
return false;
3334
}
35+
36+
return true;
3437
}
3538

3639
private void ExecuteAllRewriters()

Rubberduck.Parsing/Rewriter/CodePaneRewriteSession.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,15 @@ protected override IExecutableModuleRewriter ModuleRewriter(QualifiedModuleName
2323
return RewriterProvider.CodePaneModuleRewriter(module);
2424
}
2525

26-
protected override void RewriteInternal()
26+
protected override bool TryRewriteInternal()
2727
{
2828
foreach (var rewriter in CheckedOutModuleRewriters.Values)
2929
{
3030
rewriter.Rewrite();
3131
}
3232
_parseManager.OnParseRequested(this);
33+
34+
return true;
3335
}
3436
}
3537
}

Rubberduck.Parsing/Rewriter/IRewriteSession.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ namespace Rubberduck.Parsing.Rewriter
66
public interface IRewriteSession
77
{
88
IModuleRewriter CheckOutModuleRewriter(QualifiedModuleName module);
9-
void Rewrite();
9+
bool TryRewrite();
1010
bool IsInvalidated { get; }
1111
void Invalidate();
1212
CodeKind TargetCodeKind { get; }

Rubberduck.Parsing/Rewriter/RewriteSessionBase.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,32 +40,32 @@ public IModuleRewriter CheckOutModuleRewriter(QualifiedModuleName module)
4040

4141
protected abstract IExecutableModuleRewriter ModuleRewriter(QualifiedModuleName module);
4242

43-
public void Rewrite()
43+
public bool TryRewrite()
4444
{
4545
if (!CheckedOutModuleRewriters.Any())
4646
{
47-
return;
47+
return false;
4848
}
4949

5050
lock (_invalidationLockObject)
5151
{
5252
if (_isInvalidated)
5353
{
5454
Logger.Warn("Tried to execute Rewrite on a RewriteSession that was already invalidated.");
55-
return;
55+
return false;
5656
}
5757
}
5858

5959
if (!_rewritingAllowed(this))
6060
{
61-
Logger.Warn("Tried to execute Rewrite on a RewriteSession when rewriting was no longer allowed.");
62-
return;
61+
Logger.Debug("Tried to execute Rewrite on a RewriteSession when rewriting was no longer allowed.");
62+
return false;
6363
}
6464

65-
RewriteInternal();
65+
return TryRewriteInternal();
6666
}
6767

68-
protected abstract void RewriteInternal();
68+
protected abstract bool TryRewriteInternal();
6969

7070
private bool _isInvalidated = false;
7171
public bool IsInvalidated

Rubberduck.Refactorings/EncapsulateField/EncapsulateFieldRefactoring.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ public void Refactor()
4141

4242
var rewriteSession = _rewritingManager.CheckOutCodePaneSession();
4343
AddProperty(rewriteSession);
44-
rewriteSession.Rewrite();
44+
rewriteSession.TryRewrite();
4545
}
4646

4747
public void Refactor(QualifiedSelection target)

Rubberduck.Refactorings/ExtractInterface/ExtractInterfaceRefactoring.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ private void AddInterfaceInternal()
123123
AddInterfaceMembersToClass(rewriter);
124124

125125
//We have to reparse here already, because
126-
rewriteSession.Rewrite();
126+
rewriteSession.TryRewrite();
127127
}
128128

129129
private void AddInterfaceClass(Declaration implementingClass, string interfaceName, string interfaceBody)

Rubberduck.Refactorings/ImplementInterface/ImplementInterfaceRefactoring.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ public void Refactor(QualifiedSelection selection)
8282
var rewriteSession = _rewritingManager.CheckOutCodePaneSession();
8383
var rewriter = rewriteSession.CheckOutModuleRewriter(_targetClass.QualifiedModuleName);
8484
ImplementMissingMembers(rewriter);
85-
rewriteSession.Rewrite();
85+
rewriteSession.TryRewrite();
8686

8787
if (oldSelection.HasValue)
8888
{

Rubberduck.Refactorings/IntroduceField/IntroduceFieldRefactoring.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ private void PromoteVariable(Declaration target)
8686
rewriter.Remove(target);
8787
AddField(rewriter, target);
8888

89-
rewriteSession.Rewrite();
89+
rewriteSession.TryRewrite();
9090

9191
if (oldSelection.HasValue)
9292
{

Rubberduck.Refactorings/IntroduceParameter/IntroduceParameterRefactoring.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ private void PromoteVariable(Declaration target)
104104
UpdateSignature(target, rewriteSession);
105105
rewriter.Remove(target);
106106

107-
rewriteSession.Rewrite();
107+
rewriteSession.TryRewrite();
108108

109109
if (oldSelection.HasValue && !pane.IsWrappingNullReference)
110110
{

0 commit comments

Comments
 (0)