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); }
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); }