提交 5fa24d59 编写于 作者: C Cyrus Najmabadi

Pass along cancellation token where appropriate instead of using CancellationToken.None

上级 01625ff8
......@@ -460,7 +460,7 @@ private ExpressionSyntax SkipRedundantExteriorParentheses(ExpressionSyntax expre
var newVariableDeclarator = await FindDeclaratorAsync(updatedDocument, cancellationToken).ConfigureAwait(false);
localSymbol = (ILocalSymbol)semanticModel.GetDeclaredSymbol(newVariableDeclarator, cancellationToken);
var explicitCastExpression = newExpression.CastIfPossible(localSymbol.Type, newVariableDeclarator.SpanStart, semanticModel);
var explicitCastExpression = newExpression.CastIfPossible(localSymbol.Type, newVariableDeclarator.SpanStart, semanticModel, cancellationToken);
if (explicitCastExpression != newExpression)
{
updatedDocument = await updatedDocument.ReplaceNodeAsync(newExpression, explicitCastExpression, cancellationToken).ConfigureAwait(false);
......
......@@ -412,7 +412,8 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.CodeRefactorings.InlineTemporary
explicitInitializer = explicitInitializer.CastIfPossible(local.Type,
modifiedIdentifier.SpanStart,
semanticModel,
wasCastAdded)
wasCastAdded,
cancellationToken)
Return explicitInitializer.WithAdditionalAnnotations(s_expressionToInlineAnnotation)
End Function
......
......@@ -97,7 +97,8 @@ public static ExpressionSyntax WalkDownParentheses(this ExpressionSyntax express
this ExpressionSyntax expression,
ITypeSymbol targetType,
int position,
SemanticModel semanticModel)
SemanticModel semanticModel,
CancellationToken cancellationToken)
{
if (targetType.ContainsAnonymousType())
{
......@@ -123,7 +124,7 @@ public static ExpressionSyntax WalkDownParentheses(this ExpressionSyntax express
var castExpression = expression.Cast(targetType);
// Ensure that inserting the cast doesn't change the semantics.
var specAnalyzer = new SpeculationAnalyzer(expression, castExpression, semanticModel, CancellationToken.None);
var specAnalyzer = new SpeculationAnalyzer(expression, castExpression, semanticModel, cancellationToken);
var speculativeSemanticModel = specAnalyzer.SpeculativeSemanticModel;
if (speculativeSemanticModel == null)
{
......@@ -131,7 +132,7 @@ public static ExpressionSyntax WalkDownParentheses(this ExpressionSyntax express
}
var speculatedCastExpression = (CastExpressionSyntax)specAnalyzer.ReplacedExpression;
if (!speculatedCastExpression.IsUnnecessaryCast(speculativeSemanticModel, CancellationToken.None))
if (!speculatedCastExpression.IsUnnecessaryCast(speculativeSemanticModel, cancellationToken))
{
return expression;
}
......@@ -762,7 +763,7 @@ private static bool CanReplace(ISymbol symbol)
return true;
}
return TrySimplify(expression, semanticModel, out replacementNode, out issueSpan);
return TrySimplify(expression, semanticModel, out replacementNode, out issueSpan, cancellationToken);
}
private static bool TryReduceExplicitName(
......@@ -1933,7 +1934,8 @@ private static bool IsPartOfNamespaceDeclarationName(SyntaxNode node)
ExpressionSyntax expression,
SemanticModel semanticModel,
out ExpressionSyntax replacementNode,
out TextSpan issueSpan)
out TextSpan issueSpan,
CancellationToken cancellationToken)
{
replacementNode = null;
issueSpan = default;
......@@ -1955,7 +1957,7 @@ private static bool IsPartOfNamespaceDeclarationName(SyntaxNode node)
.WithAdditionalAnnotations(Simplifier.Annotation);
// Ensure that replacement doesn't change semantics.
return !ReplacementChangesSemantics(memberAccess, replacementNode, semanticModel);
return !ReplacementChangesSemantics(memberAccess, replacementNode, semanticModel, cancellationToken);
}
return false;
......@@ -1971,7 +1973,7 @@ private static bool IsPartOfNamespaceDeclarationName(SyntaxNode node)
.WithAdditionalAnnotations(Simplifier.Annotation);
// Ensure that replacement doesn't change semantics.
return !ReplacementChangesSemantics(qualifiedName, replacementNode, semanticModel);
return !ReplacementChangesSemantics(qualifiedName, replacementNode, semanticModel, cancellationToken);
}
return false;
......@@ -1981,9 +1983,11 @@ private static bool IsPartOfNamespaceDeclarationName(SyntaxNode node)
return false;
}
private static bool ReplacementChangesSemantics(ExpressionSyntax originalExpression, ExpressionSyntax replacedExpression, SemanticModel semanticModel)
private static bool ReplacementChangesSemantics(
ExpressionSyntax originalExpression, ExpressionSyntax replacedExpression,
SemanticModel semanticModel, CancellationToken cancellationToken)
{
var speculationAnalyzer = new SpeculationAnalyzer(originalExpression, replacedExpression, semanticModel, CancellationToken.None);
var speculationAnalyzer = new SpeculationAnalyzer(originalExpression, replacedExpression, semanticModel, cancellationToken);
return speculationAnalyzer.ReplacementChangesSemantics();
}
......
......@@ -106,7 +106,7 @@ private bool TryCastTo(ITypeSymbol targetType, ExpressionSyntax expression, Expr
var speculativeSemanticModel = speculativeAnalyzer.SpeculativeSemanticModel;
var speculatedExpression = speculativeAnalyzer.ReplacedExpression;
var result = speculatedExpression.CastIfPossible(targetType, speculatedExpression.SpanStart, speculativeSemanticModel);
var result = speculatedExpression.CastIfPossible(targetType, speculatedExpression.SpanStart, speculativeSemanticModel, _cancellationToken);
if (result != speculatedExpression)
{
......
......@@ -260,8 +260,9 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions
targetType As ITypeSymbol,
position As Integer,
semanticModel As SemanticModel,
<Out> ByRef wasCastAdded As Boolean
) As ExpressionSyntax
<Out> ByRef wasCastAdded As Boolean,
cancellationToken As CancellationToken) As ExpressionSyntax
wasCastAdded = False
If targetType.ContainsAnonymousType() OrElse expression.IsParentKind(SyntaxKind.AsNewClause) Then
......@@ -282,7 +283,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions
Dim castExpression = expression.Cast(targetType, isResultPredefinedCast)
' Ensure that inserting the cast doesn't change the semantics.
Dim specAnalyzer = New SpeculationAnalyzer(expression, castExpression, semanticModel, CancellationToken.None)
Dim specAnalyzer = New SpeculationAnalyzer(expression, castExpression, semanticModel, cancellationToken)
Dim speculativeSemanticModel = specAnalyzer.SpeculativeSemanticModel
If speculativeSemanticModel Is Nothing Then
Return expression
......@@ -292,7 +293,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions
Dim speculatedCastInnerExpression = If(isResultPredefinedCast,
DirectCast(speculatedCastExpression, PredefinedCastExpressionSyntax).Expression,
DirectCast(speculatedCastExpression, CastExpressionSyntax).Expression)
If Not CastAnalyzer.IsUnnecessary(speculatedCastExpression, speculatedCastInnerExpression, speculativeSemanticModel, True, CancellationToken.None) Then
If Not CastAnalyzer.IsUnnecessary(speculatedCastExpression, speculatedCastInnerExpression, speculativeSemanticModel, True, cancellationToken) Then
Return expression
End If
......@@ -922,7 +923,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions
Return True
End If
Return expression.TrySimplify(semanticModel, replacementNode, issueSpan)
Return expression.TrySimplify(semanticModel, replacementNode, issueSpan, cancellationToken)
End Function
<Extension()>
......@@ -1607,9 +1608,10 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions
Private Function TrySimplify(
expression As ExpressionSyntax,
semanticModel As SemanticModel,
<Out()> ByRef replacementNode As ExpressionSyntax,
<Out()> ByRef issueSpan As TextSpan
) As Boolean
<Out> ByRef replacementNode As ExpressionSyntax,
<Out> ByRef issueSpan As TextSpan,
cancellationToken As CancellationToken) As Boolean
replacementNode = Nothing
issueSpan = Nothing
......@@ -1623,7 +1625,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions
replacementNode = memberAccess.Update(memberAccess.Kind, newLeft, memberAccess.OperatorToken, memberAccess.Name).WithAdditionalAnnotations(Simplifier.Annotation)
' Ensure that replacement doesn't change semantics.
Return Not ReplacementChangesSemantics(memberAccess, replacementNode, semanticModel)
Return Not ReplacementChangesSemantics(memberAccess, replacementNode, semanticModel, cancellationToken)
End If
Return False
......@@ -1642,7 +1644,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions
replacementNode = qualifiedName.Update(DirectCast(newLeft, NameSyntax), qualifiedName.DotToken, qualifiedName.Right).WithAdditionalAnnotations(Simplifier.Annotation)
' Ensure that replacement doesn't change semantics.
Return Not ReplacementChangesSemantics(qualifiedName, replacementNode, semanticModel)
Return Not ReplacementChangesSemantics(qualifiedName, replacementNode, semanticModel, cancellationToken)
End If
Return False
......@@ -1652,8 +1654,12 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Extensions
Return False
End Function
Private Function ReplacementChangesSemantics(originalExpression As ExpressionSyntax, replacedExpression As ExpressionSyntax, semanticModel As SemanticModel) As Boolean
Dim speculationAnalyzer = New SpeculationAnalyzer(originalExpression, replacedExpression, semanticModel, CancellationToken.None)
Private Function ReplacementChangesSemantics(
originalExpression As ExpressionSyntax,
replacedExpression As ExpressionSyntax,
semanticModel As SemanticModel,
cancellationToken As CancellationToken) As Boolean
Dim speculationAnalyzer = New SpeculationAnalyzer(originalExpression, replacedExpression, semanticModel, cancellationToken)
Return speculationAnalyzer.ReplacementChangesSemantics()
End Function
......
......@@ -58,9 +58,9 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.Simplification
Return AddCast(expression, targetType, semanticModel)
End Function
Private Shared Function AddCast(expression As ExpressionSyntax, targetType As ITypeSymbol, semanticModel As SemanticModel) As ExpressionSyntax
Private Function AddCast(expression As ExpressionSyntax, targetType As ITypeSymbol, semanticModel As SemanticModel) As ExpressionSyntax
Dim wasCastAdded As Boolean = False
Dim result = expression.CastIfPossible(targetType, expression.SpanStart, semanticModel, wasCastAdded)
Dim result = expression.CastIfPossible(targetType, expression.SpanStart, semanticModel, wasCastAdded, _cancellationToken)
If wasCastAdded Then
result = result.Parenthesize()
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册