Generated\BoundNodes.xml.Generated.cs (10)
4539public BoundLocal Update(LocalSymbol localSymbol, BoundLocalDeclarationKind declarationKind, ConstantValue? constantValueOpt, bool isNullableUnknown, TypeSymbol type)
4543var result = new BoundLocal(this.Syntax, localSymbol, declarationKind, constantValueOpt, isNullableUnknown, type, this.HasErrors);
9102return VisitLocal((BoundLocal)node, arg);
9456public virtual R VisitLocal(BoundLocal node, A arg) => this.DefaultVisit(node, arg);
9692public virtual BoundNode? VisitLocal(BoundLocal node) => this.DefaultVisit(node);
10268public override BoundNode? VisitLocal(BoundLocal node) => null;
11579public override BoundNode? VisitLocal(BoundLocal node)
13724public override BoundNode? VisitLocal(BoundLocal node)
13727BoundLocal updatedNode;
16165public override TreeDumperNode VisitLocal(BoundLocal node, object? arg) => new TreeDumperNode("local", null, new TreeDumperNode[]
Lowering\LocalRewriter\LocalRewriter_BinaryOperator.cs (13)
84var boundTemp = _factory.StoreToTemp(loweredLeft, out tempAssignment);
657BoundLocal? temp;
661var local = _factory.StoreToTemp(loweredLeft, out assignment);
1035BoundLocal boundTempX = _factory.StoreToTemp(xNonNull ?? loweredLeft, out BoundAssignmentOperator tempAssignmentX);
1036BoundLocal boundTempY = _factory.StoreToTemp(yNonNull ?? loweredRight, out BoundAssignmentOperator tempAssignmentY);
1207BoundLocal boundTempX = _factory.StoreToTemp(xNonNull ?? loweredLeft, out tempAssignmentX);
1209BoundLocal boundTempY = _factory.StoreToTemp(yNonNull ?? loweredRight, out tempAssignmentY);
1501var tempAccess = _factory.StoreToTemp(operand, out tempAssignment, kind: kind);
1725BoundLocal boundTemp = _factory.StoreToTemp(notAlwaysNull, out tempAssignment);
1782BoundLocal boundTempX = _factory.StoreToTemp(leftNonNull ?? left, out tempAssignmentX);
1784BoundLocal boundTempY = _factory.StoreToTemp(rightNonNull ?? right, out tempAssignmentY);
1836BoundLocal boundTempX = _factory.StoreToTemp(loweredLeft, out tempAssignmentX);
1838BoundLocal boundTempY = _factory.StoreToTemp(loweredRight, out tempAssignmentY);
Lowering\LocalRewriter\LocalRewriter_CollectionExpression.cs (21)
343BoundLocal temp = _factory.StoreToTemp(rewrittenReceiver, out assignmentToTemp);
383BoundExpression? rewriteCollectionInitializer(BoundLocal rewrittenReceiver, BoundExpression expressionElement)
565var temp = _factory.StoreToTemp(element, out var assignment);
581BoundLocal inlineArrayLocal = _factory.StoreToTemp(new BoundDefaultExpression(syntax, inlineArrayType), out assignmentToTemp);
759var localsBuilder = ArrayBuilder<BoundLocal>.GetInstance();
765BoundLocal indexTemp = _factory.StoreToTemp(
772BoundLocal arrayTemp = _factory.StoreToTemp(
983ArrayBuilder<BoundLocal> localsBuilder,
984BoundLocal indexTemp,
1000Debug.Assert((object)spreadOperandAsSpan != rewrittenSpreadOperand || spreadOperandAsSpan is BoundLocal { LocalSymbol.SynthesizedKind: SynthesizedLocalKind.LoweringTemp });
1005localsBuilder.Add((BoundLocal)spreadOperandAsSpan);
1028var localsBuilder = ArrayBuilder<BoundLocal>.GetInstance();
1053BoundLocal? knownLengthTemp = null;
1087BoundLocal listTemp = _factory.StoreToTemp(rewrittenReceiver, out assignmentToTemp);
1103BoundLocal spanTemp = _factory.StoreToTemp(_factory.Call(receiver: null, asSpan, listTemp), out assignmentToTemp);
1111BoundLocal indexTemp = _factory.StoreToTemp(
1215ArrayBuilder<BoundLocal> locals,
1222BoundLocal temp = _factory.StoreToTemp(rewrittenExpression, out assignmentToTemp);
1231ArrayBuilder<BoundLocal> rewrittenExpressions,
1274private BoundExpression GetKnownLengthExpression(ImmutableArray<BoundNode> elements, int numberIncludingLastSpread, ArrayBuilder<BoundLocal> rewrittenExpressions)
1342var iterationLocal = _factory.Local(iterationVariable);
Lowering\LocalRewriter\LocalRewriter_CompoundAssignmentOperator.cs (18)
52BoundLocal targetOfCompoundOperation;
111var isEvent = _factory.StoreToTemp(_dynamicFactory.MakeDynamicIsEventTest(memberAccess.Name, memberAccess.Receiver).ToExpression(), out BoundAssignmentOperator isEventAssignment);
117eventTemps.Add(((BoundLocal)lhsRead).LocalSymbol);
118var storeNonEvent = _factory.StoreToTemp(_factory.Conditional(_factory.Not(isEvent), receiverAssignment, _factory.Null(receiverAssignment.Type), receiverAssignment.Type), out BoundAssignmentOperator nonEventStore);
127eventTemps.Add(((BoundLocal)loweredRight).LocalSymbol);
263var receiverTemp = _factory.StoreToTemp(rewrittenReceiver, out assignmentToTemp, refKind: variableRepresentsLocation ? RefKind.Ref : RefKind.None);
295var receiverTemp = _factory.StoreToTemp(rewrittenReceiver, out assignmentToTemp);
415var boundTemp = _factory.StoreToTemp(array, out storeToTemp);
439temps.Add(((BoundLocal)tempAssignment.Left).LocalSymbol);
506var variableTemp = _factory.StoreToTemp(arrayAccess, out assignmentToTemp, refKind: RefKind.Ref);
553var receiverTemp = _factory.StoreToTemp(rewrittenReceiver, out assignmentToTemp);
566var temp = _factory.StoreToTemp(VisitExpression(indexerAccess.Receiver), out assignmentToTemp);
584var temp = _factory.StoreToTemp(VisitExpression(arguments[i]), out assignmentToTemp, indexerAccess.ArgumentRefKindsOpt.RefKinds(i) != RefKind.None ? RefKind.Ref : RefKind.None);
812var variableTemp = _factory.StoreToTemp(rewrittenVariable, out assignmentToTemp2, refKind: RefKind.Ref);
841var arrayTemp = _factory.StoreToTemp(loweredExpression, out assignmentToArrayTemp);
844var boundTempArray = arrayTemp;
852var temp = _factory.StoreToTemp(loweredIndices[i], out assignmentToTemp);
916return localsMayBeAssignedOrCaptured || ((BoundLocal)expression).LocalSymbol.RefKind != RefKind.None;
Lowering\LocalRewriter\LocalRewriter_ForEachStatement.cs (24)
160BoundLocal boundEnumeratorVar = MakeBoundLocal(forEachSyntax, enumeratorVar, enumeratorType);
311BoundLocal boundEnumeratorVar,
426BoundLocal boundDisposableVar = MakeBoundLocal(forEachSyntax, disposableVar, idisposableTypeSymbol);
622BoundLocal boundArrayVar = MakeBoundLocal(forEachSyntax, collectionTemp, collectionType);
628BoundLocal boundPositionVar = MakeBoundLocal(forEachSyntax, positionVar, intType);
694private delegate BoundExpression GetForEachStatementAsForItem<TArg>(LocalRewriter rewriter, SyntaxNode syntax, ForEachEnumeratorInfo enumeratorInfo, BoundLocal boundArrayVar, BoundLocal boundPositionVar, TArg arg);
695private delegate BoundExpression GetForEachStatementAsForLength<TArg>(LocalRewriter rewriter, SyntaxNode syntax, BoundLocal boundArrayVar, TArg arg);
701getItem: static (LocalRewriter rewriter, SyntaxNode syntax, ForEachEnumeratorInfo enumeratorInfo, BoundLocal boundArrayVar, BoundLocal boundPositionVar, (MethodSymbol indexerGet, MethodSymbol lengthGet) arg) =>
710getLength: static (LocalRewriter rewriter, SyntaxNode syntax, BoundLocal boundArrayVar, (MethodSymbol indexerGet, MethodSymbol lengthGet) arg) =>
740BoundLocal boundLocal = rewriter._factory.StoreToTemp(rewrittenExpression, out BoundAssignmentOperator? valueStore);
753return static (LocalRewriter rewriter, SyntaxNode syntax, ForEachEnumeratorInfo enumeratorInfo, BoundLocal boundArrayVar, BoundLocal boundPositionVar, object? _) =>
779return static (LocalRewriter rewriter, SyntaxNode syntax, BoundLocal boundArrayVar, object? _) =>
911BoundLocal boundArrayVar = MakeBoundLocal(forEachSyntax, arrayVar, arrayType);
917BoundLocal boundPositionVar = MakeBoundLocal(forEachSyntax, positionVar, intType);
1060BoundLocal boundArrayVar = MakeBoundLocal(forEachSyntax, arrayVar, arrayType);
1074BoundLocal[] boundUpperVar = new BoundLocal[rank];
1096BoundLocal[] boundPositionVar = new BoundLocal[rank];
1218private static BoundLocal MakeBoundLocal(CSharpSyntaxNode syntax, LocalSymbol local, TypeSymbol type)
1238private BoundStatement MakePositionIncrement(CSharpSyntaxNode syntax, BoundLocal boundPositionVar, TypeSymbol intType)
Lowering\LocalRewriter\LocalRewriter_IndexerAccess.cs (18)
274localsBuilder.Insert(0, ((BoundLocal)possiblyRefCapturedReceiver).LocalSymbol);
297result = _factory.Sequence(ImmutableArray.Create(((BoundLocal)rewrittenReceiver).LocalSymbol),
501var receiverLocal = F.StoreToTemp(
542locals.Add(((BoundLocal)makeOffsetInput).LocalSymbol);
601var integerTemp = F.StoreToTemp(integerArgument, out BoundAssignmentOperator integerStore);
615var integerTemp = F.StoreToTemp(integerArgument, out BoundAssignmentOperator integerStore);
803var receiverLocal = F.StoreToTemp(
927localsBuilder.Add(((BoundLocal)startMakeOffsetInput).LocalSymbol);
938localsBuilder.Add(((BoundLocal)endMakeOffsetInput).LocalSymbol);
952var lengthLocal = F.StoreToTemp(lengthAccess, out var lengthStore);
965var startLocal = F.StoreToTemp(startExpr, out var startStore);
970var rangeSizeLocal = F.StoreToTemp(rangeSizeExpr, out var rangeSizeStore);
1013startExpr is not BoundLocal { LocalSymbol.SynthesizedKind: not SynthesizedLocalKind.UserDefined })
1015var startLocal = F.StoreToTemp(startExpr, out var startStore);
1031var rangeLocal = F.StoreToTemp(rewrittenRangeArg, out var rangeStore);
1037var lengthLocal = F.StoreToTemp(lengthAccess, out var lengthStore);
1043var startLocal = F.StoreToTemp(
1054var rangeSizeLocal = F.StoreToTemp(
Lowering\SpillSequenceSpiller.cs (14)
210public override BoundNode VisitLocal(BoundLocal node)
359out BoundLocal valueTypeReceiver,
360out BoundLocal referenceTypeReceiver))
396var local = (BoundLocal)expression;
506var replacement = _F.StoreToTemp(
532out BoundLocal outValueTypeReceiver,
533out BoundLocal outReferenceTypeReceiver)
538Left: BoundLocal { LocalSymbol: { SynthesizedKind: SynthesizedLocalKind.LoweringTemp, RefKind: RefKind.Ref } receiverRefLocal },
541ValueTypeReceiver: BoundLocal { LocalSymbol: { SynthesizedKind: SynthesizedLocalKind.LoweringTemp, RefKind: RefKind.Ref } } valueTypeReceiver,
550Left: BoundLocal { LocalSymbol: { SynthesizedKind: SynthesizedLocalKind.LoweringTemp, RefKind: RefKind.None } referenceTypeClone },
551Right: BoundLocal { LocalSymbol: { SynthesizedKind: SynthesizedLocalKind.LoweringTemp, RefKind: RefKind.Ref } originalReceiverReference }
554Value: BoundLocal { LocalSymbol: { SynthesizedKind: SynthesizedLocalKind.LoweringTemp, RefKind: RefKind.None } } referenceTypeReceiver
1056var cache = _F.Local(_F.SynthesizedLocal(receiverType));