1 instantiation of RecursivePatternSyntax
Microsoft.CodeAnalysis.CSharp (1)
Syntax.xml.Internal.Generated.cs (1)
8575internal override SyntaxNode CreateRed(SyntaxNode? parent, int position) => new CSharp.Syntax.RecursivePatternSyntax(this, parent, position);
98 references to RecursivePatternSyntax
Microsoft.CodeAnalysis.CSharp (21)
Binder\Binder_Patterns.cs (3)
177RecursivePatternSyntax p => BindRecursivePattern(p, inputType, permitDesignations, hasErrors, diagnostics), 958RecursivePatternSyntax node, 1197RecursivePatternSyntax node,
Binder\ExpressionVariableFinder.cs (1)
263public override void VisitRecursivePattern(RecursivePatternSyntax node)
Syntax.xml.Main.Generated.cs (6)
292public virtual TResult? VisitRecursivePattern(RecursivePatternSyntax node) => this.DefaultVisit(node); 1036public virtual void VisitRecursivePattern(RecursivePatternSyntax node) => this.DefaultVisit(node); 1779public override SyntaxNode? VisitRecursivePattern(RecursivePatternSyntax node) 3742public static RecursivePatternSyntax RecursivePattern(TypeSyntax? type, PositionalPatternClauseSyntax? positionalPatternClause, PropertyPatternClauseSyntax? propertyPatternClause, VariableDesignationSyntax? designation) 3744return (RecursivePatternSyntax)Syntax.InternalSyntax.SyntaxFactory.RecursivePattern(type == null ? null : (Syntax.InternalSyntax.TypeSyntax)type.Green, positionalPatternClause == null ? null : (Syntax.InternalSyntax.PositionalPatternClauseSyntax)positionalPatternClause.Green, propertyPatternClause == null ? null : (Syntax.InternalSyntax.PropertyPatternClauseSyntax)propertyPatternClause.Green, designation == null ? null : (Syntax.InternalSyntax.VariableDesignationSyntax)designation.Green).CreateRed(); 3748public static RecursivePatternSyntax RecursivePattern()
Syntax.xml.Syntax.Generated.cs (8)
5378public RecursivePatternSyntax Update(TypeSyntax? type, PositionalPatternClauseSyntax? positionalPatternClause, PropertyPatternClauseSyntax? propertyPatternClause, VariableDesignationSyntax? designation) 5382var newNode = SyntaxFactory.RecursivePattern(type, positionalPatternClause, propertyPatternClause, designation); 5390public RecursivePatternSyntax WithType(TypeSyntax? type) => Update(type, this.PositionalPatternClause, this.PropertyPatternClause, this.Designation); 5391public RecursivePatternSyntax WithPositionalPatternClause(PositionalPatternClauseSyntax? positionalPatternClause) => Update(this.Type, positionalPatternClause, this.PropertyPatternClause, this.Designation); 5392public RecursivePatternSyntax WithPropertyPatternClause(PropertyPatternClauseSyntax? propertyPatternClause) => Update(this.Type, this.PositionalPatternClause, propertyPatternClause, this.Designation); 5393public RecursivePatternSyntax WithDesignation(VariableDesignationSyntax? designation) => Update(this.Type, this.PositionalPatternClause, this.PropertyPatternClause, designation); 5395public RecursivePatternSyntax AddPositionalPatternClauseSubpatterns(params SubpatternSyntax[] items) 5400public RecursivePatternSyntax AddPropertyPatternClauseSubpatterns(params SubpatternSyntax[] items)
Syntax\SyntaxFacts.cs (1)
216return ((RecursivePatternSyntax)parent).Type == node;
Syntax\SyntaxNormalizer.cs (2)
514if (propPattern.Parent is RecursivePatternSyntax rps) 574if (posPattern.Parent is RecursivePatternSyntax rps)
Microsoft.CodeAnalysis.CSharp.CodeStyle (11)
src\Analyzers\CSharp\Analyzers\RemoveUnnecessaryDiscardDesignation\CSharpRemoveUnnecessaryDiscardDesignationDiagnosticAnalyzer.cs (1)
81else if (discard.Parent is RecursivePatternSyntax recursivePattern)
src\Analyzers\CSharp\Analyzers\RemoveUnusedParametersAndValues\CSharpRemoveUnusedParametersAndValuesDiagnosticAnalyzer.cs (1)
91case RecursivePatternSyntax recursivePattern:
src\Analyzers\CSharp\Analyzers\SimplifyPropertyPattern\SimplifyPropertyPatternHelpers.cs (1)
27Pattern: RecursivePatternSyntax
src\Analyzers\CSharp\Analyzers\UsePatternMatching\UsePatternMatchingHelpers.cs (1)
91Pattern: DeclarationPatternSyntax or VarPatternSyntax or RecursivePatternSyntax { Designation: not null }
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\ParenthesizedExpressionSyntaxExtensions.cs (1)
786case RecursivePatternSyntax:
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Formatting\Rules\IndentBlockFormattingRule.cs (1)
188if (propertyPatternClause.Parent is RecursivePatternSyntax { Parent: { } recursivePatternParent })
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Formatting\Rules\NewLineUserSettingFormattingRule.cs (1)
153var isFirstTokenOfSwitchArm = currentToken.Parent.IsParentKind(SyntaxKind.RecursivePattern, out RecursivePatternSyntax? recursivePattern)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Formatting\Rules\SuppressFormattingRule.cs (2)
51if (node is RecursivePatternSyntax recursivePattern) 109if (isPattern.Pattern is RecursivePatternSyntax recursivePattern2)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Services\SyntaxFacts\CSharpSyntaxFacts.cs (2)
1409var recursivePattern = (RecursivePatternSyntax)node;
Microsoft.CodeAnalysis.CSharp.CodeStyle.Fixes (13)
src\Analyzers\CSharp\CodeFixes\RemoveUnnecessaryDiscardDesignation\CSharpRemoveUnnecessaryDiscardDesignationCodeFixProvider.cs (2)
71case RecursivePatternSyntax recursivePattern: 75((RecursivePatternSyntax)current).WithDesignation(null)
src\Analyzers\CSharp\CodeFixes\RemoveUnusedParametersAndValues\CSharpRemoveUnusedValuesCodeFixProvider.cs (5)
108if (parent is RecursivePatternSyntax recursivePattern) 110var withoutDesignation = recursivePattern.WithDesignation(null); 146if (originalOldNode is RecursivePatternSyntax originalOldRecursivePattern && 147proposedReplacementNode is RecursivePatternSyntax proposedReplacementRecursivePattern && 150proposedReplacementNode = ((RecursivePatternSyntax)changedOldNode).WithDesignation(null)
src\Analyzers\CSharp\CodeFixes\UsePatternMatching\CSharpAsAndMemberAccessCodeFixProvider.cs (1)
75var recursivePattern = RecursivePattern(
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\Extensions\ContextQuery\SyntaxTreeExtensions.cs (1)
1500return patternSyntax is DeclarationPatternSyntax or RecursivePatternSyntax;
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\CSharpTypeInferenceService.TypeInferrer.cs (4)
172RecursivePatternSyntax propertyPattern => InferTypeInRecursivePattern(propertyPattern), 1446private IEnumerable<TypeInferenceInfo> InferTypeInRecursivePattern(RecursivePatternSyntax recursivePattern) 1535RecursivePatternSyntax recursivePattern => GetTypesForRecursivePattern(recursivePattern), 1548private IEnumerable<TypeInferenceInfo> GetTypesForRecursivePattern(RecursivePatternSyntax recursivePattern)
Microsoft.CodeAnalysis.CSharp.Features (23)
CodeRefactorings\UseRecursivePatterns\UseRecursivePatternsCodeRefactoringProvider.cs (9)
218(VarPatternSyntax var, RecursivePatternSyntax { Designation: null } recursive) 222(DeclarationPatternSyntax decl, RecursivePatternSyntax { Type: null, Designation: null } recursive) 226(RecursivePatternSyntax { Type: null } recursive, TypePatternSyntax type) 230(RecursivePatternSyntax recursive, RecursivePatternSyntax { Type: null, Designation: null } other) 253RecursivePatternSyntax p => p.AddPropertyPatternClauseSubpatterns(subpattern), 403private static RecursivePatternSyntax RecursivePattern(params ReadOnlySpan<SubpatternSyntax> subpatterns) 406private static RecursivePatternSyntax RecursivePattern(TypeSyntax? type, SubpatternSyntax subpattern, VariableDesignationSyntax? designation) 409private static RecursivePatternSyntax RecursivePattern(SubpatternSyntax subpattern)
Completion\CompletionProviders\CSharpSuggestionModeCompletionProvider.cs (1)
237return patternSyntax is DeclarationPatternSyntax or RecursivePatternSyntax;
Completion\KeywordRecommenders\WhenKeywordRecommender.cs (1)
82if (expressionOrPattern is RecursivePatternSyntax)
src\Analyzers\CSharp\Analyzers\RemoveUnnecessaryDiscardDesignation\CSharpRemoveUnnecessaryDiscardDesignationDiagnosticAnalyzer.cs (1)
81else if (discard.Parent is RecursivePatternSyntax recursivePattern)
src\Analyzers\CSharp\Analyzers\RemoveUnusedParametersAndValues\CSharpRemoveUnusedParametersAndValuesDiagnosticAnalyzer.cs (1)
91case RecursivePatternSyntax recursivePattern:
src\Analyzers\CSharp\Analyzers\SimplifyPropertyPattern\SimplifyPropertyPatternHelpers.cs (1)
27Pattern: RecursivePatternSyntax
src\Analyzers\CSharp\Analyzers\UsePatternMatching\UsePatternMatchingHelpers.cs (1)
91Pattern: DeclarationPatternSyntax or VarPatternSyntax or RecursivePatternSyntax { Designation: not null }
src\Analyzers\CSharp\CodeFixes\RemoveUnnecessaryDiscardDesignation\CSharpRemoveUnnecessaryDiscardDesignationCodeFixProvider.cs (2)
71case RecursivePatternSyntax recursivePattern: 75((RecursivePatternSyntax)current).WithDesignation(null)
src\Analyzers\CSharp\CodeFixes\RemoveUnusedParametersAndValues\CSharpRemoveUnusedValuesCodeFixProvider.cs (5)
108if (parent is RecursivePatternSyntax recursivePattern) 110var withoutDesignation = recursivePattern.WithDesignation(null); 146if (originalOldNode is RecursivePatternSyntax originalOldRecursivePattern && 147proposedReplacementNode is RecursivePatternSyntax proposedReplacementRecursivePattern && 150proposedReplacementNode = ((RecursivePatternSyntax)changedOldNode).WithDesignation(null)
src\Analyzers\CSharp\CodeFixes\UsePatternMatching\CSharpAsAndMemberAccessCodeFixProvider.cs (1)
75var recursivePattern = RecursivePattern(
Microsoft.CodeAnalysis.CSharp.Syntax.UnitTests (5)
Generated\Syntax.Test.xml.Generated.cs (5)
10636private static RecursivePatternSyntax GenerateRecursivePattern() 12184var node = GenerateRecursivePattern(); 12190var newNode = node.WithType(node.Type).WithPositionalPatternClause(node.PositionalPatternClause).WithPropertyPatternClause(node.PropertyPatternClause).WithDesignation(node.Designation); 16655var oldNode = GenerateRecursivePattern(); 16671var oldNode = GenerateRecursivePattern();
Microsoft.CodeAnalysis.CSharp.Workspaces (12)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\ParenthesizedExpressionSyntaxExtensions.cs (1)
786case RecursivePatternSyntax:
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Formatting\Rules\IndentBlockFormattingRule.cs (1)
188if (propertyPatternClause.Parent is RecursivePatternSyntax { Parent: { } recursivePatternParent })
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Formatting\Rules\NewLineUserSettingFormattingRule.cs (1)
153var isFirstTokenOfSwitchArm = currentToken.Parent.IsParentKind(SyntaxKind.RecursivePattern, out RecursivePatternSyntax? recursivePattern)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Formatting\Rules\SuppressFormattingRule.cs (2)
51if (node is RecursivePatternSyntax recursivePattern) 109if (isPattern.Pattern is RecursivePatternSyntax recursivePattern2)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Services\SyntaxFacts\CSharpSyntaxFacts.cs (2)
1409var recursivePattern = (RecursivePatternSyntax)node;
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\Extensions\ContextQuery\SyntaxTreeExtensions.cs (1)
1500return patternSyntax is DeclarationPatternSyntax or RecursivePatternSyntax;
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\CSharpTypeInferenceService.TypeInferrer.cs (4)
172RecursivePatternSyntax propertyPattern => InferTypeInRecursivePattern(propertyPattern), 1446private IEnumerable<TypeInferenceInfo> InferTypeInRecursivePattern(RecursivePatternSyntax recursivePattern) 1535RecursivePatternSyntax recursivePattern => GetTypesForRecursivePattern(recursivePattern), 1548private IEnumerable<TypeInferenceInfo> GetTypesForRecursivePattern(RecursivePatternSyntax recursivePattern)
Microsoft.CodeAnalysis.Test.Utilities (1)
Compilation\TestOperationVisitor.cs (1)
1501var designation = (operation.Syntax as CSharp.Syntax.RecursivePatternSyntax)?.Designation;
Roslyn.Diagnostics.CSharp.Analyzers (12)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\ParenthesizedExpressionSyntaxExtensions.cs (1)
786case RecursivePatternSyntax:
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Formatting\Rules\IndentBlockFormattingRule.cs (1)
188if (propertyPatternClause.Parent is RecursivePatternSyntax { Parent: { } recursivePatternParent })
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Formatting\Rules\NewLineUserSettingFormattingRule.cs (1)
153var isFirstTokenOfSwitchArm = currentToken.Parent.IsParentKind(SyntaxKind.RecursivePattern, out RecursivePatternSyntax? recursivePattern)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Formatting\Rules\SuppressFormattingRule.cs (2)
51if (node is RecursivePatternSyntax recursivePattern) 109if (isPattern.Pattern is RecursivePatternSyntax recursivePattern2)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Services\SyntaxFacts\CSharpSyntaxFacts.cs (2)
1409var recursivePattern = (RecursivePatternSyntax)node;
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\Extensions\ContextQuery\SyntaxTreeExtensions.cs (1)
1500return patternSyntax is DeclarationPatternSyntax or RecursivePatternSyntax;
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\CSharpTypeInferenceService.TypeInferrer.cs (4)
172RecursivePatternSyntax propertyPattern => InferTypeInRecursivePattern(propertyPattern), 1446private IEnumerable<TypeInferenceInfo> InferTypeInRecursivePattern(RecursivePatternSyntax recursivePattern) 1535RecursivePatternSyntax recursivePattern => GetTypesForRecursivePattern(recursivePattern), 1548private IEnumerable<TypeInferenceInfo> GetTypesForRecursivePattern(RecursivePatternSyntax recursivePattern)