static bool GetMatch(IfStatementSyntax node, out ExpressionSyntax c, out ReturnStatementSyntax e1, out ReturnStatementSyntax e2, out ReturnStatementSyntax rs) { rs = e1 = e2 = null; c = node.Condition; //attempt to match if(condition) return else return e1 = ConvertIfStatementToNullCoalescingExpressionAction.GetSimpleStatement(node.Statement) as ReturnStatementSyntax; if (e1 == null) { return(false); } e2 = node.Else != null?ConvertIfStatementToNullCoalescingExpressionAction.GetSimpleStatement(node.Else.Statement) as ReturnStatementSyntax : null; //match if (e1 != null && e2 != null) { return(true); } //attempt to match if(condition) return if (e1 != null) { rs = node.Parent.ChildThatContainsPosition(node.GetTrailingTrivia().Max(t => t.FullSpan.End) + 1).AsNode() as ReturnStatementSyntax; if (rs != null) { e2 = rs; return(true); } } return(false); }
static bool GetMatch(IfStatementSyntax node, out ExpressionSyntax c, out ReturnStatementSyntax e1, out ReturnStatementSyntax e2, out ReturnStatementSyntax rs) { rs = e1 = e2 = null; c = node.Condition; //attempt to match if(condition) return else return e1 = ConvertIfStatementToNullCoalescingExpressionAction.GetSimpleStatement(node.Statement) as ReturnStatementSyntax; if (e1 == null) { return(false); } e2 = node.Else != null?ConvertIfStatementToNullCoalescingExpressionAction.GetSimpleStatement(node.Else.Statement) as ReturnStatementSyntax : null; //match if (e1 != null && e2 != null) { return(true); } //attempt to match if(condition) return; return if (e1 != null) { var parentBlock = node.Parent as BlockSyntax; if (parentBlock == null) { return(false); } var index = parentBlock.Statements.IndexOf(node); if (index + 1 < parentBlock.Statements.Count) { rs = parentBlock.Statements[index + 1] as ReturnStatementSyntax; } if (rs != null) { e2 = rs; return(true); } } return(false); }