1 instantiation of ConditionalAccessExpressionSyntax
Microsoft.CodeAnalysis.CSharp (1)
Syntax.xml.Internal.Generated.cs (1)
2363internal override SyntaxNode CreateRed(SyntaxNode? parent, int position) => new CSharp.Syntax.ConditionalAccessExpressionSyntax(this, parent, position);
170 references to ConditionalAccessExpressionSyntax
Microsoft.CodeAnalysis.CSharp (25)
Binder\Binder_AnonymousTypes.cs (1)
161expr = ((ConditionalAccessExpressionSyntax)expr).WhenNotNull;
Binder\Binder_Expressions.cs (7)
663return BindConditionalAccessExpression((ConditionalAccessExpressionSyntax)node, diagnostics); 9476if (expr.Syntax.Parent is ConditionalAccessExpressionSyntax conditional && 11322private BoundConditionalAccess BindConditionalAccessExpression(ConditionalAccessExpressionSyntax node, BindingDiagnosticBag diagnostics) 11430private BoundConditionalAccess GenerateBadConditionalAccessNodeError(ConditionalAccessExpressionSyntax node, BoundExpression receiver, BoundExpression access, BindingDiagnosticBag diagnostics) 11455private static CSharpSyntaxNode GetConditionalReceiverSyntax(ConditionalAccessExpressionSyntax node) 11472var conditionalAccessNode = SyntaxFactory.FindConditionalAccessNodeForBinding(binding); 11495private BoundExpression BindConditionalAccessReceiver(ConditionalAccessExpressionSyntax node, BindingDiagnosticBag diagnostics)
Syntax.xml.Main.Generated.cs (6)
97public virtual TResult? VisitConditionalAccessExpression(ConditionalAccessExpressionSyntax node) => this.DefaultVisit(node); 841public virtual void VisitConditionalAccessExpression(ConditionalAccessExpressionSyntax node) => this.DefaultVisit(node); 1584public override SyntaxNode? VisitConditionalAccessExpression(ConditionalAccessExpressionSyntax node) 2684public static ConditionalAccessExpressionSyntax ConditionalAccessExpression(ExpressionSyntax expression, SyntaxToken operatorToken, ExpressionSyntax whenNotNull) 2689return (ConditionalAccessExpressionSyntax)Syntax.InternalSyntax.SyntaxFactory.ConditionalAccessExpression((Syntax.InternalSyntax.ExpressionSyntax)expression.Green, (Syntax.InternalSyntax.SyntaxToken)operatorToken.Node!, (Syntax.InternalSyntax.ExpressionSyntax)whenNotNull.Green).CreateRed(); 2693public static ConditionalAccessExpressionSyntax ConditionalAccessExpression(ExpressionSyntax expression, ExpressionSyntax whenNotNull)
Syntax.xml.Syntax.Generated.cs (5)
1458public ConditionalAccessExpressionSyntax Update(ExpressionSyntax expression, SyntaxToken operatorToken, ExpressionSyntax whenNotNull) 1462var newNode = SyntaxFactory.ConditionalAccessExpression(expression, operatorToken, whenNotNull); 1470public ConditionalAccessExpressionSyntax WithExpression(ExpressionSyntax expression) => Update(expression, this.OperatorToken, this.WhenNotNull); 1471public ConditionalAccessExpressionSyntax WithOperatorToken(SyntaxToken operatorToken) => Update(this.Expression, operatorToken, this.WhenNotNull); 1472public ConditionalAccessExpressionSyntax WithWhenNotNull(ExpressionSyntax whenNotNull) => Update(this.Expression, this.OperatorToken, whenNotNull);
Syntax\SyntaxFactory.cs (3)
2252internal static ConditionalAccessExpressionSyntax? FindConditionalAccessNodeForBinding(CSharpSyntaxNode node) 2268var condAccess = (ConditionalAccessExpressionSyntax)currentNode;
Syntax\SyntaxFacts.cs (2)
423var access = (ConditionalAccessExpressionSyntax)syntax;
Syntax\SyntaxNodeExtensions.cs (1)
208input = ((ConditionalAccessExpressionSyntax)input).WhenNotNull;
Microsoft.CodeAnalysis.CSharp.Analyzers (2)
MetaAnalyzers\Fixers\CSharpPreferIsKindFix.cs (2)
47var conditionalAccess = (ConditionalAccessExpressionSyntax)binaryExpression.Left;
Microsoft.CodeAnalysis.CSharp.CodeStyle (27)
src\Analyzers\CSharp\Analyzers\UseNullPropagation\CSharpUseNullPropagationDiagnosticAnalyzer.cs (1)
24ConditionalAccessExpressionSyntax,
src\Analyzers\CSharp\Analyzers\UsePatternMatching\CSharpAsAndMemberAccessDiagnosticAnalyzer.cs (1)
66asExpression, out var conditionalAccessExpression, out var binaryExpression, out var isPatternExpression, out var requiredLanguageVersion))
src\Analyzers\CSharp\Analyzers\UsePatternMatching\UsePatternMatchingHelpers.cs (2)
16[NotNullWhen(true)] out ConditionalAccessExpressionSyntax? conditionalAccessExpression, 32Parent: ConditionalAccessExpressionSyntax parentConditionalAccess
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\CodeStyle\TypeStyle\TypeStyleHelper.cs (1)
198ConditionalAccessExpressionSyntax conditional => GetRightmostInvocationExpression(conditional.WhenNotNull),
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\ExpressionSyntaxExtensions.cs (3)
553var parentConditionalAccessExpression = (ConditionalAccessExpressionSyntax)expression.Parent; 675if (node is ConditionalAccessExpressionSyntax conditional)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\ParenthesizedExpressionSyntaxExtensions.cs (1)
287if (current is ConditionalAccessExpressionSyntax)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\SemanticModelExtensions.cs (1)
394if (current is ConditionalAccessExpressionSyntax conditionalAccess)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\SyntaxNodeExtensions.cs (11)
172public static ConditionalAccessExpressionSyntax? GetParentConditionalAccessExpression(this SyntaxNode? node) 203current.Parent is not ConditionalAccessExpressionSyntax) 235if (current?.Parent is ConditionalAccessExpressionSyntax conditional1 && 241if (current?.Parent is ConditionalAccessExpressionSyntax conditional2 && 247return current as ConditionalAccessExpressionSyntax; 253public static ConditionalAccessExpressionSyntax? GetRootConditionalAccessExpression(this SyntaxNode? node) 260var current = node.GetParentConditionalAccessExpression(); 261while (current?.Parent is ConditionalAccessExpressionSyntax conditional && 270public static ConditionalAccessExpressionSyntax? GetInnerMostConditionalAccessExpression(this SyntaxNode node) 272if (node is not ConditionalAccessExpressionSyntax result) 275while (result.WhenNotNull is ConditionalAccessExpressionSyntax syntax)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Services\SyntaxFacts\CSharpSyntaxFacts.cs (2)
1569var conditionalAccess = (ConditionalAccessExpressionSyntax)node;
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Utilities\SpeculationAnalyzer.cs (4)
321return ReplacementBreaksConditionalAccessExpression((ConditionalAccessExpressionSyntax)currentOriginalNode, (ConditionalAccessExpressionSyntax)currentReplacedNode); 684private bool ReplacementBreaksConditionalAccessExpression(ConditionalAccessExpressionSyntax conditionalAccessExpression, ConditionalAccessExpressionSyntax newConditionalAccessExpression)
Microsoft.CodeAnalysis.CSharp.CodeStyle.Fixes (7)
src\Analyzers\CSharp\CodeFixes\GenerateParameterizedMember\CSharpGenerateMethodService.cs (2)
90simpleName is { Parent: MemberBindingExpressionSyntax { Parent: InvocationExpressionSyntax { Parent: ConditionalAccessExpressionSyntax conditionalAccessExpression1 } invocation1 } memberBinding } && 112isInConditionalAccessExpression = invocationExpressionOpt.Parent is ConditionalAccessExpressionSyntax { WhenNotNull: var whenNotNull } &&
src\Analyzers\CSharp\CodeFixes\UseNullPropagation\CSharpUseNullPropagationCodeFixProvider.cs (1)
27ConditionalAccessExpressionSyntax,
src\Analyzers\CSharp\CodeFixes\UsePatternMatching\CSharpAsAndMemberAccessCodeFixProvider.cs (2)
56asExpression, out var conditionalAccessExpression, out var binaryExpression, out var isPatternExpression, out _)) 94static BaseExpressionColonSyntax CreateExpressionColon(ConditionalAccessExpressionSyntax conditionalAccessExpression)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\CSharpTypeInferenceService.TypeInferrer.cs (2)
153ConditionalAccessExpressionSyntax conditionalAccessExpression => InferTypeInConditionalAccessExpression(conditionalAccessExpression), 1163private IEnumerable<TypeInferenceInfo> InferTypeInConditionalAccessExpression(ConditionalAccessExpressionSyntax expression)
Microsoft.CodeAnalysis.CSharp.Features (21)
AddImport\CSharpAddImportFeatureService.cs (2)
54if (node is ConditionalAccessExpressionSyntax conditionalAccess) 82var conditionalAccessName = (((node.Parent as ConditionalAccessExpressionSyntax)?.WhenNotNull as InvocationExpressionSyntax)?.Expression as MemberBindingExpressionSyntax)?.Name;
CodeRefactorings\InlineMethod\CSharpInlineMethodRefactoringProvider.cs (1)
132return expressionSyntax is ConditionalAccessExpressionSyntax { WhenNotNull: var whenNotNull } &&
CodeRefactorings\UseRecursivePatterns\UseRecursivePatternsCodeRefactoringProvider.cs (1)
563case ConditionalAccessExpressionSyntax conditionalAccess:
GenerateMember\GenerateVariable\CSharpGenerateVariableService.cs (2)
101else if (identifierName.Parent.Parent is ConditionalAccessExpressionSyntax conditionalAccessExpression && 117isConditionalAccessExpression = identifierName.Parent.Parent is ConditionalAccessExpressionSyntax;
SignatureHelp\ElementAccessExpressionSignatureHelpProvider.cs (6)
116if (expression.Parent is ConditionalAccessExpressionSyntax conditional) 155if (expression.Parent is ConditionalAccessExpressionSyntax) 159var conditionalAccessExpression = ConditionalAccessExpression(expression, elementBinding); 368token.Parent.Parent.Parent is ConditionalAccessExpressionSyntax; 383var conditionalAccess = elementBindingExpression.FirstAncestorOrSelf<ConditionalAccessExpressionSyntax, ElementBindingExpressionSyntax>(
src\Analyzers\CSharp\Analyzers\UseNullPropagation\CSharpUseNullPropagationDiagnosticAnalyzer.cs (1)
24ConditionalAccessExpressionSyntax,
src\Analyzers\CSharp\Analyzers\UsePatternMatching\CSharpAsAndMemberAccessDiagnosticAnalyzer.cs (1)
66asExpression, out var conditionalAccessExpression, out var binaryExpression, out var isPatternExpression, out var requiredLanguageVersion))
src\Analyzers\CSharp\Analyzers\UsePatternMatching\UsePatternMatchingHelpers.cs (2)
16[NotNullWhen(true)] out ConditionalAccessExpressionSyntax? conditionalAccessExpression, 32Parent: ConditionalAccessExpressionSyntax parentConditionalAccess
src\Analyzers\CSharp\CodeFixes\GenerateParameterizedMember\CSharpGenerateMethodService.cs (2)
90simpleName is { Parent: MemberBindingExpressionSyntax { Parent: InvocationExpressionSyntax { Parent: ConditionalAccessExpressionSyntax conditionalAccessExpression1 } invocation1 } memberBinding } && 112isInConditionalAccessExpression = invocationExpressionOpt.Parent is ConditionalAccessExpressionSyntax { WhenNotNull: var whenNotNull } &&
src\Analyzers\CSharp\CodeFixes\UseNullPropagation\CSharpUseNullPropagationCodeFixProvider.cs (1)
27ConditionalAccessExpressionSyntax,
src\Analyzers\CSharp\CodeFixes\UsePatternMatching\CSharpAsAndMemberAccessCodeFixProvider.cs (2)
56asExpression, out var conditionalAccessExpression, out var binaryExpression, out var isPatternExpression, out _)) 94static BaseExpressionColonSyntax CreateExpressionColon(ConditionalAccessExpressionSyntax conditionalAccessExpression)
Microsoft.CodeAnalysis.CSharp.IOperation.UnitTests (2)
IOperation\IOperationTests_IConditionalAccessExpression.cs (2)
43VerifyOperationTreeAndDiagnosticsForTest<ConditionalAccessExpressionSyntax>(source, expectedOperationTree, expectedDiagnostics); 74VerifyOperationTreeAndDiagnosticsForTest<ConditionalAccessExpressionSyntax>(source, expectedOperationTree, expectedDiagnostics);
Microsoft.CodeAnalysis.CSharp.Semantic.UnitTests (12)
Semantics\ConditionalOperatorTests.cs (6)
1347var access = (ConditionalAccessExpressionSyntax)memberBinding.Parent!; 1402var access = (ConditionalAccessExpressionSyntax)invocation.Parent!; 1449var access = (ConditionalAccessExpressionSyntax)assignment.Parent!;
Semantics\FunctionPointerTests.cs (2)
3178var invocations = tree.GetRoot().DescendantNodes().OfType<ConditionalAccessExpressionSyntax>().ToList(); 3297var invocations = tree.GetRoot().DescendantNodes().OfType<ConditionalAccessExpressionSyntax>().ToList();
Semantics\LookupTests.cs (2)
2044var node = tree.GetRoot().DescendantNodes().OfType<ConditionalAccessExpressionSyntax>().Single().Expression; 2074var node = tree.GetRoot().DescendantNodes().OfType<ConditionalAccessExpressionSyntax>().Single().Expression;
Semantics\SemanticErrorTests.cs (2)
24278var node = tree.GetRoot().DescendantNodes().OfType<ConditionalAccessExpressionSyntax>().First();
Microsoft.CodeAnalysis.CSharp.Symbol.UnitTests (6)
Symbols\Source\NullablePublicAPITests.cs (6)
1362var conditionalAccessExpression = root.DescendantNodes().OfType<ConditionalAccessExpressionSyntax>().Single(); 1514var conditionalAccessExpression = root.DescendantNodes().OfType<ConditionalAccessExpressionSyntax>().Single(); 1570var conditionalAccessExpression = root.DescendantNodes().OfType<ConditionalAccessExpressionSyntax>().Single();
Microsoft.CodeAnalysis.CSharp.Syntax.UnitTests (12)
Generated\Syntax.Test.xml.Generated.cs (5)
10441private static ConditionalAccessExpressionSyntax GenerateConditionalAccessExpression() 11404var node = GenerateConditionalAccessExpression(); 11409var newNode = node.WithExpression(node.Expression).WithOperatorToken(node.OperatorToken).WithWhenNotNull(node.WhenNotNull); 14965var oldNode = GenerateConditionalAccessExpression(); 14981var oldNode = GenerateConditionalAccessExpression();
Parsing\ExpressionParsingTests.cs (7)
737var e = (ConditionalAccessExpressionSyntax)expr; 770var e = (ConditionalAccessExpressionSyntax)expr; 776e = e.WhenNotNull as ConditionalAccessExpressionSyntax; 782e = e.WhenNotNull as ConditionalAccessExpressionSyntax; 788e = e.WhenNotNull as ConditionalAccessExpressionSyntax;
Microsoft.CodeAnalysis.CSharp.Test.Utilities (1)
CompilationTestUtils.cs (1)
553case ExpressionSyntax expr when expr.Parent is ConditionalAccessExpressionSyntax cond && cond.WhenNotNull == node:
Microsoft.CodeAnalysis.CSharp.Workspaces (25)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\CodeStyle\TypeStyle\TypeStyleHelper.cs (1)
198ConditionalAccessExpressionSyntax conditional => GetRightmostInvocationExpression(conditional.WhenNotNull),
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\ExpressionSyntaxExtensions.cs (3)
553var parentConditionalAccessExpression = (ConditionalAccessExpressionSyntax)expression.Parent; 675if (node is ConditionalAccessExpressionSyntax conditional)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\ParenthesizedExpressionSyntaxExtensions.cs (1)
287if (current is ConditionalAccessExpressionSyntax)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\SemanticModelExtensions.cs (1)
394if (current is ConditionalAccessExpressionSyntax conditionalAccess)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\SyntaxNodeExtensions.cs (11)
172public static ConditionalAccessExpressionSyntax? GetParentConditionalAccessExpression(this SyntaxNode? node) 203current.Parent is not ConditionalAccessExpressionSyntax) 235if (current?.Parent is ConditionalAccessExpressionSyntax conditional1 && 241if (current?.Parent is ConditionalAccessExpressionSyntax conditional2 && 247return current as ConditionalAccessExpressionSyntax; 253public static ConditionalAccessExpressionSyntax? GetRootConditionalAccessExpression(this SyntaxNode? node) 260var current = node.GetParentConditionalAccessExpression(); 261while (current?.Parent is ConditionalAccessExpressionSyntax conditional && 270public static ConditionalAccessExpressionSyntax? GetInnerMostConditionalAccessExpression(this SyntaxNode node) 272if (node is not ConditionalAccessExpressionSyntax result) 275while (result.WhenNotNull is ConditionalAccessExpressionSyntax syntax)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Services\SyntaxFacts\CSharpSyntaxFacts.cs (2)
1569var conditionalAccess = (ConditionalAccessExpressionSyntax)node;
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Utilities\SpeculationAnalyzer.cs (4)
321return ReplacementBreaksConditionalAccessExpression((ConditionalAccessExpressionSyntax)currentOriginalNode, (ConditionalAccessExpressionSyntax)currentReplacedNode); 684private bool ReplacementBreaksConditionalAccessExpression(ConditionalAccessExpressionSyntax conditionalAccessExpression, ConditionalAccessExpressionSyntax newConditionalAccessExpression)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\CSharpTypeInferenceService.TypeInferrer.cs (2)
153ConditionalAccessExpressionSyntax conditionalAccessExpression => InferTypeInConditionalAccessExpression(conditionalAccessExpression), 1163private IEnumerable<TypeInferenceInfo> InferTypeInConditionalAccessExpression(ConditionalAccessExpressionSyntax expression)
Microsoft.CodeAnalysis.Test.Utilities (2)
Compilation\ControlFlowGraphVerifier.cs (2)
836if (syntax.Parent is CSharp.Syntax.ConditionalAccessExpressionSyntax access && 1049if (syntax.Parent is CSharp.Syntax.ConditionalAccessExpressionSyntax access &&
Microsoft.Maui.Controls.BindingSourceGen (3)
BindingSourceGenerator.cs (1)
252 ConditionalAccessExpressionSyntax conditionalAccess => conditionalAccess.WhenNotNull,
PathParser.cs (2)
26 ConditionalAccessExpressionSyntax conditionalAccess => HandleConditionalAccessExpression(conditionalAccess), 86 private Result<List<IPathPart>> HandleConditionalAccessExpression(ConditionalAccessExpressionSyntax conditionalAccess)
Roslyn.Diagnostics.CSharp.Analyzers (25)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\CodeStyle\TypeStyle\TypeStyleHelper.cs (1)
198ConditionalAccessExpressionSyntax conditional => GetRightmostInvocationExpression(conditional.WhenNotNull),
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\ExpressionSyntaxExtensions.cs (3)
553var parentConditionalAccessExpression = (ConditionalAccessExpressionSyntax)expression.Parent; 675if (node is ConditionalAccessExpressionSyntax conditional)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\ParenthesizedExpressionSyntaxExtensions.cs (1)
287if (current is ConditionalAccessExpressionSyntax)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\SemanticModelExtensions.cs (1)
394if (current is ConditionalAccessExpressionSyntax conditionalAccess)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\SyntaxNodeExtensions.cs (11)
172public static ConditionalAccessExpressionSyntax? GetParentConditionalAccessExpression(this SyntaxNode? node) 203current.Parent is not ConditionalAccessExpressionSyntax) 235if (current?.Parent is ConditionalAccessExpressionSyntax conditional1 && 241if (current?.Parent is ConditionalAccessExpressionSyntax conditional2 && 247return current as ConditionalAccessExpressionSyntax; 253public static ConditionalAccessExpressionSyntax? GetRootConditionalAccessExpression(this SyntaxNode? node) 260var current = node.GetParentConditionalAccessExpression(); 261while (current?.Parent is ConditionalAccessExpressionSyntax conditional && 270public static ConditionalAccessExpressionSyntax? GetInnerMostConditionalAccessExpression(this SyntaxNode node) 272if (node is not ConditionalAccessExpressionSyntax result) 275while (result.WhenNotNull is ConditionalAccessExpressionSyntax syntax)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Services\SyntaxFacts\CSharpSyntaxFacts.cs (2)
1569var conditionalAccess = (ConditionalAccessExpressionSyntax)node;
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Utilities\SpeculationAnalyzer.cs (4)
321return ReplacementBreaksConditionalAccessExpression((ConditionalAccessExpressionSyntax)currentOriginalNode, (ConditionalAccessExpressionSyntax)currentReplacedNode); 684private bool ReplacementBreaksConditionalAccessExpression(ConditionalAccessExpressionSyntax conditionalAccessExpression, ConditionalAccessExpressionSyntax newConditionalAccessExpression)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\CSharpTypeInferenceService.TypeInferrer.cs (2)
153ConditionalAccessExpressionSyntax conditionalAccessExpression => InferTypeInConditionalAccessExpression(conditionalAccessExpression), 1163private IEnumerable<TypeInferenceInfo> InferTypeInConditionalAccessExpression(ConditionalAccessExpressionSyntax expression)