Exemple #1
0
        private static bool IsFunctionLikeLastReturnStatement(SyntaxNode node)
        {
            if (!BranchKinds.Contains(node.Kind()))
            {
                return(false);
            }

            if (!node.IsKind(SyntaxKind.ReturnStatement))
            {
                return(false);
            }

            var blockType = node.Parent.GetType();

            if (!BlockTypes.Any(bType => bType.IsAssignableFrom(blockType)))
            {
                return(false);
            }

            if (!IsFunctionLike(node.Parent))
            {
                return(false);
            }

            var nextToken = node.GetLastToken().GetNextToken();
            var nextNode  = nextToken.Parent;

            return(nextToken.IsKind(SyntaxKind.EndKeyword) &&
                   node.Parent == nextNode.Parent);
        }
Exemple #2
0
        protected override bool IsReturnButNotLast(SyntaxNode node)
        {
            if (!node.IsKind(SyntaxKind.ReturnStatement))
            {
                return(false);
            }

            var blockType = node.Parent.GetType();

            if (!BlockTypes.Any(bType => bType.IsAssignableFrom(blockType)))
            {
                return(true);
            }

            if (!IsFunctionLike(node.Parent))
            {
                return(true);
            }

            var nextToken = node.GetLastToken().GetNextToken();
            var nextNode  = nextToken.Parent;

            return(!nextToken.IsKind(SyntaxKind.EndKeyword) ||
                   node.Parent != nextNode.Parent);
        }