Binder\Binder_Statements.cs (13)
145result = new BoundBadStatement(node, ImmutableArray<BoundNode>.Empty, hasErrors: true);
517return new BoundBadStatement(node, ImmutableArray.Create<BoundNode>(expression), true);
532ImmutableArray<BoundNode> childNodes;
536childNodes = ImmutableArray.Create<BoundNode>(value);
540childNodes = ImmutableArray<BoundNode>.Empty;
2804return new BoundBadStatement(node, ImmutableArray<BoundNode>.Empty, hasErrors: true);
2815return new BoundBadStatement(node, ImmutableArray<BoundNode>.Empty, hasErrors: true);
3518public virtual BoundNode BindMethodBody(CSharpSyntaxNode syntax, BindingDiagnosticBag diagnostics)
3547private BoundNode BindSimpleProgram(CompilationUnitSyntax compilationUnit, BindingDiagnosticBag diagnostics)
3552private BoundNode BindSimpleProgramCompilationUnit(CompilationUnitSyntax compilationUnit, BindingDiagnosticBag diagnostics)
3576private BoundNode BindPrimaryConstructorBody(TypeDeclarationSyntax typeDecl, BindingDiagnosticBag diagnostics)
3611private BoundNode BindConstructorBody(ConstructorDeclarationSyntax constructor, BindingDiagnosticBag diagnostics)
3924private BoundNode BindMethodBody(CSharpSyntaxNode declaration, BlockSyntax blockBody, ArrowExpressionClauseSyntax expressionBody, BindingDiagnosticBag diagnostics)
BoundTree\Expression.cs (60)
29ImmutableArray<BoundNode> IBoundInvalidNode.InvalidNodeChildren => CSharpOperationFactory.CreateInvalidChildrenFromArgumentsExpression(receiverOpt: null, Arguments, InitializerExpressionOpt);
34ImmutableArray<BoundNode> IBoundInvalidNode.InvalidNodeChildren => StaticCast<BoundNode>.From(Arguments);
39ImmutableArray<BoundNode> IBoundInvalidNode.InvalidNodeChildren => CSharpOperationFactory.CreateInvalidChildrenFromArgumentsExpression(ImplicitReceiverOpt, Arguments);
44protected override ImmutableArray<BoundNode?> Children => ImmutableArray.Create<BoundNode?>(this.Left, this.Right);
49protected override ImmutableArray<BoundNode?> Children => StaticCast<BoundNode?>.From(this.ChildBoundNodes);
51ImmutableArray<BoundNode> IBoundInvalidNode.InvalidNodeChildren => StaticCast<BoundNode>.From(this.ChildBoundNodes);
56ImmutableArray<BoundNode> IBoundInvalidNode.InvalidNodeChildren => CSharpOperationFactory.CreateInvalidChildrenFromArgumentsExpression(ReceiverOpt, Arguments);
61ImmutableArray<BoundNode> IBoundInvalidNode.InvalidNodeChildren => CSharpOperationFactory.CreateInvalidChildrenFromArgumentsExpression(ReceiverOpt, Arguments);
66protected override ImmutableArray<BoundNode?> Children => StaticCast<BoundNode?>.From(this.Arguments.Insert(0, this.Receiver));
71protected override ImmutableArray<BoundNode?> Children => StaticCast<BoundNode?>.From(this.Arguments);
76protected override ImmutableArray<BoundNode?> Children => StaticCast<BoundNode?>.From(this.ConstructorArguments.AddRange(StaticCast<BoundExpression>.From(this.NamedArguments)));
81protected override ImmutableArray<BoundNode?> Children => ImmutableArray.Create<BoundNode?>(this.Value);
86protected override ImmutableArray<BoundNode?> Children => StaticCast<BoundNode?>.From(this.Arguments);
91protected override ImmutableArray<BoundNode?> Children => ImmutableArray.Create<BoundNode?>(this.Argument);
96protected override ImmutableArray<BoundNode?> Children => ImmutableArray.Create<BoundNode?>(this.Expression, this.Index);
101protected override ImmutableArray<BoundNode?> Children => ImmutableArray.Create<BoundNode?>(this.Operand);
106protected override ImmutableArray<BoundNode?> Children => ImmutableArray.Create<BoundNode?>(this.Receiver);
111protected override ImmutableArray<BoundNode?> Children => ImmutableArray.Create<BoundNode?>(this.Operand);
116protected override ImmutableArray<BoundNode?> Children => ImmutableArray.Create<BoundNode?>(this.Operand);
121protected override ImmutableArray<BoundNode?> Children => StaticCast<BoundNode?>.From(this.Arguments.Insert(0, this.Expression));
126protected override ImmutableArray<BoundNode?> Children => ImmutableArray.Create<BoundNode?>(this.Expression);
139protected override ImmutableArray<BoundNode?> Children => StaticCast<BoundNode?>.From(GetChildInitializers(this.InitializerOpt).Insert(0, this.Count));
144protected override ImmutableArray<BoundNode?> Children => StaticCast<BoundNode?>.From(GetChildInitializers(this.InitializerOpt).Insert(0, this.Count));
149protected override ImmutableArray<BoundNode?> Children => StaticCast<BoundNode?>.From(this.Arguments.AddRange(BoundObjectCreationExpression.GetChildInitializers(this.InitializerExpressionOpt)));
154protected override ImmutableArray<BoundNode?> Children => ImmutableArray.Create<BoundNode?>(this.Expression);
159protected override ImmutableArray<BoundNode?> Children => ImmutableArray.Create<BoundNode?>(this.ReceiverOpt);
164protected override ImmutableArray<BoundNode?> Children => StaticCast<BoundNode?>.From(this.SideEffects.Add(this.Value));
169protected override ImmutableArray<BoundNode?> Children =>
170(this.Kind == BoundKind.StatementList || this.Kind == BoundKind.Scope) ? StaticCast<BoundNode?>.From(this.Statements) : ImmutableArray<BoundNode?>.Empty;
175protected override ImmutableArray<BoundNode?> Children => ImmutableArray.Create<BoundNode?>(this.Expression);
180protected override ImmutableArray<BoundNode?> Children => ImmutableArray.Create<BoundNode?>(this.Receiver, Argument);
185ImmutableArray<BoundNode> IBoundInvalidNode.InvalidNodeChildren => CSharpOperationFactory.CreateInvalidChildrenFromArgumentsExpression(receiverOpt: this.InvokedExpression, Arguments);
186protected override ImmutableArray<BoundNode?> Children => StaticCast<BoundNode?>.From(((IBoundInvalidNode)this).InvalidNodeChildren);
Compilation\CSharpSemanticModel.cs (20)
722BoundNode boundNode = GetSpeculativelyBoundExpression(position, expression, bindingOption, out binder, out crefSymbols); //calls CheckAndAdjustPosition
752BoundNode boundNode = GetSpeculativelyBoundAttribute(position, attribute, out binder); //calls CheckAndAdjustPosition
1052BoundNode boundNode = GetSpeculativelyBoundExpression(position, expression, bindingOption, out _, out crefSymbols); //calls CheckAndAdjustPosition
1199BoundNode boundNode = GetSpeculativelyBoundExpression(position, nameSyntax, bindingOption, out binder, out crefSymbols); //calls CheckAndAdjustPosition
1889BoundNode lowestBoundNode,
1890BoundNode highestBoundNode,
1891BoundNode boundNodeForSyntacticParent,
2037BoundNode lowestBoundNode,
2038BoundNode highestBoundNode,
2039BoundNode boundNodeForSyntacticParent)
2148conversion = BoundNode.GetConversion(initializer.ElementPointerConversion, initializer.ElementPointerPlaceholder);
2272BoundNode lowestBoundNode,
2273BoundNode boundNodeForSyntacticParent,
2294BoundNode lowestBoundNode,
2386internal virtual BoundNode Bind(Binder binder, CSharpSyntaxNode node, BindingDiagnosticBag diagnostics)
3336BoundNode boundNodeForSyntacticParent,
3951BoundNode boundNodeForSyntacticParent,
4002BoundNode lowestBoundNode,
4219BoundNode boundNodeForSyntacticParent,
4365BoundNode boundNodeForSyntacticParent,
Compilation\MemberSemanticModel.cs (61)
31private readonly Dictionary<SyntaxNode, ImmutableArray<BoundNode>> _guardedBoundNodeMap = new Dictionary<SyntaxNode, ImmutableArray<BoundNode>>();
503internal virtual BoundNode GetBoundRoot()
511internal BoundNode GetUpperBoundNode(CSharpSyntaxNode node, bool promoteToBindable = false)
539internal BoundNode GetLowerBoundNode(CSharpSyntaxNode node)
556private static BoundNode GetLowerBoundNode(ImmutableArray<BoundNode> boundNodes)
912var bound = GetLowerBoundNode(node);
984BoundNode.GetConversion(boundForEach.ElementConversion, boundForEach.ElementPlaceholder),
985BoundNode.GetConversion(enumeratorInfoOpt.CurrentConversion, enumeratorInfoOpt.CurrentPlaceholder));
1133var bound = this.GetLowerBoundNode(declaratorSyntax);
1178BoundNode highestBoundNode = GetBoundRoot();
1203BoundNode lowestBoundNode;
1204BoundNode highestBoundNode;
1205BoundNode boundParent;
1215BoundNode lowestBoundNode;
1216BoundNode highestBoundNode;
1217BoundNode boundParent;
1226BoundNode lowestBoundNode;
1227BoundNode highestBoundNode;
1228BoundNode boundParent;
1238BoundNode lowestBoundNode;
1239BoundNode highestBoundNode;
1240BoundNode boundParent;
1292private void GetBoundNodes(CSharpSyntaxNode node, out CSharpSyntaxNode bindableNode, out BoundNode lowestBoundNode, out BoundNode highestBoundNode, out BoundNode boundParent)
1423private ImmutableArray<BoundNode> GuardedGetBoundNodesFromMap(CSharpSyntaxNode node)
1426ImmutableArray<BoundNode> result;
1427return _guardedBoundNodeMap.TryGetValue(node, out result) ? result : default(ImmutableArray<BoundNode>);
1433internal ImmutableArray<BoundNode> TestOnlyTryGetBoundNodesFromMap(CSharpSyntaxNode node)
1435ImmutableArray<BoundNode> result;
1436return _guardedBoundNodeMap.TryGetValue(node, out result) ? result : default(ImmutableArray<BoundNode>);
1441private ImmutableArray<BoundNode> GuardedAddBoundTreeAndGetBoundNodeFromMap(CSharpSyntaxNode syntax, BoundNode bound)
1460ImmutableArray<BoundNode> result;
1461return _guardedBoundNodeMap.TryGetValue(syntax, out result) ? result : default(ImmutableArray<BoundNode>);
1464protected void UnguardedAddBoundTreeForStandaloneSyntax(SyntaxNode syntax, BoundNode bound, NullableWalker.SnapshotManager manager = null, ImmutableDictionary<Symbol, Symbol> remappedSymbols = null)
1472protected void GuardedAddBoundTreeForStandaloneSyntax(SyntaxNode syntax, BoundNode bound, NullableWalker.SnapshotManager manager = null, ImmutableDictionary<Symbol, Symbol> remappedSymbols = null)
1615BoundNode boundInnerLambdaOrQuery = GetBoundLambdaOrQuery(innerLambdaOrQuery);
1619private BoundNode GetBoundLambdaOrQuery(CSharpSyntaxNode lambdaOrQuery)
1623ImmutableArray<BoundNode> nodes;
1642BoundNode boundEnclosingLambdaOrQuery = null;
1683BoundNode boundOuterExpression = this.Bind(incrementalBinder, nodeToBind, BindingDiagnosticBag.Discarded);
1715BoundNode boundOuterExpression = this.Bind(incrementalBinder, lambdaOrQuery, BindingDiagnosticBag.Discarded);
1729private Binder GetEnclosingBinderInLambdaOrQuery(int position, CSharpSyntaxNode node, CSharpSyntaxNode innerLambdaOrQuery, ref BoundNode boundInnerLambdaOrQuery)
1941BoundNode boundRoot = bind(bindableRoot, out binder);
1963BoundNode bind(CSharpSyntaxNode root, out Binder binder)
2017protected abstract BoundNode RewriteNullableBoundNodesWithSnapshots(
2018BoundNode boundRoot,
2031protected abstract void AnalyzeBoundNodeNullability(BoundNode boundRoot, Binder binder, DiagnosticBag diagnostics, bool createSnapshots);
2040internal ImmutableArray<BoundNode> GetBoundNodes(CSharpSyntaxNode node)
2064ImmutableArray<BoundNode> results;
2087BoundNode boundStatement = this.Bind(incrementalBinder, nodeToBind, BindingDiagnosticBag.Discarded);
2116var boundNode = this.Bind(incrementalBinder, node, BindingDiagnosticBag.Discarded);
2131return ImmutableArray<BoundNode>.Empty;
2394BoundNode boundNode = TryGetBoundNodeFromMap(node);
2429private BoundNode TryGetBoundNodeFromMap(CSharpSyntaxNode node)
2433ImmutableArray<BoundNode> boundNodes = _semanticModel.GuardedGetBoundNodesFromMap(node);
2445public override BoundNode BindMethodBody(CSharpSyntaxNode node, BindingDiagnosticBag diagnostics)
2447BoundNode boundNode = TryGetBoundNodeFromMap(node);
FlowAnalysis\AbstractFlowPass.cs (189)
66protected readonly BoundNode methodMainNode;
172protected readonly BoundNode firstInRegion, lastInRegion;
185BoundNode node,
186BoundNode firstInRegion = null,
187BoundNode lastInRegion = null,
260private void EnterRegionIfNeeded(BoundNode node)
277private void LeaveRegionIfNeeded(BoundNode node)
341public override BoundNode Visit(BoundNode node)
346protected BoundNode VisitAlways(BoundNode node)
348BoundNode result = null;
362private BoundNode VisitWithStackGuard(BoundNode node)
395public readonly BoundNode Branch;
404public PendingBranch(BoundNode branch, TLocalState state, LabelSymbol label, bool isConditionalState = false, TLocalState stateWhenTrue = default, TLocalState stateWhenFalse = default)
755protected virtual void NoteBranch(PendingBranch pending, BoundNode gotoStmt, BoundStatement target)
888public override BoundNode DefaultVisit(BoundNode node)
895public override BoundNode VisitAttribute(BoundAttribute node)
901public override BoundNode VisitThrowExpression(BoundThrowExpression node)
908public override BoundNode VisitPassByCopy(BoundPassByCopy node)
914public override BoundNode VisitIsPatternExpression(BoundIsPatternExpression node)
1058public override BoundNode VisitConstantPattern(BoundConstantPattern node)
1064public override BoundNode VisitTupleLiteral(BoundTupleLiteral node)
1069public override BoundNode VisitConvertedTupleLiteral(BoundConvertedTupleLiteral node)
1074private BoundNode VisitTupleExpression(BoundTupleExpression node)
1080public override BoundNode VisitTupleBinaryOperator(BoundTupleBinaryOperator node)
1087public override BoundNode VisitDynamicObjectCreationExpression(BoundDynamicObjectCreationExpression node)
1094public override BoundNode VisitDynamicIndexerAccess(BoundDynamicIndexerAccess node)
1101public override BoundNode VisitDynamicMemberAccess(BoundDynamicMemberAccess node)
1107public override BoundNode VisitDynamicInvocation(BoundDynamicInvocation node)
1115protected BoundNode? VisitInterpolatedStringBase(BoundInterpolatedStringBase node, InterpolatedStringHandlerData? data)
1146public override BoundNode VisitInterpolatedString(BoundInterpolatedString node)
1151public override BoundNode VisitUnconvertedInterpolatedString(BoundUnconvertedInterpolatedString node)
1157public override BoundNode VisitStringInsert(BoundStringInsert node)
1173public override BoundNode VisitInterpolatedStringHandlerPlaceholder(BoundInterpolatedStringHandlerPlaceholder node)
1178public override BoundNode VisitInterpolatedStringArgumentPlaceholder(BoundInterpolatedStringArgumentPlaceholder node)
1183public override BoundNode VisitArgList(BoundArgList node)
1190public override BoundNode VisitArgListOperator(BoundArgListOperator node)
1197public override BoundNode VisitRefTypeOperator(BoundRefTypeOperator node)
1203public override BoundNode VisitMakeRefOperator(BoundMakeRefOperator node)
1212public override BoundNode VisitRefValueOperator(BoundRefValueOperator node)
1218public override BoundNode VisitGlobalStatementInitializer(BoundGlobalStatementInitializer node)
1224public override BoundNode VisitLambda(BoundLambda node) => null;
1226public override BoundNode VisitLocal(BoundLocal node)
1232public override BoundNode VisitLocalDeclaration(BoundLocalDeclaration node)
1249public override BoundNode VisitBlock(BoundBlock node)
1263public override BoundNode VisitScope(BoundScope node)
1269public override BoundNode VisitExpressionStatement(BoundExpressionStatement node)
1275public override BoundNode VisitCall(BoundCall node)
1393public override BoundNode VisitIndexerAccess(BoundIndexerAccess node)
1406public override BoundNode VisitImplicitIndexerAccess(BoundImplicitIndexerAccess node)
1419public override BoundNode VisitEventAssignmentOperator(BoundEventAssignmentOperator node)
1478public override BoundNode VisitBadExpression(BoundBadExpression node)
1488public override BoundNode VisitBadStatement(BoundBadStatement node)
1490foreach (var child in node.ChildBoundNodes)
1505public override BoundNode VisitArrayInitialization(BoundArrayInitialization node)
1515public override BoundNode VisitDelegateCreationExpression(BoundDelegateCreationExpression node)
1545public override BoundNode VisitTypeExpression(BoundTypeExpression node)
1550public override BoundNode VisitTypeOrValueExpression(BoundTypeOrValueExpression node)
1558public override BoundNode VisitLiteral(BoundLiteral node)
1564public override BoundNode VisitUtf8String(BoundUtf8String node)
1586public override BoundNode VisitLocalId(BoundLocalId node)
1591public override BoundNode VisitParameterId(BoundParameterId node)
1596public override BoundNode VisitMethodDefIndex(BoundMethodDefIndex node)
1601public override BoundNode VisitStateMachineInstanceId(BoundStateMachineInstanceId node)
1606public override BoundNode VisitMaximumMethodDefIndex(BoundMaximumMethodDefIndex node)
1611public override BoundNode VisitModuleVersionId(BoundModuleVersionId node)
1616public override BoundNode VisitModuleVersionIdString(BoundModuleVersionIdString node)
1621public override BoundNode VisitInstrumentationPayloadRoot(BoundInstrumentationPayloadRoot node)
1626public override BoundNode VisitSourceDocumentIndex(BoundSourceDocumentIndex node)
1631public override BoundNode VisitConversion(BoundConversion node)
1656public override BoundNode VisitIfStatement(BoundIfStatement node)
1675public override BoundNode VisitTryStatement(BoundTryStatement node)
1870public override BoundNode VisitExtractedFinallyBlock(BoundExtractedFinallyBlock node)
1875public override BoundNode VisitReturnStatement(BoundReturnStatement node)
1877var result = VisitReturnStatementNoAdjust(node);
1883protected virtual BoundNode VisitReturnStatementNoAdjust(BoundReturnStatement node)
1896public override BoundNode VisitThisReference(BoundThisReference node)
1901public override BoundNode VisitPreviousSubmissionReference(BoundPreviousSubmissionReference node)
1906public override BoundNode VisitHostObjectMemberReference(BoundHostObjectMemberReference node)
1911public override BoundNode VisitParameter(BoundParameter node)
1920public override BoundNode VisitObjectCreationExpression(BoundObjectCreationExpression node)
1928public override BoundNode VisitNewT(BoundNewT node)
1934public override BoundNode VisitNoPiaObjectCreationExpression(BoundNoPiaObjectCreationExpression node)
1959public override BoundNode VisitAssignmentOperator(BoundAssignmentOperator node)
1993public override BoundNode VisitDeconstructionAssignmentOperator(BoundDeconstructionAssignmentOperator node)
2000public sealed override BoundNode VisitOutDeconstructVarPendingInference(OutDeconstructVarPendingInference node)
2006public override BoundNode VisitCompoundAssignmentOperator(BoundCompoundAssignmentOperator node)
2051public override BoundNode VisitFieldAccess(BoundFieldAccess node)
2078public override BoundNode VisitFieldInfo(BoundFieldInfo node)
2083public override BoundNode VisitMethodInfo(BoundMethodInfo node)
2088public override BoundNode VisitPropertyAccess(BoundPropertyAccess node)
2118public override BoundNode VisitEventAccess(BoundEventAccess node)
2124public override BoundNode VisitRangeVariable(BoundRangeVariable node)
2129public override BoundNode VisitQueryClause(BoundQueryClause node)
2135private BoundNode VisitMultipleLocalDeclarationsBase(BoundMultipleLocalDeclarationsBase node)
2145public override BoundNode VisitMultipleLocalDeclarations(BoundMultipleLocalDeclarations node)
2150public override BoundNode VisitUsingLocalDeclarations(BoundUsingLocalDeclarations node)
2159public override BoundNode VisitWhileStatement(BoundWhileStatement node)
2174public override BoundNode VisitWithExpression(BoundWithExpression node)
2181public override BoundNode VisitArrayAccess(BoundArrayAccess node)
2192public override BoundNode VisitBinaryOperator(BoundBinaryOperator node)
2211public override BoundNode VisitUserDefinedConditionalLogicalOperator(BoundUserDefinedConditionalLogicalOperator node)
2562public override BoundNode VisitUnaryOperator(BoundUnaryOperator node)
2578public override BoundNode VisitRangeExpression(BoundRangeExpression node)
2593public override BoundNode VisitFromEndIndexExpression(BoundFromEndIndexExpression node)
2599public override BoundNode VisitAwaitExpression(BoundAwaitExpression node)
2606public override BoundNode VisitIncrementOperator(BoundIncrementOperator node)
2630public override BoundNode VisitArrayCreation(BoundArrayCreation node)
2641public override BoundNode VisitForStatement(BoundForStatement node)
2674public override BoundNode VisitForEachStatement(BoundForEachStatement node)
2703public override BoundNode VisitAsOperator(BoundAsOperator node)
2709public override BoundNode VisitIsOperator(BoundIsOperator node)
2724public override BoundNode VisitMethodGroup(BoundMethodGroup node)
2737public override BoundNode? VisitNullCoalescingOperator(BoundNullCoalescingOperator node)
2913public override BoundNode? VisitConditionalAccess(BoundConditionalAccess node)
2921public override BoundNode VisitLoweredConditionalAccess(BoundLoweredConditionalAccess node)
2940public override BoundNode VisitConditionalReceiver(BoundConditionalReceiver node)
2945public override BoundNode VisitComplexConditionalReceiver(BoundComplexConditionalReceiver node)
2959public override BoundNode VisitSequence(BoundSequence node)
2974public override BoundNode VisitSequencePoint(BoundSequencePoint node)
2984public override BoundNode VisitSequencePointExpression(BoundSequencePointExpression node)
2990public override BoundNode VisitSequencePointWithSpan(BoundSequencePointWithSpan node)
3000public override BoundNode VisitStatementList(BoundStatementList node)
3005private BoundNode VisitStatementListWorker(BoundStatementList node)
3015public override BoundNode VisitTypeOrInstanceInitializers(BoundTypeOrInstanceInitializers node)
3020public override BoundNode VisitUnboundLambda(UnboundLambda node)
3026public override BoundNode VisitBreakStatement(BoundBreakStatement node)
3034public override BoundNode VisitContinueStatement(BoundContinueStatement node)
3042public override BoundNode VisitUnconvertedConditionalOperator(BoundUnconvertedConditionalOperator node)
3047public override BoundNode VisitConditionalOperator(BoundConditionalOperator node)
3054protected virtual BoundNode? VisitConditionalOperatorCore(
3118public override BoundNode VisitBaseReference(BoundBaseReference node)
3123public override BoundNode VisitDoStatement(BoundDoStatement node)
3137public override BoundNode VisitGotoStatement(BoundGotoStatement node)
3160public override BoundNode VisitLabelStatement(BoundLabelStatement node)
3166public override BoundNode VisitLabeledStatement(BoundLabeledStatement node)
3173public override BoundNode VisitLockStatement(BoundLockStatement node)
3180public override BoundNode VisitNoOpStatement(BoundNoOpStatement node)
3185public override BoundNode VisitNamespaceExpression(BoundNamespaceExpression node)
3190public override BoundNode VisitUsingStatement(BoundUsingStatement node)
3213public override BoundNode VisitFixedStatement(BoundFixedStatement node)
3220public override BoundNode VisitFixedLocalCollectionInitializer(BoundFixedLocalCollectionInitializer node)
3226public override BoundNode VisitThrowStatement(BoundThrowStatement node)
3234public override BoundNode VisitYieldBreakStatement(BoundYieldBreakStatement node)
3242public override BoundNode VisitYieldReturnStatement(BoundYieldReturnStatement node)
3249public override BoundNode VisitDefaultLiteral(BoundDefaultLiteral node)
3254public override BoundNode VisitDefaultExpression(BoundDefaultExpression node)
3259public override BoundNode VisitUnconvertedObjectCreationExpression(BoundUnconvertedObjectCreationExpression node)
3264public override BoundNode VisitTypeOfOperator(BoundTypeOfOperator node)
3270public override BoundNode VisitNameOfOperator(BoundNameOfOperator node)
3279public override BoundNode VisitAddressOfOperator(BoundAddressOfOperator node)
3299public override BoundNode VisitPointerIndirectionOperator(BoundPointerIndirectionOperator node)
3305public override BoundNode VisitPointerElementAccess(BoundPointerElementAccess node)
3312public override BoundNode VisitSizeOfOperator(BoundSizeOfOperator node)
3317private BoundNode VisitStackAllocArrayCreationBase(BoundStackAllocArrayCreationBase node)
3324public override BoundNode VisitStackAllocArrayCreation(BoundStackAllocArrayCreation node)
3329public override BoundNode VisitConvertedStackAllocExpression(BoundConvertedStackAllocExpression node)
3334public override BoundNode VisitAnonymousObjectCreationExpression(BoundAnonymousObjectCreationExpression node)
3342public override BoundNode VisitArrayLength(BoundArrayLength node)
3348public override BoundNode VisitConditionalGoto(BoundConditionalGoto node)
3366public override BoundNode VisitObjectInitializerExpression(BoundObjectInitializerExpression node)
3371public override BoundNode VisitCollectionInitializerExpression(BoundCollectionInitializerExpression node)
3376private BoundNode VisitObjectOrCollectionInitializerExpression(ImmutableArray<BoundExpression> initializers)
3386public override BoundNode VisitObjectInitializerMember(BoundObjectInitializerMember node)
3405public override BoundNode VisitDynamicObjectInitializerMember(BoundDynamicObjectInitializerMember node)
3410public override BoundNode VisitCollectionElementInitializer(BoundCollectionElementInitializer node)
3433public override BoundNode VisitDynamicCollectionElementInitializer(BoundDynamicCollectionElementInitializer node)
3439public override BoundNode VisitImplicitReceiver(BoundImplicitReceiver node)
3444public override BoundNode VisitFieldEqualsValue(BoundFieldEqualsValue node)
3450public override BoundNode VisitPropertyEqualsValue(BoundPropertyEqualsValue node)
3456public override BoundNode VisitParameterEqualsValue(BoundParameterEqualsValue node)
3462public override BoundNode VisitDeconstructValuePlaceholder(BoundDeconstructValuePlaceholder node)
3467public override BoundNode VisitObjectOrCollectionValuePlaceholder(BoundObjectOrCollectionValuePlaceholder node)
3472public override BoundNode VisitAwaitableValuePlaceholder(BoundAwaitableValuePlaceholder node)
3477public sealed override BoundNode VisitOutVariablePendingInference(OutVariablePendingInference node)
3482public sealed override BoundNode VisitDeconstructionVariablePendingInference(DeconstructionVariablePendingInference node)
3487public override BoundNode VisitDiscardExpression(BoundDiscardExpression node)
3498public override BoundNode VisitConstructorMethodBody(BoundConstructorMethodBody node)
3505public override BoundNode VisitNonConstructorMethodBody(BoundNonConstructorMethodBody node)
3511public override BoundNode VisitNullCoalescingAssignmentOperator(BoundNullCoalescingAssignmentOperator node)
3544public override BoundNode VisitReadOnlySpanFromArray(BoundReadOnlySpanFromArray node)
3550public override BoundNode VisitFunctionPointerInvocation(BoundFunctionPointerInvocation node)
3557public override BoundNode VisitUnconvertedAddressOfOperator(BoundUnconvertedAddressOfOperator node)
3582public override BoundNode VisitSavePreviousSequencePoint(BoundSavePreviousSequencePoint node)
3587public override BoundNode VisitRestorePreviousSequencePoint(BoundRestorePreviousSequencePoint node)
3592public override BoundNode VisitStepThroughSequencePoint(BoundStepThroughSequencePoint node)
FlowAnalysis\DataFlowsInWalker.cs (8)
27private DataFlowsInWalker(CSharpCompilation compilation, Symbol member, BoundNode node, BoundNode firstInRegion, BoundNode lastInRegion,
33internal static HashSet<Symbol> Analyze(CSharpCompilation compilation, Symbol member, BoundNode node, BoundNode firstInRegion, BoundNode lastInRegion,
81BoundNode gotoStmt,
93public override BoundNode VisitRangeVariable(BoundRangeVariable node)
FlowAnalysis\DataFlowsOutWalker.cs (10)
27private DataFlowsOutWalker(CSharpCompilation compilation, Symbol member, BoundNode node, BoundNode firstInRegion, BoundNode lastInRegion, HashSet<Symbol> unassignedVariables, ImmutableArray<ISymbol> dataFlowsIn)
33internal static HashSet<Symbol> Analyze(CSharpCompilation compilation, Symbol member, BoundNode node, BoundNode firstInRegion, BoundNode lastInRegion, HashSet<Symbol> unassignedVariables, ImmutableArray<ISymbol> dataFlowsIn)
114private Symbol GetNodeSymbol(BoundNode node)
201protected override void AssignImpl(BoundNode node, BoundExpression value, bool isRef, bool written, bool read)
237private ParameterSymbol Param(BoundNode node)
247public override BoundNode VisitQueryClause(BoundQueryClause node)
FlowAnalysis\DefiniteAssignment.cs (52)
170BoundNode node,
195BoundNode node,
217BoundNode node,
218BoundNode firstInRegion,
219BoundNode lastInRegion,
236BoundNode node)
422var pendingBranch = pending.Branch;
523BoundNode node,
762private void NoteRead(BoundNode fieldOrEventAccess)
765BoundNode n = fieldOrEventAccess;
1449protected void Assign(BoundNode node, BoundExpression value, bool isRef = false, bool read = true)
1462protected virtual void AssignImpl(BoundNode node, BoundExpression value, bool isRef, bool written, bool read)
1972public override BoundNode VisitBlock(BoundBlock node)
2052public override BoundNode VisitSwitchStatement(BoundSwitchStatement node)
2055var result = base.VisitSwitchStatement(node);
2067public override BoundNode VisitForStatement(BoundForStatement node)
2071var result = base.VisitForStatement(node);
2077public override BoundNode VisitDoStatement(BoundDoStatement node)
2080var result = base.VisitDoStatement(node);
2085public override BoundNode VisitWhileStatement(BoundWhileStatement node)
2088var result = base.VisitWhileStatement(node);
2096public override BoundNode VisitUsingStatement(BoundUsingStatement node)
2100var result = base.VisitUsingStatement(node);
2117public override BoundNode VisitFixedStatement(BoundFixedStatement node)
2123public override BoundNode VisitSequence(BoundSequence node)
2126var result = base.VisitSequence(node);
2187public override BoundNode VisitLocal(BoundLocal node)
2218public override BoundNode VisitLocalDeclaration(BoundLocalDeclaration node)
2229var result = base.VisitLocalDeclaration(node);
2237public override BoundNode VisitLocalId(BoundLocalId node)
2240public override BoundNode VisitParameterId(BoundParameterId node)
2243public override BoundNode VisitStateMachineInstanceId(BoundStateMachineInstanceId node)
2246public override BoundNode VisitMethodGroup(BoundMethodGroup node)
2258public override BoundNode VisitLambda(BoundLambda node)
2304public override BoundNode VisitThisReference(BoundThisReference node)
2311public override BoundNode VisitParameter(BoundParameter node)
2325public override BoundNode VisitAssignmentOperator(BoundAssignmentOperator node)
2332public override BoundNode VisitDeconstructionAssignmentOperator(BoundDeconstructionAssignmentOperator node)
2339public override BoundNode VisitIncrementOperator(BoundIncrementOperator node)
2346public override BoundNode VisitCompoundAssignmentOperator(BoundCompoundAssignmentOperator node)
2355public override BoundNode VisitFixedLocalCollectionInitializer(BoundFixedLocalCollectionInitializer node)
2373public override BoundNode VisitAddressOfOperator(BoundAddressOfOperator node)
2503public override BoundNode VisitBaseReference(BoundBaseReference node)
2527public override BoundNode VisitFieldAccess(BoundFieldAccess node)
2529var result = base.VisitFieldAccess(node);
2553public override BoundNode VisitPropertyAccess(BoundPropertyAccess node)
2555var result = base.VisitPropertyAccess(node);
2576public override BoundNode VisitEventAccess(BoundEventAccess node)
2578var result = base.VisitEventAccess(node);
2607public override BoundNode VisitObjectInitializerMember(BoundObjectInitializerMember node)
2609var result = base.VisitObjectInitializerMember(node);
2619public override BoundNode VisitDynamicObjectInitializerMember(BoundDynamicObjectInitializerMember node)
FlowAnalysis\EntryPointsWalker.cs (7)
23internal static IEnumerable<LabeledStatementSyntax> Analyze(CSharpCompilation compilation, Symbol member, BoundNode node, BoundNode firstInRegion, BoundNode lastInRegion, out bool? succeeded)
48private EntryPointsWalker(CSharpCompilation compilation, Symbol member, BoundNode node, BoundNode firstInRegion, BoundNode lastInRegion)
58protected override void NoteBranch(PendingBranch pending, BoundNode gotoStmt, BoundStatement targetStmt)
FlowAnalysis\NullableWalker.cs (193)
421BoundNode node,
1289BoundNode node,
1316BoundNode node,
1355internal static VariableState? GetAfterInitializersState(CSharpCompilation compilation, Symbol? symbol, BoundNode constructorBody)
1373internal static VariableState? GetAfterInitializersState(CSharpCompilation compilation, MethodSymbol method, BoundNode nodeToAnalyze, BoundNode? constructorBody, BindingDiagnosticBag diagnostics)
1411private static MethodSymbol? GetConstructorThisOrBaseSymbol(BoundNode? constructorBody)
1426BoundNode node,
1438internal static BoundNode AnalyzeAndRewrite(
1441BoundNode node,
1457BoundNode node,
1513internal static BoundNode AnalyzeAndRewriteSpeculation(
1515BoundNode node,
1560private static BoundNode Rewrite(ImmutableDictionary<BoundExpression, (NullabilityInfo, TypeSymbol?)> updatedNullabilities, SnapshotManager? snapshotManager, BoundNode node, ref ImmutableDictionary<Symbol, Symbol>? remappedSymbols)
1570var rewrittenNode = rewriter.Visit(node);
1594BoundNode node,
1672BoundNode node,
1777private void TakeIncrementalSnapshot(BoundNode? node)
1783private void SetUpdatedSymbol(BoundNode node, Symbol originalSymbol, Symbol updatedSymbol)
2101private void VisitAndUnsplitAll<T>(ImmutableArray<T> nodes) where T : BoundNode
2115private void VisitWithoutDiagnostics(BoundNode? node)
2765public override BoundNode? VisitParameterEqualsValue(BoundParameterEqualsValue equalsValue)
2800public sealed override BoundNode? VisitReturnStatement(BoundReturnStatement node)
2935public override BoundNode? VisitLocal(BoundLocal node)
2966public override BoundNode? VisitBlock(BoundBlock node)
3017public override BoundNode? VisitLocalFunctionStatement(BoundLocalFunctionStatement node)
3172public override BoundNode? VisitDoStatement(BoundDoStatement node)
3178public override BoundNode? VisitWhileStatement(BoundWhileStatement node)
3184public override BoundNode? VisitWithExpression(BoundWithExpression withExpr)
3206public override BoundNode? VisitForStatement(BoundForStatement node)
3213public override BoundNode? VisitForEachStatement(BoundForEachStatement node)
3219public override BoundNode? VisitUsingStatement(BoundUsingStatement node)
3226public override BoundNode? VisitUsingLocalDeclarations(BoundUsingLocalDeclarations node)
3232public override BoundNode? VisitFixedStatement(BoundFixedStatement node)
3238public override BoundNode? VisitConstructorMethodBody(BoundConstructorMethodBody node)
3265public override BoundNode? VisitLocalDeclaration(BoundLocalDeclaration node)
3406public override BoundNode? Visit(BoundNode? node)
3411private BoundNode VisitLValue(BoundNode node)
3416private BoundNode Visit(BoundNode? node, bool expressionIsRead)
3425var result = base.Visit(node);
3438public override BoundNode? VisitObjectCreationExpression(BoundObjectCreationExpression node)
3444public override BoundNode? VisitUnconvertedObjectCreationExpression(BoundUnconvertedObjectCreationExpression node)
4077public override BoundNode? VisitAnonymousObjectCreationExpression(BoundAnonymousObjectCreationExpression node)
4138public override BoundNode? VisitArrayCreation(BoundArrayCreation node)
4297BoundNode node,
4374public override BoundNode? VisitArrayAccess(BoundArrayAccess node)
5098public override BoundNode? VisitNullCoalescingAssignmentOperator(BoundNullCoalescingAssignmentOperator node)
5120public override BoundNode? VisitNullCoalescingOperator(BoundNullCoalescingOperator node)
5403public override BoundNode? VisitConditionalAccess(BoundConditionalAccess node)
5409protected override BoundNode? VisitConditionalOperatorCore(
5667public override BoundNode? VisitConditionalReceiver(BoundConditionalReceiver node)
5678public override BoundNode? VisitCall(BoundCall node)
6070private static bool HasImplicitTypeArguments(BoundNode node)
6138BoundNode node,
6158BoundNode node,
6182BoundNode node,
6338BoundNode node,
7420public override BoundNode? VisitConversion(BoundConversion node)
7549public override BoundNode? VisitTupleLiteral(BoundTupleLiteral node)
7555public override BoundNode? VisitConvertedTupleLiteral(BoundConvertedTupleLiteral node)
7772public override BoundNode? VisitTupleBinaryOperator(BoundTupleBinaryOperator node)
8693public override BoundNode? VisitDelegateCreationExpression(BoundDelegateCreationExpression node)
8869public override BoundNode? VisitMethodGroup(BoundMethodGroup node)
8952public override BoundNode? VisitLambda(BoundLambda node)
9001public override BoundNode? VisitUnboundLambda(UnboundLambda node)
9011public override BoundNode? VisitThisReference(BoundThisReference node)
9024public override BoundNode? VisitParameter(BoundParameter node)
9034public override BoundNode? VisitAssignmentOperator(BoundAssignmentOperator node)
9212public override BoundNode? VisitDeconstructionAssignmentOperator(BoundDeconstructionAssignmentOperator node)
9217private BoundNode? VisitDeconstructionAssignmentOperator(BoundDeconstructionAssignmentOperator node, TypeWithState? rightResultOpt)
9328var underlyingConversion = BoundNode.GetConversion(placeholderConversion, placeholder);
9369var underlyingConversion = BoundNode.GetConversion(placeholderConversion, placeholder);
9528public override BoundNode? VisitIncrementOperator(BoundIncrementOperator node)
9570BoundNode.GetConversion(node.OperandConversion, node.OperandPlaceholder),
9600BoundNode.GetConversion(node.ResultConversion, node.ResultPlaceholder),
9628public override BoundNode? VisitCompoundAssignmentOperator(BoundCompoundAssignmentOperator node)
9648BoundNode.GetConversion(node.LeftConversion, node.LeftPlaceholder),
9682BoundNode.GetConversion(node.FinalConversion, node.FinalPlaceholder),
9705public override BoundNode? VisitFixedLocalCollectionInitializer(BoundFixedLocalCollectionInitializer node)
9722public override BoundNode? VisitAddressOfOperator(BoundAddressOfOperator node)
9780public override BoundNode? VisitBaseReference(BoundBaseReference node)
9786public override BoundNode? VisitFieldAccess(BoundFieldAccess node)
9795public override BoundNode? VisitPropertyAccess(BoundPropertyAccess node)
9816public override BoundNode? VisitIndexerAccess(BoundIndexerAccess node)
9839public override BoundNode? VisitImplicitIndexerAccess(BoundImplicitIndexerAccess node)
9853public override BoundNode? VisitImplicitIndexerValuePlaceholder(BoundImplicitIndexerValuePlaceholder node)
9861public override BoundNode? VisitImplicitIndexerReceiverPlaceholder(BoundImplicitIndexerReceiverPlaceholder node)
9867public override BoundNode? VisitEventAccess(BoundEventAccess node)
10205Conversion conversion = BoundNode.GetConversion(node.ElementConversion, node.ElementPlaceholder);
10241public override BoundNode? VisitFromEndIndexExpression(BoundFromEndIndexExpression node)
10243var result = base.VisitFromEndIndexExpression(node);
10248public override BoundNode? VisitObjectInitializerMember(BoundObjectInitializerMember node)
10254public override BoundNode? VisitDynamicObjectInitializerMember(BoundDynamicObjectInitializerMember node)
10260public override BoundNode? VisitBadExpression(BoundBadExpression node)
10282public override BoundNode? VisitTypeExpression(BoundTypeExpression node)
10284var result = base.VisitTypeExpression(node);
10295public override BoundNode? VisitTypeOrValueExpression(BoundTypeOrValueExpression node)
10298var result = base.VisitTypeOrValueExpression(node);
10303public override BoundNode? VisitUnaryOperator(BoundUnaryOperator node)
10375public override BoundNode? VisitPointerIndirectionOperator(BoundPointerIndirectionOperator node)
10377var result = base.VisitPointerIndirectionOperator(node);
10383public override BoundNode? VisitPointerElementAccess(BoundPointerElementAccess node)
10385var result = base.VisitPointerElementAccess(node);
10391public override BoundNode? VisitRefTypeOperator(BoundRefTypeOperator node)
10398public override BoundNode? VisitMakeRefOperator(BoundMakeRefOperator node)
10400var result = base.VisitMakeRefOperator(node);
10405public override BoundNode? VisitRefValueOperator(BoundRefValueOperator node)
10407var result = base.VisitRefValueOperator(node);
10503public override BoundNode? VisitAwaitExpression(BoundAwaitExpression node)
10505var result = base.VisitAwaitExpression(node);
10534public override BoundNode? VisitTypeOfOperator(BoundTypeOfOperator node)
10536var result = base.VisitTypeOfOperator(node);
10541public override BoundNode? VisitMethodInfo(BoundMethodInfo node)
10543var result = base.VisitMethodInfo(node);
10548public override BoundNode? VisitFieldInfo(BoundFieldInfo node)
10550var result = base.VisitFieldInfo(node);
10555public override BoundNode? VisitDefaultLiteral(BoundDefaultLiteral node)
10558var result = base.VisitDefaultLiteral(node);
10563public override BoundNode? VisitDefaultExpression(BoundDefaultExpression node)
10567var result = base.VisitDefaultExpression(node);
10585public override BoundNode? VisitIsOperator(BoundIsOperator node)
10619public override BoundNode? VisitAsOperator(BoundAsOperator node)
10627switch (BoundNode.GetConversion(node.OperandConversion, node.OperandPlaceholder).Kind)
10647public override BoundNode? VisitSizeOfOperator(BoundSizeOfOperator node)
10649var result = base.VisitSizeOfOperator(node);
10655public override BoundNode? VisitArgList(BoundArgList node)
10657var result = base.VisitArgList(node);
10663public override BoundNode? VisitArgListOperator(BoundArgListOperator node)
10671public override BoundNode? VisitLiteral(BoundLiteral node)
10674var result = base.VisitLiteral(node);
10679public override BoundNode? VisitUtf8String(BoundUtf8String node)
10682var result = base.VisitUtf8String(node);
10687public override BoundNode? VisitPreviousSubmissionReference(BoundPreviousSubmissionReference node)
10689var result = base.VisitPreviousSubmissionReference(node);
10695public override BoundNode? VisitHostObjectMemberReference(BoundHostObjectMemberReference node)
10697var result = base.VisitHostObjectMemberReference(node);
10703public override BoundNode? VisitPseudoVariable(BoundPseudoVariable node)
10705var result = base.VisitPseudoVariable(node);
10710public override BoundNode? VisitRangeExpression(BoundRangeExpression node)
10712var result = base.VisitRangeExpression(node);
10717public override BoundNode? VisitRangeVariable(BoundRangeVariable node)
10724public override BoundNode? VisitLabel(BoundLabel node)
10726var result = base.VisitLabel(node);
10731public override BoundNode? VisitDynamicMemberAccess(BoundDynamicMemberAccess node)
10743public override BoundNode? VisitDynamicInvocation(BoundDynamicInvocation node)
10763public override BoundNode? VisitEventAssignmentOperator(BoundEventAssignmentOperator node)
10789public override BoundNode? VisitDynamicObjectCreationExpression(BoundDynamicObjectCreationExpression node)
10795public override BoundNode? VisitObjectInitializerExpression(BoundObjectInitializerExpression node)
10803public override BoundNode? VisitCollectionInitializerExpression(BoundCollectionInitializerExpression node)
10811public override BoundNode? VisitDynamicCollectionElementInitializer(BoundDynamicCollectionElementInitializer node)
10819public override BoundNode? VisitImplicitReceiver(BoundImplicitReceiver node)
10821var result = base.VisitImplicitReceiver(node);
10826public override BoundNode? VisitAnonymousPropertyDeclaration(BoundAnonymousPropertyDeclaration node)
10831public override BoundNode? VisitNoPiaObjectCreationExpression(BoundNoPiaObjectCreationExpression node)
10837public override BoundNode? VisitNewT(BoundNewT node)
10843public override BoundNode? VisitArrayInitialization(BoundArrayInitialization node)
10845var result = base.VisitArrayInitialization(node);
10855public override BoundNode? VisitDynamicIndexerAccess(BoundDynamicIndexerAccess node)
10949public override BoundNode? VisitQueryClause(BoundQueryClause node)
10951var result = base.VisitQueryClause(node);
10956public override BoundNode? VisitNameOfOperator(BoundNameOfOperator node)
10958var result = base.VisitNameOfOperator(node);
10963public override BoundNode? VisitNamespaceExpression(BoundNamespaceExpression node)
10965var result = base.VisitNamespaceExpression(node);
10970public override BoundNode? VisitUnconvertedInterpolatedString(BoundUnconvertedInterpolatedString node)
10973var result = base.VisitUnconvertedInterpolatedString(node);
10978public override BoundNode? VisitStringInsert(BoundStringInsert node)
10980var result = base.VisitStringInsert(node);
10991public override BoundNode? VisitInterpolatedStringHandlerPlaceholder(BoundInterpolatedStringHandlerPlaceholder node)
10999public override BoundNode? VisitInterpolatedStringArgumentPlaceholder(BoundInterpolatedStringArgumentPlaceholder node)
11005public override BoundNode? VisitStackAllocArrayCreation(BoundStackAllocArrayCreation node)
11011public override BoundNode? VisitConvertedStackAllocExpression(BoundConvertedStackAllocExpression node)
11016private BoundNode? VisitStackAllocArrayCreationBase(BoundStackAllocArrayCreationBase node)
11033public override BoundNode? VisitDiscardExpression(BoundDiscardExpression node)
11041public override BoundNode? VisitThrowExpression(BoundThrowExpression node)
11048public override BoundNode? VisitThrowStatement(BoundThrowStatement node)
11071public override BoundNode? VisitYieldReturnStatement(BoundYieldReturnStatement node)
11109public override BoundNode? VisitLockStatement(BoundLockStatement node)
11117public override BoundNode? VisitAttribute(BoundAttribute node)
11130public override BoundNode? VisitExpressionWithNullability(BoundExpressionWithNullability node)
11137public override BoundNode? VisitDeconstructValuePlaceholder(BoundDeconstructValuePlaceholder node)
11145public override BoundNode? VisitObjectOrCollectionValuePlaceholder(BoundObjectOrCollectionValuePlaceholder node)
11153public override BoundNode? VisitAwaitableValuePlaceholder(BoundAwaitableValuePlaceholder node)
11176public override BoundNode? VisitAwaitableInfo(BoundAwaitableInfo node)
11183public override BoundNode? VisitFunctionPointerInvocation(BoundFunctionPointerInvocation node)
11742private sealed class ExpressionAndSymbolEqualityComparer : IEqualityComparer<(BoundNode? expr, Symbol symbol)>
11748public bool Equals((BoundNode? expr, Symbol symbol) x, (BoundNode? expr, Symbol symbol) y)
11759public int GetHashCode((BoundNode? expr, Symbol symbol) obj)
FlowAnalysis\NullableWalker.SnapshotManager.cs (11)
34private readonly ImmutableDictionary<(BoundNode?, Symbol), Symbol> _updatedSymbolsMap;
38private SnapshotManager(ImmutableArray<SharedWalkerState> walkerSharedStates, ImmutableArray<(int position, Snapshot snapshot)> incrementalSnapshots, ImmutableDictionary<(BoundNode?, Symbol), Symbol> updatedSymbolsMap)
85internal bool TryGetUpdatedSymbol(BoundNode node, Symbol symbol, [NotNullWhen(true)] out Symbol? updatedSymbol)
107internal void VerifyNode(BoundNode node)
151private readonly ImmutableDictionary<(BoundNode?, Symbol), Symbol>.Builder _updatedSymbolMap = ImmutableDictionary.CreateBuilder<(BoundNode?, Symbol), Symbol>(ExpressionAndSymbolEqualityComparer.Instance, Symbols.SymbolEqualityComparer.ConsiderEverything);
211internal void TakeIncrementalSnapshot(BoundNode? node, LocalState currentState)
223internal void SetUpdatedSymbol(BoundNode node, Symbol originalSymbol, Symbol updatedSymbol)
231internal void RemoveSymbolIfPresent(BoundNode node, Symbol symbol)
236private static (BoundNode?, Symbol) GetKey(BoundNode node, Symbol symbol)
FlowAnalysis\ReadWriteWalker.cs (11)
22CSharpCompilation compilation, Symbol member, BoundNode node, BoundNode firstInRegion, BoundNode lastInRegion, HashSet<PrefixUnaryExpressionSyntax> unassignedVariableAddressOfSyntaxes,
70private ReadWriteWalker(CSharpCompilation compilation, Symbol member, BoundNode node, BoundNode firstInRegion, BoundNode lastInRegion,
214protected override void AssignImpl(BoundNode node, BoundExpression value, bool isRef, bool written, bool read)
250public override BoundNode VisitUnboundLambda(UnboundLambda node)
255public override BoundNode VisitRangeVariable(BoundRangeVariable node)
267private static ParameterSymbol GetRangeVariableUnderlyingParameter(BoundNode underlying)
286public override BoundNode VisitQueryClause(BoundQueryClause node)
Lowering\ClosureConversion\ClosureConversion.cs (33)
87private readonly Dictionary<BoundNode, Analysis.ClosureEnvironment> _frames = new Dictionary<BoundNode, Analysis.ClosureEnvironment>();
327static partial void CheckLocalsDefined(BoundNode node);
360var scopeBoundNode = scope.BoundNode;
624private static void InsertAndFreePrologue<T>(ArrayBuilder<BoundStatement> result, ArrayBuilder<T> prologue) where T : BoundNode
634result.Add(new BoundExpressionStatement(node.Syntax, (BoundExpression)(BoundNode)node));
648private BoundNode IntroduceFrame(BoundNode node, Analysis.ClosureEnvironment env, Func<ArrayBuilder<BoundExpression>, ArrayBuilder<LocalSymbol>, BoundNode> F)
714var result = F(prologue, addedLocals);
804protected override BoundNode VisitUnhoistedParameter(BoundParameter node)
815public override BoundNode VisitThisReference(BoundThisReference node)
832public override BoundNode VisitBaseReference(BoundBaseReference node)
839public override BoundNode VisitMethodDefIndex(BoundMethodDefIndex node)
1054public override BoundNode VisitCall(BoundCall node)
1087var visited = base.VisitCall(node);
1134public override BoundNode VisitBlock(BoundBlock node)
1182public override BoundNode VisitScope(BoundScope node)
1198public override BoundNode VisitCatchBlock(BoundCatchBlock node)
1214private BoundNode RewriteCatch(BoundCatchBlock node, ArrayBuilder<BoundExpression> prologue, ArrayBuilder<LocalSymbol> newLocals)
1272public override BoundNode VisitSequence(BoundSequence node)
1288public override BoundNode VisitStatementList(BoundStatementList node)
1313public override BoundNode VisitDelegateCreationExpression(BoundDelegateCreationExpression node)
1346public override BoundNode VisitFunctionPointerLoad(BoundFunctionPointerLoad node)
1373public override BoundNode VisitConversion(BoundConversion conversion)
1403public override BoundNode VisitLocalFunctionStatement(BoundLocalFunctionStatement node)
1408BoundNode lambdaScope;
1488out BoundNode lambdaScope,
1505BoundNode tmpScope = null;
1590private BoundNode RewriteLambdaConversion(BoundLambda node)
1600var result0 = wasInExpressionLambda ? node : ExpressionLambdaRewriter.RewriteLambda(node, CompilationState, TypeMap, RecursionDepth, Diagnostics);
1608BoundNode lambdaScope;
1760public override BoundNode VisitLambda(BoundLambda node)
Operations\CSharpOperationFactory.cs (21)
28public IOperation? Create(BoundNode? boundNode)
334public ImmutableArray<TOperation> CreateFromArray<TBoundNode, TOperation>(ImmutableArray<TBoundNode> boundNodes) where TBoundNode : BoundNode where TOperation : class, IOperation
379foreach (BoundNode? childNode in children)
393internal ImmutableArray<IVariableDeclaratorOperation> CreateVariableDeclarator(BoundNode declaration, SyntaxNode declarationSyntax)
447ImmutableArray<IOperation> children = CreateFromArray<BoundNode, IOperation>(((IBoundInvalidNode)boundCall).InvalidNodeChildren);
477ImmutableArray<IOperation> children = CreateFromArray<BoundNode, IOperation>(((IBoundInvalidNode)boundFunctionPointerInvocation).InvalidNodeChildren);
517internal ImmutableArray<IOperation> CreateIgnoredDimensions(BoundNode declaration)
592internal IOperation? CreateBoundPropertyReferenceInstance(BoundNode boundNode)
630var children = CreateFromArray<BoundNode, IOperation>(((IBoundInvalidNode)boundIndexerAccess).InvalidNodeChildren);
710var children = CreateFromArray<BoundNode, IOperation>(((IBoundInvalidNode)boundObjectCreationExpression).InvalidNodeChildren);
756internal IOperation CreateBoundDynamicInvocationExpressionReceiver(BoundNode receiver)
883var children = CreateFromArray<BoundNode, IOperation>(((IBoundInvalidNode)boundObjectInitializerMember).InvalidNodeChildren);
929var children = CreateFromArray<BoundNode, IOperation>(((IBoundInvalidNode)boundCollectionElementInitializer).InvalidNodeChildren);
1137Conversion conversion = BoundNode.GetConversion(boundAsOperator.OperandConversion, boundAsOperator.OperandPlaceholder);
1293Conversion inConversion = BoundNode.GetConversion(boundCompoundAssignmentOperator.LeftConversion, boundCompoundAssignmentOperator.LeftPlaceholder);
1294Conversion outConversion = BoundNode.GetConversion(boundCompoundAssignmentOperator.FinalConversion, boundCompoundAssignmentOperator.FinalPlaceholder);
1526Conversion valueConversion = BoundNode.GetConversion(boundNullCoalescingOperator.LeftConversion, boundNullCoalescingOperator.LeftPlaceholder);
1807BoundNode.GetConversion(enumeratorInfoOpt.CurrentConversion, enumeratorInfoOpt.CurrentPlaceholder),
1808BoundNode.GetConversion(boundForEachStatement.ElementConversion, boundForEachStatement.ElementPlaceholder),
1922IOperation resources = Create(boundUsingStatement.DeclarationsOpt ?? (BoundNode)boundUsingStatement.ExpressionOpt!);
1984var children = CreateFromArray<BoundNode, IOperation>(boundBadStatement.ChildBoundNodes);