- Notifications
You must be signed in to change notification settings - Fork4.1k
Closed
Description
Version Used: VS 2022 17.4.0
Steps to Reproduce:
- Place the cursor at the marked location
- Insert
{
. - Press theReturn key.
Note that the parentheses are balanced at the start.
namespaceN;internalclassC{privatevoidM(){M1(x=>M2("a", y=>M3<int>(z=> $$)));}privatevoidM1(Action<object>a){}privatevoidM2(stringa,Action<object>e){}privatevoidM3<T>(Action<T>a){}}
Expected Behavior:
- The closing brace is placed at the correct location, forming an empty statement block:
M1(x => M2("a", y => M3<int>(z => { })));
- The refactoring does not crash due to the malformed syntax.
Actual Behavior:
- The closing brace is placed between the second and third closing parenthesis, leading to malformed syntax:
M1(x => M2("a", y => M3<int>(z => {))});
- After pressingReturn the
ChangeSignatureCodeRefactoringProvider
throws an exception, leading to a gold bar. The stack trace is posted below.
The second problem does not seem to occur when the namespace declaration is missing.
System.NullReferenceException : Object reference not set to an instance of an object. at Microsoft.CodeAnalysis.ChangeSignature.AbstractChangeSignatureService.GetParameterIndexFromInvocationArgument(SyntaxNode argument,Document document,SemanticModel semanticModel,CancellationToken cancellationToken) at async Microsoft.CodeAnalysis.CSharp.ChangeSignature.CSharpChangeSignatureService.GetInvocationSymbolAsync(<Unknown Parameters>) at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at async Microsoft.CodeAnalysis.ChangeSignature.AbstractChangeSignatureService.GetChangeSignatureContextAsync(<Unknown Parameters>) at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at async Microsoft.CodeAnalysis.ChangeSignature.AbstractChangeSignatureService.GetChangeSignatureCodeActionAsync(<Unknown Parameters>) at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at async Microsoft.CodeAnalysis.ChangeSignature.ChangeSignatureCodeRefactoringProvider.ComputeRefactoringsAsync(<Unknown Parameters>) at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw() at async Microsoft.CodeAnalysis.CodeRefactorings.CodeRefactoringService.GetRefactoringFromProviderAsync(<Unknown Parameters>)