提交 002be622 编写于 作者: C Cyrus Najmabadi

Fix location

上级 3d8c68f3
...@@ -1069,7 +1069,8 @@ public override SyntaxNode VisitInvocationExpression(InvocationExpressionSyntax ...@@ -1069,7 +1069,8 @@ public override SyntaxNode VisitInvocationExpression(InvocationExpressionSyntax
// Issue https://github.com/dotnet/roslyn/issues/3260 tracks fixing this workaround. // Issue https://github.com/dotnet/roslyn/issues/3260 tracks fixing this workaround.
if (originalMemberAccess.GetParentConditionalAccessExpression() == null) if (originalMemberAccess.GetParentConditionalAccessExpression() == null)
{ {
var expression = RewriteExtensionMethodInvocation(rewrittenNode, thisExpression, reducedExtensionMethod); var speculationPosition = originalNode.SpanStart;
var expression = RewriteExtensionMethodInvocation(speculationPosition, rewrittenNode, thisExpression, reducedExtensionMethod);
// Let's rebind this and verify the original method is being called properly // Let's rebind this and verify the original method is being called properly
var binding = _semanticModel.GetSpeculativeSymbolInfo(originalNode.SpanStart, expression, SpeculativeBindingOption.BindAsExpression); var binding = _semanticModel.GetSpeculativeSymbolInfo(originalNode.SpanStart, expression, SpeculativeBindingOption.BindAsExpression);
...@@ -1081,6 +1082,7 @@ public override SyntaxNode VisitInvocationExpression(InvocationExpressionSyntax ...@@ -1081,6 +1082,7 @@ public override SyntaxNode VisitInvocationExpression(InvocationExpressionSyntax
} }
private InvocationExpressionSyntax RewriteExtensionMethodInvocation( private InvocationExpressionSyntax RewriteExtensionMethodInvocation(
int speculationPosition,
InvocationExpressionSyntax originalNode, InvocationExpressionSyntax originalNode,
ExpressionSyntax thisExpression, ExpressionSyntax thisExpression,
IMethodSymbol reducedExtensionMethod) IMethodSymbol reducedExtensionMethod)
...@@ -1093,7 +1095,7 @@ public override SyntaxNode VisitInvocationExpression(InvocationExpressionSyntax ...@@ -1093,7 +1095,7 @@ public override SyntaxNode VisitInvocationExpression(InvocationExpressionSyntax
// We use .ParseExpression here, and not .GenerateTypeSyntax as we want this to be a property // We use .ParseExpression here, and not .GenerateTypeSyntax as we want this to be a property
// MemberAccessExpression, and not a QualifiedNameSyntax. // MemberAccessExpression, and not a QualifiedNameSyntax.
var containingTypeSyntax = SyntaxFactory.ParseExpression(containingTypeString); var containingTypeSyntax = SyntaxFactory.ParseExpression(containingTypeString);
var newContainingType = _semanticModel.GetSpeculativeSymbolInfo(originalNode.SpanStart, containingTypeSyntax, SpeculativeBindingOption.BindAsExpression).Symbol; var newContainingType = _semanticModel.GetSpeculativeSymbolInfo(speculationPosition, containingTypeSyntax, SpeculativeBindingOption.BindAsExpression).Symbol;
if (newContainingType == null || !newContainingType.Equals(reducedExtensionMethod.ContainingType)) if (newContainingType == null || !newContainingType.Equals(reducedExtensionMethod.ContainingType))
return originalNode; return originalNode;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册