From a25b049948a92a8ec7513a9ca7f0c124c779f28f Mon Sep 17 00:00:00 2001 From: Cyrus Najmabadi Date: Sat, 8 Feb 2020 20:25:40 -0800 Subject: [PATCH] Simplify by moving to extensions --- .../LanguageServices/CSharpSyntaxFactsService.cs | 6 ------ .../LanguageServices/CSharpSyntaxKindsService.cs | 1 + .../AbstractSyntaxFactsService.cs | 8 ++++++-- .../SyntaxFactsService/ISyntaxFactsService.cs | 2 -- .../ISyntaxFactsServiceExtensions.cs | 16 +++++++++++++--- .../SyntaxFactsService/ISyntaxKindsService.cs | 2 ++ .../VisualBasicSyntaxFactsService.vb | 8 -------- .../VisualBasicSyntaxKindsService.vb | 1 + 8 files changed, 23 insertions(+), 21 deletions(-) diff --git a/src/Workspaces/CSharp/Portable/LanguageServices/CSharpSyntaxFactsService.cs b/src/Workspaces/CSharp/Portable/LanguageServices/CSharpSyntaxFactsService.cs index 4dc5dd1f896..b76455b80f8 100644 --- a/src/Workspaces/CSharp/Portable/LanguageServices/CSharpSyntaxFactsService.cs +++ b/src/Workspaces/CSharp/Portable/LanguageServices/CSharpSyntaxFactsService.cs @@ -1529,12 +1529,6 @@ public SyntaxToken GetOperatorTokenOfPrefixUnaryExpression(SyntaxNode node) public SyntaxNode GetNextExecutableStatement(SyntaxNode statement) => ((StatementSyntax)statement).GetNextStatement(); - public override bool IsWhitespaceTrivia(SyntaxTrivia trivia) - => trivia.IsWhitespace(); - - public override bool IsEndOfLineTrivia(SyntaxTrivia trivia) - => trivia.IsEndOfLine(); - public override bool IsSingleLineCommentTrivia(SyntaxTrivia trivia) => trivia.IsSingleLineComment(); diff --git a/src/Workspaces/CSharp/Portable/LanguageServices/CSharpSyntaxKindsService.cs b/src/Workspaces/CSharp/Portable/LanguageServices/CSharpSyntaxKindsService.cs index 6699c547347..0147e711a54 100644 --- a/src/Workspaces/CSharp/Portable/LanguageServices/CSharpSyntaxKindsService.cs +++ b/src/Workspaces/CSharp/Portable/LanguageServices/CSharpSyntaxKindsService.cs @@ -24,6 +24,7 @@ public override TSyntaxKind Convert(int kind) public override int DisabledTextTrivia => (int)SyntaxKind.DisabledTextTrivia; public override int EndOfLineTrivia => (int)SyntaxKind.EndOfLineTrivia; public override int SkippedTokensTrivia => (int)SyntaxKind.SkippedTokensTrivia; + public override int WhitespaceTrivia => (int)SyntaxKind.WhitespaceTrivia; public override int CharacterLiteralToken => (int)SyntaxKind.CharacterLiteralToken; public override int DotToken => (int)SyntaxKind.DotToken; diff --git a/src/Workspaces/Core/Portable/LanguageServices/SyntaxFactsService/AbstractSyntaxFactsService.cs b/src/Workspaces/Core/Portable/LanguageServices/SyntaxFactsService/AbstractSyntaxFactsService.cs index 80901d7436d..0213b721bfb 100644 --- a/src/Workspaces/Core/Portable/LanguageServices/SyntaxFactsService/AbstractSyntaxFactsService.cs +++ b/src/Workspaces/Core/Portable/LanguageServices/SyntaxFactsService/AbstractSyntaxFactsService.cs @@ -158,8 +158,12 @@ protected AbstractSyntaxFactsService() Matcher.Repeat(singleBlankLine)); } - public abstract bool IsWhitespaceTrivia(SyntaxTrivia trivia); - public abstract bool IsEndOfLineTrivia(SyntaxTrivia trivia); + private bool IsWhitespaceTrivia(SyntaxTrivia trivia) + => SyntaxKinds.WhitespaceTrivia == trivia.RawKind; + + private bool IsEndOfLineTrivia(SyntaxTrivia trivia) + => SyntaxKinds.EndOfLineTrivia == trivia.RawKind; + public abstract bool IsSingleLineCommentTrivia(SyntaxTrivia trivia); public abstract bool IsMultiLineCommentTrivia(SyntaxTrivia trivia); public abstract bool IsSingleLineDocCommentTrivia(SyntaxTrivia trivia); diff --git a/src/Workspaces/Core/Portable/LanguageServices/SyntaxFactsService/ISyntaxFactsService.cs b/src/Workspaces/Core/Portable/LanguageServices/SyntaxFactsService/ISyntaxFactsService.cs index 7b26828bb33..7cd3fe75dca 100644 --- a/src/Workspaces/Core/Portable/LanguageServices/SyntaxFactsService/ISyntaxFactsService.cs +++ b/src/Workspaces/Core/Portable/LanguageServices/SyntaxFactsService/ISyntaxFactsService.cs @@ -201,8 +201,6 @@ internal interface ISyntaxFactsService : ILanguageService SyntaxNode GetDefaultOfParameter(SyntaxNode node); SyntaxNode GetParameterList(SyntaxNode node); - bool IsWhitespaceTrivia(SyntaxTrivia trivia); - bool IsEndOfLineTrivia(SyntaxTrivia trivia); bool IsDocumentationCommentExteriorTrivia(SyntaxTrivia trivia); void GetPartsOfElementAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode argumentList); diff --git a/src/Workspaces/Core/Portable/LanguageServices/SyntaxFactsService/ISyntaxFactsServiceExtensions.cs b/src/Workspaces/Core/Portable/LanguageServices/SyntaxFactsService/ISyntaxFactsServiceExtensions.cs index 946a30dedfd..435110f0729 100644 --- a/src/Workspaces/Core/Portable/LanguageServices/SyntaxFactsService/ISyntaxFactsServiceExtensions.cs +++ b/src/Workspaces/Core/Portable/LanguageServices/SyntaxFactsService/ISyntaxFactsServiceExtensions.cs @@ -187,6 +187,17 @@ public static void GetPartsOfMemberAccessExpression(this ISyntaxFactsService syn public static void GetPartsOfConditionalAccessExpression(this ISyntaxFactsService syntaxFacts, SyntaxNode node, out SyntaxNode expression, out SyntaxNode whenNotNull) => syntaxFacts.GetPartsOfConditionalAccessExpression(node, out expression, out _, out whenNotNull); + #region ISyntaxKinds forwarding methods + + public static bool IsEndOfLineTrivia(this ISyntaxFactsService syntaxFacts, SyntaxTrivia trivia) + => trivia.RawKind == syntaxFacts.SyntaxKinds.EndOfLineTrivia; + + public static bool IsWhitespaceTrivia(this ISyntaxFactsService syntaxFacts, SyntaxTrivia trivia) + => trivia.RawKind == syntaxFacts.SyntaxKinds.WhitespaceTrivia; + + public static bool IsSkippedTokensTrivia(this ISyntaxFactsService syntaxFacts, [NotNullWhen(true)] SyntaxNode? node) + => node?.RawKind == syntaxFacts.SyntaxKinds.SkippedTokensTrivia; + public static bool IsAwaitKeyword(this ISyntaxFactsService syntaxFacts, SyntaxToken token) => token.RawKind == syntaxFacts.SyntaxKinds.AwaitKeyword; @@ -208,9 +219,6 @@ public static bool IsInterpolatedStringTextToken(this ISyntaxFactsService syntax public static bool IsStringLiteral(this ISyntaxFactsService syntaxFacts, SyntaxToken token) => token.RawKind == syntaxFacts.SyntaxKinds.StringLiteralToken; - public static bool IsSkippedTokensTrivia(this ISyntaxFactsService syntaxFacts, [NotNullWhen(true)] SyntaxNode? node) - => node?.RawKind == syntaxFacts.SyntaxKinds.SkippedTokensTrivia; - public static bool IsGenericName(this ISyntaxFactsService syntaxFacts, [NotNullWhen(true)] SyntaxNode? node) => node?.RawKind == syntaxFacts.SyntaxKinds.GenericName; @@ -309,5 +317,7 @@ public static bool IsVariableDeclarator(this ISyntaxFactsService syntaxFacts, [N public static bool IsTypeArgumentList(this ISyntaxFactsService syntaxFacts, [NotNullWhen(true)] SyntaxNode node) => node?.RawKind == syntaxFacts.SyntaxKinds.TypeArgumentList; + + #endregion } } diff --git a/src/Workspaces/Core/Portable/LanguageServices/SyntaxFactsService/ISyntaxKindsService.cs b/src/Workspaces/Core/Portable/LanguageServices/SyntaxFactsService/ISyntaxKindsService.cs index d4602be1188..fc8a1137713 100644 --- a/src/Workspaces/Core/Portable/LanguageServices/SyntaxFactsService/ISyntaxKindsService.cs +++ b/src/Workspaces/Core/Portable/LanguageServices/SyntaxFactsService/ISyntaxKindsService.cs @@ -20,6 +20,7 @@ internal interface ISyntaxKindsService : ILanguageService int DisabledTextTrivia { get; } int EndOfLineTrivia { get; } int SkippedTokensTrivia { get; } + int WhitespaceTrivia { get; } int CharacterLiteralToken { get; } int DotToken { get; } @@ -98,6 +99,7 @@ internal abstract class AbstractSyntaxKindsService : ISyntaxKindsService public abstract int DisabledTextTrivia { get; } public abstract int EndOfLineTrivia { get; } public abstract int SkippedTokensTrivia { get; } + public abstract int WhitespaceTrivia { get; } public abstract int CharacterLiteralToken { get; } public abstract int DotToken { get; } diff --git a/src/Workspaces/VisualBasic/Portable/LanguageServices/VisualBasicSyntaxFactsService.vb b/src/Workspaces/VisualBasic/Portable/LanguageServices/VisualBasicSyntaxFactsService.vb index 19ccbb23984..62bbe944ed0 100644 --- a/src/Workspaces/VisualBasic/Portable/LanguageServices/VisualBasicSyntaxFactsService.vb +++ b/src/Workspaces/VisualBasic/Portable/LanguageServices/VisualBasicSyntaxFactsService.vb @@ -1567,14 +1567,6 @@ Namespace Microsoft.CodeAnalysis.VisualBasic Return DirectCast(statement, StatementSyntax).GetNextStatement()?.FirstAncestorOrSelf(Of ExecutableStatementSyntax) End Function - Public Overrides Function IsWhitespaceTrivia(trivia As SyntaxTrivia) As Boolean Implements ISyntaxFactsService.IsWhitespaceTrivia - Return trivia.IsWhitespace() - End Function - - Public Overrides Function IsEndOfLineTrivia(trivia As SyntaxTrivia) As Boolean Implements ISyntaxFactsService.IsEndOfLineTrivia - Return trivia.IsEndOfLine() - End Function - Public Overrides Function IsSingleLineCommentTrivia(trivia As SyntaxTrivia) As Boolean Return trivia.Kind = SyntaxKind.CommentTrivia End Function diff --git a/src/Workspaces/VisualBasic/Portable/LanguageServices/VisualBasicSyntaxKindsService.vb b/src/Workspaces/VisualBasic/Portable/LanguageServices/VisualBasicSyntaxKindsService.vb index cb35c002a48..1b94c81d024 100644 --- a/src/Workspaces/VisualBasic/Portable/LanguageServices/VisualBasicSyntaxKindsService.vb +++ b/src/Workspaces/VisualBasic/Portable/LanguageServices/VisualBasicSyntaxKindsService.vb @@ -22,6 +22,7 @@ Namespace Microsoft.CodeAnalysis.VisualBasic.LanguageServices Public Overrides ReadOnly Property DisabledTextTrivia As Integer = SyntaxKind.DisabledTextTrivia Public Overrides ReadOnly Property EndOfLineTrivia As Integer = SyntaxKind.EndOfLineTrivia Public Overrides ReadOnly Property SkippedTokensTrivia As Integer = SyntaxKind.SkippedTokensTrivia + Public Overrides ReadOnly Property WhitespaceTrivia As Integer = SyntaxKind.WhitespaceTrivia Public Overrides ReadOnly Property CharacterLiteralToken As Integer = SyntaxKind.CharacterLiteralToken Public Overrides ReadOnly Property DotToken As Integer = SyntaxKind.DotToken -- GitLab