With Visual Studio 2015 I am creating a Code Refactoring Provider that does nothing useful yet and I am getting a exception ex{"OperatorToken"} with little useful information.
I have broken it down to show where I think the issue is, the first 5 lines are setup
Dim semanticModel As SemanticModel = Await document.GetSemanticModelAsync(cancellationToken) Dim root As SyntaxNode = Await document.GetSyntaxRootAsync(cancellationToken) Dim OldCondition As BinaryExpressionSyntax = CType(invocation.Condition, BinaryExpressionSyntax) Dim OldConditionoperatorToken As SyntaxToken = OldCondition.OperatorToken Dim operatorToken As SyntaxToken = SyntaxFactory.Token(SyntaxKind.OperatorKeyword, "Is").WithLeadingTrivia(OldCondition.GetLeadingTrivia).WithTrailingTrivia(OldCondition.GetTrailingTrivia)
The following line throws the exception ex{"OperatorToken"} with no additional information, no ideal what is causing it or how to fix it.
Dim NewCondition As BinaryExpressionSyntax = SyntaxFactory.BinaryExpression(OldCondition.Kind, OldCondition.Left, operatorToken, OldCondition.Right)
If I substitute OldCondition.operatorToken or OldConditionoperatorToken for operatorToken it works as expected.
My eventual goal if to switch right and left and change operatorToken to "IsNot" as shown below, creating a refactoring that will reverse a Ternary Conditional, eventually simplifying it using "?.".
Dim operatorToken As SyntaxToken = SyntaxFactory.Token(SyntaxKind.OperatorKeyword, "IsNot").WithLeadingTrivia(OldCondition.GetLeadingTrivia).WithTrailingTrivia(OldCondition.GetTrailingTrivia)
Dim NewCondition As BinaryExpressionSyntax = SyntaxFactory.BinaryExpression(OldCondition.Kind, OldCondition.Right, operatorToken, OldCondition.Left)