Quantcast
Channel: Visual Studio Integrate forum
Viewing all articles
Browse latest Browse all 4410

Refactoring Provider crashes with Exception ex{"OperatorToken"}

$
0
0

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)

Viewing all articles
Browse latest Browse all 4410

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>