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;
11506public override BoundNode? VisitLocal(BoundLocal node)
13578public override BoundNode? VisitLocal(BoundLocal node)
13581BoundLocal updatedNode;
16019public 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 (17)
66var isEvent = _factory.StoreToTemp(_dynamicFactory.MakeDynamicIsEventTest(memberAccess.Name, memberAccess.Receiver).ToExpression(), out BoundAssignmentOperator isEventAssignment);
72eventTemps.Add(((BoundLocal)lhsRead).LocalSymbol);
73var storeNonEvent = _factory.StoreToTemp(_factory.Conditional(_factory.Not(isEvent), receiverAssignment, _factory.Null(receiverAssignment.Type), receiverAssignment.Type), out BoundAssignmentOperator nonEventStore);
82eventTemps.Add(((BoundLocal)loweredRight).LocalSymbol);
218var receiverTemp = _factory.StoreToTemp(rewrittenReceiver, out assignmentToTemp, refKind: variableRepresentsLocation ? RefKind.Ref : RefKind.None);
250var receiverTemp = _factory.StoreToTemp(rewrittenReceiver, out assignmentToTemp);
370var boundTemp = _factory.StoreToTemp(array, out storeToTemp);
394temps.Add(((BoundLocal)tempAssignment.Left).LocalSymbol);
461var variableTemp = _factory.StoreToTemp(arrayAccess, out assignmentToTemp, refKind: RefKind.Ref);
508var receiverTemp = _factory.StoreToTemp(rewrittenReceiver, out assignmentToTemp);
521var temp = _factory.StoreToTemp(VisitExpression(indexerAccess.Receiver), out assignmentToTemp);
539var temp = _factory.StoreToTemp(VisitExpression(arguments[i]), out assignmentToTemp, indexerAccess.ArgumentRefKindsOpt.RefKinds(i) != RefKind.None ? RefKind.Ref : RefKind.None);
767var variableTemp = _factory.StoreToTemp(rewrittenVariable, out assignmentToTemp2, refKind: RefKind.Ref);
796var arrayTemp = _factory.StoreToTemp(loweredExpression, out assignmentToArrayTemp);
799var boundTempArray = arrayTemp;
807var temp = _factory.StoreToTemp(loweredIndices[i], out assignmentToTemp);
871return localsMayBeAssignedOrCaptured || ((BoundLocal)expression).LocalSymbol.RefKind != RefKind.None;
Lowering\LocalRewriter\LocalRewriter_ForEachStatement.cs (24)
160BoundLocal boundEnumeratorVar = MakeBoundLocal(forEachSyntax, enumeratorVar, enumeratorType);
312BoundLocal boundEnumeratorVar,
427BoundLocal boundDisposableVar = MakeBoundLocal(forEachSyntax, disposableVar, idisposableTypeSymbol);
636BoundLocal boundArrayVar = MakeBoundLocal(forEachSyntax, collectionTemp, collectionType);
642BoundLocal boundPositionVar = MakeBoundLocal(forEachSyntax, positionVar, intType);
708private delegate BoundExpression GetForEachStatementAsForItem<TArg>(LocalRewriter rewriter, SyntaxNode syntax, ForEachEnumeratorInfo enumeratorInfo, BoundLocal boundArrayVar, BoundLocal boundPositionVar, TArg arg);
709private delegate BoundExpression GetForEachStatementAsForLength<TArg>(LocalRewriter rewriter, SyntaxNode syntax, BoundLocal boundArrayVar, TArg arg);
715getItem: static (LocalRewriter rewriter, SyntaxNode syntax, ForEachEnumeratorInfo enumeratorInfo, BoundLocal boundArrayVar, BoundLocal boundPositionVar, (MethodSymbol indexerGet, MethodSymbol lengthGet) arg) =>
724getLength: static (LocalRewriter rewriter, SyntaxNode syntax, BoundLocal boundArrayVar, (MethodSymbol indexerGet, MethodSymbol lengthGet) arg) =>
754BoundLocal boundLocal = rewriter._factory.StoreToTemp(rewrittenExpression, out BoundAssignmentOperator? valueStore);
767return static (LocalRewriter rewriter, SyntaxNode syntax, ForEachEnumeratorInfo enumeratorInfo, BoundLocal boundArrayVar, BoundLocal boundPositionVar, object? _) =>
793return static (LocalRewriter rewriter, SyntaxNode syntax, BoundLocal boundArrayVar, object? _) =>
925BoundLocal boundArrayVar = MakeBoundLocal(forEachSyntax, arrayVar, arrayType);
931BoundLocal boundPositionVar = MakeBoundLocal(forEachSyntax, positionVar, intType);
1074BoundLocal boundArrayVar = MakeBoundLocal(forEachSyntax, arrayVar, arrayType);
1088BoundLocal[] boundUpperVar = new BoundLocal[rank];
1110BoundLocal[] boundPositionVar = new BoundLocal[rank];
1232private static BoundLocal MakeBoundLocal(CSharpSyntaxNode syntax, LocalSymbol local, TypeSymbol type)
1252private 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));