From 00d18ac397f35f8e278b4226209453f77b15e65f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0imon=20Kon=C3=AD=C4=8Dek?= Date: Mon, 22 Oct 2018 11:57:26 +0200 Subject: [PATCH] Adding ISyntaxFactsService.IsExecutableStatement --- ...ractMergeConsecutiveIfStatementsCodeRefactoringProvider.cs | 2 +- ...SplitIntoConsecutiveIfStatementsCodeRefactoringProvider.cs | 2 +- .../Portable/LanguageServices/CSharpSyntaxFactsService.cs | 3 +++ .../SyntaxFactsService/ISyntaxFactsService.cs | 1 + .../LanguageServices/VisualBasicSyntaxFactsService.vb | 4 ++++ 5 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/Features/Core/Portable/SplitOrMergeIfStatements/Consecutive/AbstractMergeConsecutiveIfStatementsCodeRefactoringProvider.cs b/src/Features/Core/Portable/SplitOrMergeIfStatements/Consecutive/AbstractMergeConsecutiveIfStatementsCodeRefactoringProvider.cs index f148c483761..568392c7ab1 100644 --- a/src/Features/Core/Portable/SplitOrMergeIfStatements/Consecutive/AbstractMergeConsecutiveIfStatementsCodeRefactoringProvider.cs +++ b/src/Features/Core/Portable/SplitOrMergeIfStatements/Consecutive/AbstractMergeConsecutiveIfStatementsCodeRefactoringProvider.cs @@ -104,7 +104,7 @@ private bool CanBeMergedWithParent(ISyntaxFactsService syntaxFacts, SyntaxNode i private static SyntaxNode GetPreviousStatement(ISyntaxFactsService syntaxFacts, SyntaxNode statement) { - if (!syntaxFacts.IsStatement(statement) || + if (!syntaxFacts.IsExecutableStatement(statement) || !syntaxFacts.IsExecutableBlock(statement.Parent)) { return null; diff --git a/src/Features/Core/Portable/SplitOrMergeIfStatements/Consecutive/AbstractSplitIntoConsecutiveIfStatementsCodeRefactoringProvider.cs b/src/Features/Core/Portable/SplitOrMergeIfStatements/Consecutive/AbstractSplitIntoConsecutiveIfStatementsCodeRefactoringProvider.cs index 400eb12d22c..7c80f3a43be 100644 --- a/src/Features/Core/Portable/SplitOrMergeIfStatements/Consecutive/AbstractSplitIntoConsecutiveIfStatementsCodeRefactoringProvider.cs +++ b/src/Features/Core/Portable/SplitOrMergeIfStatements/Consecutive/AbstractSplitIntoConsecutiveIfStatementsCodeRefactoringProvider.cs @@ -65,7 +65,7 @@ await CanBeSeparateStatementsAsync(document, syntaxFacts, currentIfStatement, ca return false; } - if (!syntaxFacts.IsStatement(ifStatement) || + if (!syntaxFacts.IsExecutableStatement(ifStatement) || !syntaxFacts.IsExecutableBlock(ifStatement.Parent)) { return false; diff --git a/src/Workspaces/CSharp/Portable/LanguageServices/CSharpSyntaxFactsService.cs b/src/Workspaces/CSharp/Portable/LanguageServices/CSharpSyntaxFactsService.cs index 3e4be1a2a14..b4bd5aaff00 100644 --- a/src/Workspaces/CSharp/Portable/LanguageServices/CSharpSyntaxFactsService.cs +++ b/src/Workspaces/CSharp/Portable/LanguageServices/CSharpSyntaxFactsService.cs @@ -280,6 +280,9 @@ public bool IsReturnStatement(SyntaxNode node) public bool IsStatement(SyntaxNode node) => node is StatementSyntax; + public bool IsExecutableStatement(SyntaxNode node) + => node is StatementSyntax; + public bool IsParameter(SyntaxNode node) => node is ParameterSyntax; diff --git a/src/Workspaces/Core/Portable/LanguageServices/SyntaxFactsService/ISyntaxFactsService.cs b/src/Workspaces/Core/Portable/LanguageServices/SyntaxFactsService/ISyntaxFactsService.cs index f732e3b2379..14870c38821 100644 --- a/src/Workspaces/Core/Portable/LanguageServices/SyntaxFactsService/ISyntaxFactsService.cs +++ b/src/Workspaces/Core/Portable/LanguageServices/SyntaxFactsService/ISyntaxFactsService.cs @@ -219,6 +219,7 @@ internal interface ISyntaxFactsService : ILanguageService bool IsLockStatement(SyntaxNode node); bool IsUsingStatement(SyntaxNode node); bool IsStatement(SyntaxNode node); + bool IsExecutableStatement(SyntaxNode node); bool IsParameter(SyntaxNode node); bool IsVariableDeclarator(SyntaxNode node); bool IsDeconstructionAssignment(SyntaxNode node); diff --git a/src/Workspaces/VisualBasic/Portable/LanguageServices/VisualBasicSyntaxFactsService.vb b/src/Workspaces/VisualBasic/Portable/LanguageServices/VisualBasicSyntaxFactsService.vb index 66145b7ed0d..5ae23156967 100644 --- a/src/Workspaces/VisualBasic/Portable/LanguageServices/VisualBasicSyntaxFactsService.vb +++ b/src/Workspaces/VisualBasic/Portable/LanguageServices/VisualBasicSyntaxFactsService.vb @@ -274,6 +274,10 @@ Namespace Microsoft.CodeAnalysis.VisualBasic Return TypeOf node Is StatementSyntax End Function + Public Function IsExecutableStatement(node As SyntaxNode) As Boolean Implements ISyntaxFactsService.IsExecutableStatement + Return TypeOf node Is ExecutableStatementSyntax + End Function + Public Function IsParameter(node As SyntaxNode) As Boolean Implements ISyntaxFactsService.IsParameter Return TypeOf node Is ParameterSyntax End Function -- GitLab