Пример #1
0
        private static SyntaxNode Transform(SyntaxNode oldNode, SyntaxNode newNode, Scope scope, LexicalExtension <SyntaxToken> extension)
        {
            Debug.Assert(newNode is BlockSyntax);
            var isAssignment = oldNode is LocalDeclarationStatementSyntax;

            if (!isAssignment && oldNode is BinaryExpressionSyntax)
            {
                var expr = oldNode as BinaryExpressionSyntax;
                isAssignment = expr.Kind() == SyntaxKind.SimpleAssignmentExpression;
            }

            if (isAssignment)
            {
                scope.AddError("r01", "R does not return", oldNode);
                return(newNode);
            }

            var document = scope.GetDocument <SyntaxToken, SyntaxNode, SemanticModel>();

            document.change(oldNode.Parent, RoslynCompiler.ExplodeBlock(newNode));

            return(newNode);
        }