提交 b77e2645 编写于 作者: C CyrusNajmabadi

Convert if to switch.

上级 e9954ffe
...@@ -101,92 +101,73 @@ public static bool IsBeginningOfStatementContext(this SyntaxToken token) ...@@ -101,92 +101,73 @@ public static bool IsBeginningOfStatementContext(this SyntaxToken token)
// for ( ; ; Foo(), | // for ( ; ; Foo(), |
if (token.Kind() == SyntaxKind.OpenBraceToken && switch (token.Kind())
token.Parent.IsKind(SyntaxKind.Block))
{ {
return true; case SyntaxKind.OpenBraceToken when token.Parent.IsKind(SyntaxKind.Block):
}
if (token.Kind() == SyntaxKind.SemicolonToken)
{
var statement = token.GetAncestor<StatementSyntax>();
if (statement != null && !statement.IsParentKind(SyntaxKind.GlobalStatement) &&
statement.GetLastToken(includeZeroWidth: true) == token)
{
return true; return true;
}
}
if (token.Kind() == SyntaxKind.CloseBraceToken && case SyntaxKind.SemicolonToken:
token.Parent.IsKind(SyntaxKind.Block)) var statement = token.GetAncestor<StatementSyntax>();
{ return statement != null && !statement.IsParentKind(SyntaxKind.GlobalStatement) &&
if (token.Parent.Parent is StatementSyntax) statement.GetLastToken(includeZeroWidth: true) == token;
{
// Most blocks that are the child of statement are places case SyntaxKind.CloseBraceToken:
// that we can follow with another statement. i.e.: if (token.Parent.IsKind(SyntaxKind.Block))
// if { }
// while () { }
// There are two exceptions.
// try {}
// do {}
if (!token.Parent.IsParentKind(SyntaxKind.TryStatement) &&
!token.Parent.IsParentKind(SyntaxKind.DoStatement))
{ {
return true; if (token.Parent.Parent is StatementSyntax)
{
// Most blocks that are the child of statement are places
// that we can follow with another statement. i.e.:
// if { }
// while () { }
// There are two exceptions.
// try {}
// do {}
if (!token.Parent.IsParentKind(SyntaxKind.TryStatement) &&
!token.Parent.IsParentKind(SyntaxKind.DoStatement))
{
return true;
}
}
else if (
token.Parent.IsParentKind(SyntaxKind.ElseClause) ||
token.Parent.IsParentKind(SyntaxKind.FinallyClause) ||
token.Parent.IsParentKind(SyntaxKind.CatchClause) ||
token.Parent.IsParentKind(SyntaxKind.SwitchSection))
{
return true;
}
} }
}
else if (
token.Parent.IsParentKind(SyntaxKind.ElseClause) ||
token.Parent.IsParentKind(SyntaxKind.FinallyClause) ||
token.Parent.IsParentKind(SyntaxKind.CatchClause) ||
token.Parent.IsParentKind(SyntaxKind.SwitchSection))
{
return true;
}
}
if (token.Kind() == SyntaxKind.CloseBraceToken && if (token.Parent.IsKind(SyntaxKind.SwitchStatement))
token.Parent.IsKind(SyntaxKind.SwitchStatement)) {
{ return true;
return true; }
}
if (token.Kind() == SyntaxKind.ColonToken) return false;
{
if (token.Parent.IsKind(SyntaxKind.CaseSwitchLabel,
SyntaxKind.DefaultSwitchLabel,
SyntaxKind.CasePatternSwitchLabel,
SyntaxKind.LabeledStatement))
{
return true;
}
}
if (token.Kind() == SyntaxKind.DoKeyword && case SyntaxKind.ColonToken:
token.Parent.IsKind(SyntaxKind.DoStatement)) return token.Parent.IsKind(SyntaxKind.CaseSwitchLabel,
{ SyntaxKind.DefaultSwitchLabel,
return true; SyntaxKind.CasePatternSwitchLabel,
} SyntaxKind.LabeledStatement);
if (token.Kind() == SyntaxKind.CloseParenToken) case SyntaxKind.DoKeyword when token.Parent.IsKind(SyntaxKind.DoStatement):
{
var parent = token.Parent;
if (parent.IsKind(SyntaxKind.ForStatement) ||
parent.IsKind(SyntaxKind.ForEachStatement) ||
parent.IsKind(SyntaxKind.ForEachVariableStatement) ||
parent.IsKind(SyntaxKind.WhileStatement) ||
parent.IsKind(SyntaxKind.IfStatement) ||
parent.IsKind(SyntaxKind.LockStatement) ||
parent.IsKind(SyntaxKind.UsingStatement) ||
parent.IsKind(SyntaxKind.FixedStatement))
{
return true; return true;
}
}
if (token.Kind() == SyntaxKind.ElseKeyword) case SyntaxKind.CloseParenToken:
{ var parent = token.Parent;
return true; return parent.IsKind(SyntaxKind.ForStatement) ||
parent.IsKind(SyntaxKind.ForEachStatement) ||
parent.IsKind(SyntaxKind.ForEachVariableStatement) ||
parent.IsKind(SyntaxKind.WhileStatement) ||
parent.IsKind(SyntaxKind.IfStatement) ||
parent.IsKind(SyntaxKind.LockStatement) ||
parent.IsKind(SyntaxKind.UsingStatement) ||
parent.IsKind(SyntaxKind.FixedStatement);
case SyntaxKind.ElseKeyword:
return true;
} }
return false; return false;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册