diff --git a/src/NetAnalyzers/CSharp/Microsoft.NetCore.Analyzers/Performance/CSharpUseSearchValues.cs b/src/NetAnalyzers/CSharp/Microsoft.NetCore.Analyzers/Performance/CSharpUseSearchValues.cs index 5a39ce4b80..d5a044a67f 100644 --- a/src/NetAnalyzers/CSharp/Microsoft.NetCore.Analyzers/Performance/CSharpUseSearchValues.cs +++ b/src/NetAnalyzers/CSharp/Microsoft.NetCore.Analyzers/Performance/CSharpUseSearchValues.cs @@ -1,6 +1,7 @@ // Copyright (c) Microsoft. All Rights Reserved. Licensed under the MIT license. See License.txt in the project root for license information. using System.Collections.Generic; +using Analyzer.Utilities.Lightup; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.CSharp.Syntax; @@ -112,7 +113,7 @@ internal static bool IsConstantByteOrCharArrayCreationExpression(SemanticModel s return true; } } - else + else if (expression.IsKind(SyntaxKindEx.CollectionExpression)) { return semanticModel.GetOperation(expression) is { } operation && @@ -165,12 +166,9 @@ static bool TryGetByteOrCharLiteral(ExpressionSyntax? expression, out char value private static bool IsUtf8StringLiteralExpression(ExpressionSyntax expression, out int length) { - const SyntaxKind Utf8StringLiteralExpression = (SyntaxKind)8756; - const SyntaxKind Utf8StringLiteralToken = (SyntaxKind)8520; - - if (expression.IsKind(Utf8StringLiteralExpression) && + if (expression.IsKind(SyntaxKindEx.Utf8StringLiteralExpression) && expression is LiteralExpressionSyntax literal && - literal.Token.IsKind(Utf8StringLiteralToken) && + literal.Token.IsKind(SyntaxKindEx.Utf8StringLiteralToken) && literal.Token.Value is string value) { length = value.Length; diff --git a/src/Utilities/Compiler.CSharp/Analyzer.CSharp.Utilities.projitems b/src/Utilities/Compiler.CSharp/Analyzer.CSharp.Utilities.projitems index efd3b3e0e5..a60042f946 100644 --- a/src/Utilities/Compiler.CSharp/Analyzer.CSharp.Utilities.projitems +++ b/src/Utilities/Compiler.CSharp/Analyzer.CSharp.Utilities.projitems @@ -10,5 +10,6 @@ + \ No newline at end of file diff --git a/src/Utilities/Compiler.CSharp/Lightup/SyntaxKindEx.cs b/src/Utilities/Compiler.CSharp/Lightup/SyntaxKindEx.cs new file mode 100644 index 0000000000..fbe93dcdcc --- /dev/null +++ b/src/Utilities/Compiler.CSharp/Lightup/SyntaxKindEx.cs @@ -0,0 +1,14 @@ +// Copyright (c) Microsoft. All Rights Reserved. Licensed under the MIT license. See License.txt in the project root for license information. + +using Microsoft.CodeAnalysis.CSharp; + +namespace Analyzer.Utilities.Lightup +{ + internal static class SyntaxKindEx + { + // https://github.com/dotnet/roslyn/blob/main/src/Compilers/CSharp/Portable/Syntax/SyntaxKind.cs + public const SyntaxKind Utf8StringLiteralToken = (SyntaxKind)8520; + public const SyntaxKind Utf8StringLiteralExpression = (SyntaxKind)8756; + public const SyntaxKind CollectionExpression = (SyntaxKind)9076; + } +}