提交 78a997e9 编写于 作者: C Cyrus Najmabadi

Roll back previous change.

上级 69613224
......@@ -193,7 +193,7 @@ protected override async Task<SyntaxNode> GetStatementOrInitializerContainingInv
{
var enclosingStatement = GetFirstStatementOrInitializerSelectedAtCallSite();
var (invocation, invocationWithAwaitOpt) = CreateCallSignatureParts();
var callSignature = CreateCallSignature().WithAdditionalAnnotations(CallSiteAnnotation);
var sourceNode = CSharpSelectionResult.GetContainingScope();
Contract.ThrowIfTrue(
......@@ -220,8 +220,6 @@ protected override async Task<SyntaxNode> GetStatementOrInitializerContainingInv
// however complexification of names is prepended, so the last annotation should be the original one.
sourceNode = updatedRoot.GetAnnotatedNodesAndTokens(sourceNodeAnnotation).Last().AsNode();
var callSignature = (ExpressionSyntax)invocationWithAwaitOpt ?? invocation;
callSignature = callSignature.WithAdditionalAnnotations(CallSiteAnnotation);
return newEnclosingStatement.ReplaceNode(sourceNode, callSignature);
}
}
......
......@@ -30,12 +30,7 @@ namespace Microsoft.CodeAnalysis.CSharp.ExtractMethod
{
internal partial class CSharpMethodExtractor
{
private abstract partial class CSharpCodeGenerator : CodeGenerator<
StatementSyntax,
ExpressionSyntax,
InvocationExpressionSyntax,
AwaitExpressionSyntax,
SyntaxNode>
private abstract partial class CSharpCodeGenerator : CodeGenerator<StatementSyntax, ExpressionSyntax, SyntaxNode>
{
private readonly SyntaxToken _methodName;
......@@ -579,7 +574,7 @@ protected override StatementSyntax CreateReturnStatement(string identifierName =
: SyntaxFactory.ReturnStatement(SyntaxFactory.IdentifierName(identifierName));
}
protected override (InvocationExpressionSyntax invocation, AwaitExpressionSyntax awaitExpressionOpt) CreateCallSignatureParts()
protected override ExpressionSyntax CreateCallSignature()
{
var methodName = CreateMethodNameForInvocation().WithAdditionalAnnotations(Simplifier.Annotation);
......@@ -598,7 +593,7 @@ protected override (InvocationExpressionSyntax invocation, AwaitExpressionSyntax
var shouldPutAsyncModifier = CSharpSelectionResult.ShouldPutAsyncModifier();
if (!shouldPutAsyncModifier)
{
return (invocation, awaitExpressionOpt: null);
return invocation;
}
if (CSharpSelectionResult.ShouldCallConfigureAwaitFalse())
......@@ -619,7 +614,7 @@ protected override (InvocationExpressionSyntax invocation, AwaitExpressionSyntax
}
}
return (invocation, SyntaxFactory.AwaitExpression(invocation));
return SyntaxFactory.AwaitExpression(invocation);
}
protected override StatementSyntax CreateAssignmentExpressionStatement(SyntaxToken identifier, ExpressionSyntax rvalue)
......
......@@ -20,16 +20,9 @@ namespace Microsoft.CodeAnalysis.ExtractMethod
{
internal abstract partial class MethodExtractor
{
protected abstract partial class CodeGenerator<
TStatement,
TExpression,
TInvocationExpression,
TAwaitExpression,
TNodeUnderContainer>
protected abstract partial class CodeGenerator<TStatement, TExpression, TNodeUnderContainer>
where TStatement : SyntaxNode
where TExpression : SyntaxNode
where TInvocationExpression : TExpression
where TAwaitExpression : TExpression
where TNodeUnderContainer : SyntaxNode
{
protected readonly SyntaxAnnotation MethodNameAnnotation;
......@@ -77,7 +70,7 @@ protected CodeGenerator(InsertionPoint insertionPoint, SelectionResult selection
protected abstract TNodeUnderContainer GetLastStatementOrInitializerSelectedAtCallSite();
protected abstract Task<TNodeUnderContainer> GetStatementOrInitializerContainingInvocationToExtractedMethodAsync(CancellationToken cancellationToken);
protected abstract (TInvocationExpression invocation, TAwaitExpression awaitExpressionOpt) CreateCallSignatureParts();
protected abstract TExpression CreateCallSignature();
protected abstract TStatement CreateDeclarationStatement(VariableInfo variable, TExpression initialValue, CancellationToken cancellationToken);
protected abstract TStatement CreateAssignmentExpressionStatement(SyntaxToken identifier, TExpression rvalue);
protected abstract TStatement CreateReturnStatement(string identifierName = null);
......@@ -219,12 +212,6 @@ protected ImmutableArray<TStatement> AddReturnIfUnreachable(ImmutableArray<TStat
(TStatement)(SyntaxNode)await GetStatementOrInitializerContainingInvocationToExtractedMethodAsync(cancellationToken).ConfigureAwait(false));
}
protected TExpression CreateCallSignature()
{
var (invocation, awaitExpressionOpt) = CreateCallSignatureParts();
return (TExpression)awaitExpressionOpt ?? invocation;
}
protected ImmutableArray<TStatement> AddAssignmentStatementToCallSite(
ImmutableArray<TStatement> statements,
CancellationToken cancellationToken)
......
......@@ -116,9 +116,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.ExtractMethod
Protected Overrides Async Function GetStatementOrInitializerContainingInvocationToExtractedMethodAsync(cancellationToken As CancellationToken) As Task(Of StatementSyntax)
Dim enclosingStatement = GetFirstStatementOrInitializerSelectedAtCallSite()
Dim callSignatureParts = CreateCallSignatureParts()
Dim invocation = callSignatureParts.invocation
Dim invocationWithAwaitOpt = callSignatureParts.awaitExpressionOpt
Dim callSignature = CreateCallSignature().WithAdditionalAnnotations(CallSiteAnnotation)
Dim sourceNode = VBSelectionResult.GetContainingScope()
Contract.ThrowIfTrue(
......@@ -145,8 +143,6 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.ExtractMethod
' however complexification of names is prepended, so the last annotation should be the original one.
sourceNode = updatedRoot.GetAnnotatedNodesAndTokens(sourceNodeAnnotation).Last().AsNode()
Dim callSignature = If(DirectCast(invocationWithAwaitOpt, ExpressionSyntax), invocation)
callSignature = callSignature.WithAdditionalAnnotations(CallSiteAnnotation)
Return newEnclosingStatement.ReplaceNode(sourceNode, callSignature)
End Function
End Class
......
......@@ -16,12 +16,7 @@ Imports System.Collections.Immutable
Namespace Microsoft.CodeAnalysis.VisualBasic.ExtractMethod
Partial Friend Class VisualBasicMethodExtractor
Partial Private MustInherit Class VisualBasicCodeGenerator
Inherits CodeGenerator(Of
StatementSyntax,
ExpressionSyntax,
InvocationExpressionSyntax,
AwaitExpressionSyntax,
StatementSyntax)
Inherits CodeGenerator(Of StatementSyntax, ExpressionSyntax, StatementSyntax)
Private ReadOnly _methodName As SyntaxToken
......@@ -324,7 +319,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.ExtractMethod
Return statements(index + 1).IsKind(SyntaxKind.ReturnStatement, SyntaxKind.ExitSubStatement)
End Function
Protected Overrides Function CreateCallSignatureParts() As (invocation As InvocationExpressionSyntax, awaitExpressionOpt As AwaitExpressionSyntax)
Protected Overrides Function CreateCallSignature() As ExpressionSyntax
Dim methodName As ExpressionSyntax = CreateMethodNameForInvocation().WithAdditionalAnnotations(Simplifier.Annotation)
Dim arguments = New List(Of ArgumentSyntax)()
......@@ -368,10 +363,10 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.ExtractMethod
SyntaxFactory.Token(SyntaxKind.FalseKeyword))))))
End If
End If
Return (invocation, SyntaxFactory.AwaitExpression(invocation))
Return SyntaxFactory.AwaitExpression(invocation)
End If
Return (invocation, awaitExpressionOpt:=Nothing)
Return invocation
End Function
Private Shared Function GetIdentifierName(name As String) As ExpressionSyntax
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册