6 types derived from AnalyzedPattern
Microsoft.CodeAnalysis.Features (6)
29 references to AnalyzedPattern
Microsoft.CodeAnalysis.CSharp.Features (10)
ConvertIfToSwitch\CSharpConvertIfToSwitchCodeRefactoringProvider.Rewriting.cs (10)
93if (label.Pattern is AnalyzedPattern.Constant constant)
96if (label.Pattern is AnalyzedPattern.Source { PatternSyntax: ConstantPatternSyntax { Expression: LiteralExpressionSyntax literal } })
99if (feature.HasFlag(Feature.TypePattern) && label.Pattern is AnalyzedPattern.Type { IsExpressionSyntax: BinaryExpressionSyntax { Right: IdentifierNameSyntax name } })
110private static PatternSyntax AsPatternSyntax(AnalyzedPattern pattern, Feature feature)
113AnalyzedPattern.And p => BinaryPattern(SyntaxKind.AndPattern, AsPatternSyntax(p.LeftPattern, feature).Parenthesize(), AsPatternSyntax(p.RightPattern, feature).Parenthesize()),
114AnalyzedPattern.Constant p => ConstantPattern(p.ExpressionSyntax),
115AnalyzedPattern.Source p => p.PatternSyntax,
116AnalyzedPattern.Type p when feature.HasFlag(Feature.TypePattern) => TypePattern((TypeSyntax)p.IsExpressionSyntax.Right),
117AnalyzedPattern.Type p => DeclarationPattern((TypeSyntax)p.IsExpressionSyntax.Right, DiscardDesignation()),
118AnalyzedPattern.Relational p => RelationalPattern(Token(s_operatorMap[p.OperatorKind]), p.Value),
Microsoft.CodeAnalysis.Features (19)
ConvertIfToSwitch\AbstractConvertIfToSwitchCodeRefactoringProvider.Analyzer.cs (13)
232var pattern = ParsePattern(operation, guards);
278private AnalyzedPattern? ParsePattern(IOperation operation, ArrayBuilder<TExpressionSyntax> guards)
284return new AnalyzedPattern.Range(lower, higher);
290=> new AnalyzedPattern.Constant(left),
292=> new AnalyzedPattern.Constant(right),
309var leftPattern = ParsePattern(op.LeftOperand, guards);
316var rightPattern = ParsePattern(op.RightOperand, guards);
318return new AnalyzedPattern.And(leftPattern, rightPattern);
335return new AnalyzedPattern.Type(node);
339return new AnalyzedPattern.Source(pattern);
348private AnalyzedPattern? ParseRelationalPattern(IBinaryOperation op)
353=> new AnalyzedPattern.Relational(Flip(op.OperatorKind), left),
355=> new AnalyzedPattern.Relational(op.OperatorKind, right),