mirror of
https://github.com/github/codeql.git
synced 2025-12-17 09:13:20 +01:00
29 lines
1.2 KiB
C#
29 lines
1.2 KiB
C#
using Microsoft.CodeAnalysis;
|
|
using Microsoft.CodeAnalysis.CSharp;
|
|
using Microsoft.CodeAnalysis.CSharp.Syntax;
|
|
using Semmle.Extraction.Kinds;
|
|
|
|
namespace Semmle.Extraction.CSharp.Entities.Expressions
|
|
{
|
|
internal class RelationalPattern : Expression
|
|
{
|
|
public RelationalPattern(Context cx, RelationalPatternSyntax syntax, IExpressionParentEntity parent, int child) :
|
|
base(new ExpressionInfo(cx, null, cx.CreateLocation(syntax.GetLocation()), GetKind(syntax.OperatorToken), parent, child, isCompilerGenerated: false, null))
|
|
{
|
|
Expression.Create(cx, syntax.Expression, this, 0);
|
|
}
|
|
|
|
private static ExprKind GetKind(SyntaxToken operatorToken)
|
|
{
|
|
return operatorToken.Kind() switch
|
|
{
|
|
SyntaxKind.LessThanEqualsToken => ExprKind.LE_PATTERN,
|
|
SyntaxKind.GreaterThanEqualsToken => ExprKind.GE_PATTERN,
|
|
SyntaxKind.LessThanToken => ExprKind.LT_PATTERN,
|
|
SyntaxKind.GreaterThanToken => ExprKind.GT_PATTERN,
|
|
_ => throw new InternalError(operatorToken.Parent!, $"Relation pattern with operator token '{operatorToken.Kind()}' is not supported."),
|
|
};
|
|
}
|
|
}
|
|
}
|