1 write to _factory
Microsoft.CodeAnalysis.CSharp (1)
Lowering\LocalRewriter\LocalRewriter.cs (1)
62
_factory
= factory;
358 references to _factory
Microsoft.CodeAnalysis.CSharp (358)
Lowering\LocalRewriter\LocalRewriter.cs (16)
63
_factory
.CurrentFunction = containingMethod;
157
=>
_factory
;
166
=>
_factory
.InstrumentationState!;
176
get { return
_factory
.CompilationState.ModuleBuilderOpt; }
295
var oldContainingSymbol =
_factory
.CurrentFunction;
302
_factory
.CurrentFunction = lambda;
312
_factory
.CurrentFunction = oldContainingSymbol;
325
if (
_factory
.CompilationState.ModuleBuilderOpt is { } moduleBuilder)
342
if (
_factory
.CompilationState.Compilation.ShouldEmitNullableAttributes(localFunction))
357
var oldContainingSymbol =
_factory
.CurrentFunction;
364
_factory
.CurrentFunction = localFunction;
376
_dynamicFactory = new LoweredDynamicOperationFactory(
_factory
, _dynamicFactory.MethodOrdinal, localFunctionOrdinal);
383
_factory
.CurrentFunction = oldContainingSymbol;
647
if (
_factory
.CurrentFunction?.IsStatic == false)
709
var F =
_factory
;
1000
_factory
.CompilationState.ModuleBuilderOpt?.EnsureIsReadOnlyAttributeExists();
Lowering\LocalRewriter\LocalRewriter.PatternLocalRewriter.cs (1)
33
_factory = localRewriter.
_factory
;
Lowering\LocalRewriter\LocalRewriter_AssignmentOperator.cs (5)
226
return
_factory
.AssignmentExpression(
264
return
_factory
.AssignmentExpression(
298
return
_factory
.AssignmentExpression(
299
_factory
.Field(rewrittenReceiver, backingField),
334
LocalSymbol rhsTemp =
_factory
.SynthesizedLocal(exprType);
Lowering\LocalRewriter\LocalRewriter_Await.cs (1)
47
var tempAccess =
_factory
.StoreToTemp(rewrittenAwait, out BoundAssignmentOperator tempAssignment, syntaxOpt: rewrittenAwait.Syntax,
Lowering\LocalRewriter\LocalRewriter_BinaryOperator.cs (62)
83
var boundTemp =
_factory
.StoreToTemp(loweredLeft, out tempAssignment);
252
return
_factory
.RewriteNullableNullEquality(syntax, operatorKind, loweredLeft, loweredRight, type);
313
return
_factory
.MakeSequence(loweredRight, loweredLeft);
317
return
_factory
.MakeSequence(loweredLeft, loweredRight);
463
return
_factory
.MakeSequence(loweredRight, loweredLeft);
467
return
_factory
.MakeSequence(loweredLeft, loweredRight);
568
whenNullOpt = RewriteLiftedBinaryOperator(syntax, operatorKind,
_factory
.Default(loweredLeft.Type), loweredRight, type, method, constrainedToTypeOpt);
590
return arrLength.Update(arrLength.Expression,
_factory
.SpecialType(SpecialType.System_UIntPtr));
633
return
_factory
.Literal(true);
653
var local =
_factory
.StoreToTemp(loweredLeft, out assignment);
679
result =
_factory
.Binary(BinaryOperatorKind.LogicalOr, boolean, leftTest, result);
696
result =
_factory
.Conditional(leftTest, convertedLeft, op, type);
703
return
_factory
.Sequence(ImmutableArray.Create(temp.LocalSymbol), ImmutableArray.Create<BoundExpression>(tempAssignment), result);
859
BoundExpression callHasValue =
_factory
.MakeNullableHasValue(syntax, maybeNull);
868
return
_factory
.MakeSequence(maybeNull, falseExpr);
902
return
_factory
.MakeNullableHasValue(syntax, expression);
976
BoundLocal boundTempX =
_factory
.StoreToTemp(xNonNull ?? loweredLeft, out BoundAssignmentOperator tempAssignmentX);
977
BoundLocal boundTempY =
_factory
.StoreToTemp(yNonNull ?? loweredRight, out BoundAssignmentOperator tempAssignmentY);
1038
binaryExpression =
_factory
.Not(binaryExpression);
1129
BoundLocal boundTempX =
_factory
.StoreToTemp(xNonNull ?? loweredLeft, out tempAssignmentX);
1131
BoundLocal boundTempY =
_factory
.StoreToTemp(yNonNull ?? loweredRight, out tempAssignmentY);
1414
var tempAccess =
_factory
.StoreToTemp(operand, out tempAssignment, kind: kind);
1639
BoundLocal boundTemp =
_factory
.StoreToTemp(notAlwaysNull, out tempAssignment);
1696
BoundLocal boundTempX =
_factory
.StoreToTemp(leftNonNull ?? left, out tempAssignmentX);
1698
BoundLocal boundTempY =
_factory
.StoreToTemp(rightNonNull ?? right, out tempAssignmentY);
1750
BoundLocal boundTempX =
_factory
.StoreToTemp(loweredLeft, out tempAssignmentX);
1752
BoundLocal boundTempY =
_factory
.StoreToTemp(loweredRight, out tempAssignmentY);
1764
BoundExpression callX_HasValue =
_factory
.MakeNullableHasValue(syntax, boundTempX);
2133
var oldSyntax =
_factory
.Syntax;
2134
_factory
.Syntax = loweredRight.Syntax;
2147
loweredRight =
_factory
.Literal(shiftAmount);
2154
loweredRight =
_factory
.Binary(andOperatorKind, rightType,
2156
_factory
.IntSubtract(
_factory
.IntMultiply(
_factory
.Sizeof(leftType),
_factory
.Literal(8)),
_factory
.Literal(1)));
2159
_factory
.Syntax = syntax;
2161
?
_factory
.Binary(operatorKind, type, loweredLeft, loweredRight)
2165
_factory
.Syntax = oldSyntax;
2224
var sizeOfExpression =
_factory
.Sizeof(pointerType.PointedAtType);
2290
:
_factory
.Convert(
_factory
.SpecialType(destinationType), numericOperand, Conversion.IntegerToPointer);
2301
TypeSymbol nativeIntType =
_factory
.SpecialType(SpecialType.System_IntPtr);
2307
numericOperand =
_factory
.Convert(nativeIntType, numericOperand, Conversion.IntegerToPointer, isChecked);
2315
TypeSymbol longType =
_factory
.SpecialType(SpecialType.System_Int64);
2316
TypeSymbol nativeIntType =
_factory
.SpecialType(SpecialType.System_IntPtr);
2319
numericOperand =
_factory
.Convert(longType, numericOperand, Conversion.ExplicitNumeric, isChecked);
2320
sizeOfExpression =
_factory
.Convert(longType, sizeOfExpression, Conversion.ExplicitNumeric, isChecked);
2328
TypeSymbol longType =
_factory
.SpecialType(SpecialType.System_Int64);
2329
TypeSymbol nativeIntType =
_factory
.SpecialType(SpecialType.System_IntPtr);
2332
sizeOfExpression =
_factory
.Convert(longType, sizeOfExpression, Conversion.ExplicitNumeric, isChecked);
2340
TypeSymbol ulongType =
_factory
.SpecialType(SpecialType.System_UInt64);
2341
TypeSymbol nativeUIntType =
_factory
.SpecialType(SpecialType.System_UIntPtr);
2344
sizeOfExpression =
_factory
.Convert(ulongType, sizeOfExpression, Conversion.ExplicitNumeric, isChecked);
2360
var multiplication =
_factory
.Binary(multiplicationKind, multiplicationResultType, numericOperand, sizeOfExpression);
2363
:
_factory
.Convert(convertedMultiplicationResultType, multiplication, Conversion.IntegerToPointer); // NOTE: for some reason, dev10 doesn't check this conversion.
2377
var sizeOfExpression =
_factory
.Sizeof(pointerType.PointedAtType);
2382
return
_factory
.Convert(
2384
_factory
.Binary(
2386
_factory
.SpecialType(SpecialType.System_IntPtr),
2387
_factory
.Binary(
Lowering\LocalRewriter\LocalRewriter_Call.cs (19)
54
else if (hasImplicitReceiver &&
_factory
.TopLevelMethod is { RequiresInstanceReceiver: false })
57
Debug.Assert(
_factory
.CurrentType is { });
58
loweredReceiver = new BoundTypeExpression(node.Syntax, null,
_factory
.CurrentType);
467
_factory
.CurrentFunction,
475
receiverTemp =
_factory
.StoreToTemp(rewrittenReceiver, out assignmentToTemp, refKind);
503
visitedArgumentsBuilder.Add(
_factory
.MakeTempForDiscard(discard, tempsOpt));
564
rewrittenReceiver =
_factory
.Sequence(
640
local =
_factory
.StoreToTemp(visitedArgument, out var store, refKind: paramRefKind == RefKind.In ? RefKind.In : argRefKind);
642
visitedArgumentsBuilder[argIndex] =
_factory
.Sequence(ImmutableArray<LocalSymbol>.Empty, ImmutableArray.Create<BoundExpression>(store), local);
702
BoundLocal cache =
_factory
.Local(
_factory
.SynthesizedLocal(receiverType));
709
var intermediateRef =
_factory
.Local(
_factory
.SynthesizedLocal(receiverType, refKind: RefKind.Ref));
722
_factory
.Sequence(new BoundExpression[] {
_factory
.AssignmentExpression(cache, intermediateRef) }, cache),
740
_factory
.Sequence(new BoundExpression[] {
_factory
.AssignmentExpression(cache, assignmentToTemp.Right) }, cache),
1111
var temp =
_factory
.StoreToTemp(
1512
BoundLocal boundTemp =
_factory
.StoreToTemp(argument, out boundAssignmentToTemp);
Lowering\LocalRewriter\LocalRewriter_CompoundAssignmentOperator.cs (19)
65
var isEvent =
_factory
.StoreToTemp(_dynamicFactory.MakeDynamicIsEventTest(memberAccess.Name, memberAccess.Receiver).ToExpression(), out BoundAssignmentOperator isEventAssignment);
70
lhsRead =
_factory
.StoreToTemp(lhsRead, out BoundAssignmentOperator receiverAssignment);
72
var storeNonEvent =
_factory
.StoreToTemp(
_factory
.Conditional(
_factory
.Not(isEvent), receiverAssignment,
_factory
.Null(receiverAssignment.Type), receiverAssignment.Type), out BoundAssignmentOperator nonEventStore);
79
loweredRight =
_factory
.StoreToTemp(loweredRight, out BoundAssignmentOperator possibleHandlerAssignment);
95
var condition =
_factory
.Conditional(isEvent, invokeEventAccessor.ToExpression(), rewrittenAssignment, rewrittenAssignment.Type);
204
var receiverTemp =
_factory
.StoreToTemp(rewrittenReceiver, out assignmentToTemp, refKind: variableRepresentsLocation ? RefKind.Ref : RefKind.None);
236
var receiverTemp =
_factory
.StoreToTemp(rewrittenReceiver, out assignmentToTemp);
352
var boundTemp =
_factory
.StoreToTemp(array, out storeToTemp);
440
var variableTemp =
_factory
.StoreToTemp(arrayAccess, out assignmentToTemp, refKind: RefKind.Ref);
487
var receiverTemp =
_factory
.StoreToTemp(rewrittenReceiver, out assignmentToTemp);
500
var temp =
_factory
.StoreToTemp(VisitExpression(indexerAccess.Receiver), out assignmentToTemp);
518
var temp =
_factory
.StoreToTemp(VisitExpression(arguments[i]), out assignmentToTemp, indexerAccess.ArgumentRefKindsOpt.RefKinds(i) != RefKind.None ? RefKind.Ref : RefKind.None);
742
var variableTemp =
_factory
.StoreToTemp(rewrittenVariable, out assignmentToTemp2, refKind: RefKind.Ref);
771
var arrayTemp =
_factory
.StoreToTemp(loweredExpression, out assignmentToArrayTemp);
782
var temp =
_factory
.StoreToTemp(loweredIndices[i], out assignmentToTemp);
793
return
_factory
.ArrayAccess(boundTempArray, boundTempIndices);
Lowering\LocalRewriter\LocalRewriter_ConditionalAccess.cs (13)
50
return
_factory
.Default(node.Type);
96
temp =
_factory
.SynthesizedLocal(receiverType);
97
_currentConditionalAccessTarget =
_factory
.Local(temp);
136
loweredAccessExpression =
_factory
.New((NamedTypeSymbol)nodeType, loweredAccessExpression);
168
loweredReceiver =
_factory
.MakeSequence(
169
_factory
.AssignmentExpression(
_factory
.Local(temp), loweredReceiver),
170
_factory
.Local(temp));
177
var condition =
_factory
.ObjectNotEqual(
178
_factory
.Convert(objectType, loweredReceiver),
179
_factory
.Null(objectType));
186
_factory
.Default(nodeType),
193
result =
_factory
.MakeSequence(temp, result);
Lowering\LocalRewriter\LocalRewriter_Conversion.cs (23)
92
var save_Syntax =
_factory
.Syntax;
93
_factory
.Syntax = node.Syntax;
108
result = new BoundObjectCreationExpression(node.Syntax, ctor.AsMember((NamedTypeSymbol)node.Type), utf8Bytes,
_factory
.Literal(0),
_factory
.Literal(length));
111
_factory
.Syntax = save_Syntax;
143
builder.Add(
_factory
.Literal(b));
149
builder.Add(
_factory
.Literal((byte)0));
153
ImmutableArray.Create<BoundExpression>(
_factory
.Literal(builder.Count)),
445
return
_factory
.ThrowExpression(operand.Expression, rewrittenType);
559
var oldSyntax =
_factory
.Syntax;
560
_factory
.Syntax = (mg.ReceiverOpt ?? mg).Syntax;
561
var receiver = (!method.RequiresInstanceReceiver && !oldNodeOpt.IsExtensionMethod && !method.IsAbstract && !method.IsVirtual) ?
_factory
.Type(method.ContainingType) : mg.ReceiverOpt;
563
_factory
.Syntax = oldSyntax;
568
Debug.Assert(
_factory
.TopLevelMethod is { });
570
if (
_factory
.Compilation.LanguageVersion >= MessageID.IDS_FeatureCacheStaticMethodGroupConversion.RequiredVersion()
572
&&
_factory
.TopLevelMethod.MethodKind != MethodKind.StaticConstructor // Avoid caching twice if people do it manually.
575
var rewriter = _lazyDelegateCacheRewriter ??= new DelegateCacheRewriter(
_factory
, _topLevelMethodOrdinal);
650
return
_factory
.NullOrDefault(rewrittenType);
821
var savedTuple =
_factory
.StoreToTemp(rewrittenOperand, out assignmentToTemp);
833
return
_factory
.MakeSequence(savedTuple.LocalSymbol, assignmentToTemp, result);
1024
var boundTemp =
_factory
.StoreToTemp(operand, out tempAssignment);
1282
BoundLocal boundTemp =
_factory
.StoreToTemp(rewrittenOperand, out tempAssignment);
1286
BoundExpression condition =
_factory
.MakeNullableHasValue(syntax, boundTemp);
Lowering\LocalRewriter\LocalRewriter_DeconstructionAssignmentOperator.cs (6)
52
return
_factory
.Sequence(lhsTemps.ToImmutableAndFree(), lhsEffects.ToImmutableAndFree(), result);
97
return
_factory
.Sequence(temps.ToImmutableAndFree(), effects.ToImmutableAndFree(), last);
106
return
_factory
.Sequence(temps.ToImmutableAndFree(), effects.ToImmutableAndFree(), returnValue);
349
BoundLocal savedTuple =
_factory
.StoreToTemp(expression, out assignmentToTemp);
390
var localSymbol = new SynthesizedLocal(
_factory
.CurrentFunction, TypeWithAnnotations.Create(outputPlaceholder.Type), SynthesizedLocalKind.LoweringTemp);
427
var temp =
_factory
.StoreToTemp(loweredArg, out store);
Lowering\LocalRewriter\LocalRewriter_DelegateCreationExpression.cs (4)
31
var oldSyntax =
_factory
.Syntax;
32
_factory
.Syntax = (mg.ReceiverOpt ?? mg).Syntax;
33
var receiver = (!method.RequiresInstanceReceiver && !node.IsExtensionMethod && !method.IsAbstract && !method.IsVirtual) ?
_factory
.Type(method.ContainingType) : VisitExpression(mg.ReceiverOpt)!;
34
_factory
.Syntax = oldSyntax;
Lowering\LocalRewriter\LocalRewriter_DoStatement.cs (1)
30
rewrittenCondition = Instrumenter.InstrumentDoStatementCondition(node, rewrittenCondition,
_factory
);
Lowering\LocalRewriter\LocalRewriter_Event.cs (18)
83
boundTemp =
_factory
.StoreToTemp(rewrittenReceiverOpt!, out tempAssignment);
86
NamedTypeSymbol tokenType =
_factory
.WellKnownType(WellKnownType.System_Runtime_InteropServices_WindowsRuntime_EventRegistrationToken);
87
NamedTypeSymbol marshalType =
_factory
.WellKnownType(WellKnownType.System_Runtime_InteropServices_WindowsRuntime_WindowsRuntimeMarshal);
89
NamedTypeSymbol actionType =
_factory
.WellKnownType(WellKnownType.System_Action_T).Construct(tokenType);
93
BoundExpression delegateCreationArgument = boundTemp ?? rewrittenReceiverOpt ??
_factory
.Type(eventType);
131
NamedTypeSymbol func2Type =
_factory
.WellKnownType(WellKnownType.System_Func_T2).Construct(eventType, tokenType);
273
return
_factory
.Call(getOrCreateCall, invocationListAccessor);
288
SyntaxNode oldSyntax =
_factory
.Syntax;
289
_factory
.Syntax = node.Syntax;
291
var ctor =
_factory
.WellKnownMethod(WellKnownMember.System_Runtime_InteropServices_ComAwareEventInfo__ctor);
295
var addRemove =
_factory
.WellKnownMethod(node.IsAddition ? WellKnownMember.System_Runtime_InteropServices_ComAwareEventInfo__AddEventHandler :
300
BoundExpression eventInfo =
_factory
.New(ctor,
_factory
.Typeof(node.Event.ContainingType),
_factory
.Literal(node.Event.MetadataName));
301
result =
_factory
.Call(eventInfo, addRemove,
302
_factory
.Convert(addRemove.Parameters[0].Type, rewrittenReceiver),
303
_factory
.Convert(addRemove.Parameters[1].Type, rewrittenArgument));
307
_factory
.Syntax = oldSyntax;
Lowering\LocalRewriter\LocalRewriter_Field.cs (4)
63
return
_factory
.BadExpression(tupleField.Type);
80
return
_factory
.BadExpression(tupleField.Type);
87
rewrittenReceiver =
_factory
.Field(rewrittenReceiver, nestedFieldSymbol);
95
return
_factory
.Field(rewrittenReceiver, underlyingField);
Lowering\LocalRewriter\LocalRewriter_FixedStatement.cs (15)
32
statementBuilder.Add(InitializeFixedStatementLocal(localDecl,
_factory
, out pinnedTemp));
39
cleanup[i] =
_factory
.Assignment(
_factory
.Local(pinnedTemp),
_factory
.Null(pinnedTemp.Type));
44
cleanup[i] =
_factory
.Assignment(
_factory
.Local(pinnedTemp),
_factory
.NullRef(pinnedTemp.TypeWithAnnotations), isRef: true);
51
statementBuilder.Add(
_factory
.HiddenSequencePoint());
62
return
_factory
.Block(
65
_factory
.Syntax,
66
_factory
.Block(statementBuilder.ToImmutableAndFree()),
68
_factory
.Block(cleanup)));
73
return
_factory
.Block(localBuilder.ToImmutableAndFree(), statementBuilder.ToImmutableAndFree());
440
BoundExpression notNullCheck =
_factory
.MakeNullCheck(factory.Syntax, factory.Local(localSymbol), BinaryOperatorKind.NotEqual);
494
BoundExpression notNullCheck =
_factory
.MakeNullCheck(factory.Syntax, arrayTempInit, BinaryOperatorKind.NotEqual);
Lowering\LocalRewriter\LocalRewriter_ForEachStatement.cs (21)
75
lengthGet = (MethodSymbol?)
_factory
.WellKnownMember(WellKnownMember.System_Span_T__get_Length, isOptional: true)?.SymbolAsMember(spanType);
76
indexerGet = (MethodSymbol?)
_factory
.WellKnownMember(WellKnownMember.System_Span_T__get_Item, isOptional: true)?.SymbolAsMember(spanType);
81
lengthGet = (MethodSymbol?)
_factory
.WellKnownMember(WellKnownMember.System_ReadOnlySpan_T__get_Length, isOptional: true)?.SymbolAsMember(spanType);
82
indexerGet = (MethodSymbol?)
_factory
.WellKnownMember(WellKnownMember.System_ReadOnlySpan_T__get_Item, isOptional: true)?.SymbolAsMember(spanType);
123
LocalSymbol enumeratorVar =
_factory
.SynthesizedLocal(enumeratorType, syntax: forEachSyntax, kind: SynthesizedLocalKind.ForEachEnumerator);
272
Debug.Assert(
_factory
.CurrentFunction is { });
273
var conversions = new TypeConversions(
_factory
.CurrentFunction.ContainingAssembly.CorLibrary);
282
containingMember:
_factory
.CurrentFunction,
283
containingType:
_factory
.CurrentType,
337
var objectType =
_factory
.SpecialType(SpecialType.System_Object);
340
rewrittenCondition:
_factory
.ObjectNotEqual(
_factory
.Convert(objectType, boundEnumeratorVar),
_factory
.Null(objectType)),
360
LocalSymbol disposableVar =
_factory
.SynthesizedLocal(idisposableTypeSymbol);
537
LocalSymbol collectionTemp =
_factory
.SynthesizedLocal(collectionType, forEachSyntax, kind: SynthesizedLocalKind.ForEachArray);
548
LocalSymbol positionVar =
_factory
.SynthesizedLocal(intType, syntax: forEachSyntax, kind: SynthesizedLocalKind.ForEachArrayIndex);
716
LocalSymbol arrayVar =
_factory
.SynthesizedLocal(arrayType, syntax: forEachSyntax, kind: SynthesizedLocalKind.ForEachArray);
727
LocalSymbol positionVar =
_factory
.SynthesizedLocal(intType, syntax: forEachSyntax, kind: SynthesizedLocalKind.ForEachArrayIndex);
847
LocalSymbol arrayVar =
_factory
.SynthesizedLocal(arrayType, syntax: forEachSyntax, kind: SynthesizedLocalKind.ForEachArray);
867
upperVar[dimension] =
_factory
.SynthesizedLocal(intType, syntax: forEachSyntax, kind: SynthesizedLocalKind.ForEachArrayLimit);
887
positionVar[dimension] =
_factory
.SynthesizedLocal(intType, syntax: forEachSyntax, kind: SynthesizedLocalKind.ForEachArrayIndex);
Lowering\LocalRewriter\LocalRewriter_ForStatement.cs (1)
30
rewrittenCondition = Instrumenter.InstrumentForStatementCondition(node, rewrittenCondition,
_factory
);
Lowering\LocalRewriter\LocalRewriter_HostObjectMemberReference.cs (3)
14
Debug.Assert(
_factory
.TopLevelMethod is { IsStatic: false });
15
Debug.Assert(
_factory
.CurrentType is { });
19
var thisReference = new BoundThisReference(syntax,
_factory
.CurrentType);
Lowering\LocalRewriter\LocalRewriter_IfStatement.cs (1)
29
rewrittenCondition = Instrumenter.InstrumentIfStatementCondition(node, rewrittenCondition,
_factory
);
Lowering\LocalRewriter\LocalRewriter_IndexerAccess.cs (6)
236
return
_factory
.Sequence(
257
var F =
_factory
;
393
return
_factory
.Literal(0);
409
return
_factory
.IntSubtract(lengthAccess, loweredExpr);
424
return
_factory
.Call(
516
var F =
_factory
;
Lowering\LocalRewriter\LocalRewriter_IsOperator.cs (1)
73
return
_factory
.MakeNullCheck(syntax, rewrittenOperand, BinaryOperatorKind.NotEqual);
Lowering\LocalRewriter\LocalRewriter_IsPatternOperator.cs (2)
17
BoundDecisionDag decisionDag = node.GetDecisionDagForLowering(
_factory
.Compilation);
48
result = this.
_factory
.Not(result);
Lowering\LocalRewriter\LocalRewriter_Literal.cs (1)
70
var curMethod =
_factory
.CurrentFunction;
Lowering\LocalRewriter\LocalRewriter_LocalDeclaration.cs (1)
57
_factory
.AssignmentExpression(
Lowering\LocalRewriter\LocalRewriter_LockStatement.cs (2)
56
BoundLocal boundLockTemp =
_factory
.StoreToTemp(rewrittenArgument, out assignmentToLockTemp, syntaxOpt: lockSyntax, kind: SynthesizedLocalKind.Lock);
99
BoundLocal boundLockTakenTemp =
_factory
.StoreToTemp(
Lowering\LocalRewriter\LocalRewriter_NullCoalescingAssignmentOperator.cs (5)
96
var lhsTemp =
_factory
.StoreToTemp(lhsRead, out var store);
103
var tmp =
_factory
.StoreToTemp(BoundCall.Synthesized(leftOperand.Syntax, lhsRead, getValueOrDefault),
129
var alternative =
_factory
.Sequence(ImmutableArray<LocalSymbol>.Empty, ImmutableArray.Create(tmpAssignment, transformedLhsAssignment), tmp);
132
var ternary =
_factory
.Conditional(lhsReadHasValue, tmp, alternative, tmp.Type);
134
return
_factory
.Sequence(temps.ToImmutableAndFree(), stores.ToImmutableAndFree(), ternary);
Lowering\LocalRewriter\LocalRewriter_NullCoalescingOperator.cs (2)
151
BoundLocal boundTemp =
_factory
.StoreToTemp(rewrittenLeft, out tempAssignment);
154
BoundExpression nullCheck =
_factory
.MakeNullCheck(syntax, boundTemp, BinaryOperatorKind.NotEqual);
Lowering\LocalRewriter\LocalRewriter_ObjectCreationExpression.cs (19)
160
BoundLocal oldValue =
_factory
.StoreToTemp(rewrittenReceiver, out BoundAssignmentOperator boundAssignmentToTemp);
164
BoundExpression value =
_factory
.New(anonymousType, getAnonymousTypeValues(withExpr, oldValue, anonymousType, sideEffects, temps));
179
expression =
_factory
.Convert(
181
_factory
.Call(
206
BoundLocal valueTemp =
_factory
.StoreToTemp(rewrittenRight, out BoundAssignmentOperator boundAssignmentToTemp);
225
builder.Add(
_factory
.Property(oldValue, property));
259
BoundLocal value =
_factory
.StoreToTemp(rewrittenExpression, out boundAssignmentToTemp, isKnownToReferToTempIfReferenceType: true);
366
SyntaxNode oldSyntax =
_factory
.Syntax;
367
_factory
.Syntax = node.Syntax;
369
var ctor =
_factory
.WellKnownMethod(WellKnownMember.System_Guid__ctor);
375
newGuid =
_factory
.New(ctor,
_factory
.Literal(node.GuidString));
382
var getTypeFromCLSID =
_factory
.WellKnownMethod(WellKnownMember.System_Runtime_InteropServices_Marshal__GetTypeFromCLSID, isOptional: true);
386
getTypeFromCLSID =
_factory
.WellKnownMethod(WellKnownMember.System_Type__GetTypeFromCLSID);
393
callGetTypeFromCLSID =
_factory
.Call(null, getTypeFromCLSID, newGuid);
400
var createInstance =
_factory
.WellKnownMethod(WellKnownMember.System_Activator__CreateInstance);
405
rewrittenObjectCreation =
_factory
.Convert(node.Type,
_factory
.Call(null, createInstance, callGetTypeFromCLSID));
412
_factory
.Syntax = oldSyntax;
Lowering\LocalRewriter\LocalRewriter_ObjectOrCollectionInitializerExpression.cs (2)
422
var temp =
_factory
.StoreToTemp(rewrittenIndex, out store);
476
var temp =
_factory
.StoreToTemp(arg, out store, refKind);
Lowering\LocalRewriter\LocalRewriter_PreviousSubmissionReference.cs (3)
16
Debug.Assert(
_factory
.TopLevelMethod is { IsStatic: false });
17
Debug.Assert(
_factory
.CurrentType is { });
23
var thisReference = new BoundThisReference(syntax,
_factory
.CurrentType);
Lowering\LocalRewriter\LocalRewriter_Range.cs (2)
22
var F =
_factory
;
161
var F =
_factory
;
Lowering\LocalRewriter\LocalRewriter_ReturnStatement.cs (2)
29
(node.Syntax.Kind() == SyntaxKind.Block &&
_factory
.CurrentFunction?.IsAsync == false))))
41
var method =
_factory
.CurrentFunction;
Lowering\LocalRewriter\LocalRewriter_StackAlloc.cs (11)
34
return
_factory
.Default(type);
63
constructorCall =
_factory
.New((MethodSymbol)spanConstructor.SymbolAsMember(spanType), stackAllocNode, countTemp);
81
var tempAccess =
_factory
.StoreToTemp(constructorCall, out BoundAssignmentOperator tempAssignment, syntaxOpt: stackAllocNode.Syntax);
109
TypeSymbol uintType =
_factory
.SpecialType(SpecialType.System_UInt32);
110
TypeSymbol uintPtrType =
_factory
.SpecialType(SpecialType.System_UIntPtr);
117
BoundExpression sizeOfExpression =
_factory
.Sizeof(elementType);
134
return
_factory
.Convert(uintPtrType,
_factory
.Literal((uint)folded), Conversion.IntegerToPointer);
139
BoundExpression convertedCount =
_factory
.Convert(uintType, countExpression, Conversion.ExplicitNumeric);
140
convertedCount =
_factory
.Convert(uintPtrType, convertedCount, Conversion.IntegerToPointer);
149
BoundExpression product =
_factory
.Binary(multiplicationKind, uintPtrType, convertedCount, sizeOfExpression);
Lowering\LocalRewriter\LocalRewriter_StringConcat.cs (10)
87
result =
_factory
.StringLiteral(string.Empty);
229
return
_factory
.StringLiteral(concatenated);
238
return
_factory
.Literal(string.Empty);
296
return
_factory
.Coalesce(loweredOperand,
_factory
.Literal(""));
344
var array =
_factory
.ArrayOrEmpty(
_factory
.SpecialType(SpecialType.System_String), loweredArgs);
392
return
_factory
.StringLiteral(cv.CharValue.ToString());
472
var temp =
_factory
.StoreToTemp(expr, out var store);
473
return
_factory
.Sequence(
Lowering\LocalRewriter\LocalRewriter_StringInterpolation.cs (22)
23
var stringFactory =
_factory
.WellKnownType(WellKnownType.System_Runtime_CompilerServices_FormattableStringFactory);
29
var result =
_factory
.StaticCall(stringFactory, "Create", expressions.ToImmutableAndFree(),
60
return
_factory
.NullOrDefault(rewrittenType);
78
var builderTempSymbol =
_factory
.InterpolatedStringHandlerLocal(data.BuilderType, syntax);
79
BoundLocal builderTemp =
_factory
.Local(builderTempSymbol);
103
var outLocal =
_factory
.SynthesizedLocal(localType);
104
appendShouldProceedLocal =
_factory
.Local(outLocal);
109
var handlerConstructionAssignment =
_factory
.AssignmentExpression(builderTemp, (BoundExpression)VisitObjectCreationExpression(construction));
159
:
_factory
.LogicalAnd(currentExpression, actualCall);
171
var appendCallsStatements = resultExpressions.SelectAsArray(static (appendCall, @this) => (BoundStatement)@this.
_factory
.ExpressionStatement(appendCall), this);
175
var resultIf =
_factory
.If(appendShouldProceedLocal,
_factory
.StatementList(appendCallsStatements));
177
return new InterpolationHandlerResult(ImmutableArray.Create(
_factory
.ExpressionStatement(handlerConstructionAssignment), resultIf), builderTemp, appendShouldProceedLocal.LocalSymbol, this);
210
_factory
.Syntax = node.Syntax;
251
format =
_factory
.StringLiteral(formatString.ToStringAndFree());
298
return
_factory
.StringLiteral("");
314
part =
_factory
.StringLiteral(part.ConstantValueOpt.StringValue);
319
_factory
.Binary(BinaryOperatorKind.StringConcatenation, node.Type, result, part);
331
result = new BoundNullCoalescingOperator(result.Syntax, result,
_factory
.StringLiteral(""), leftPlaceholder: placeholder, leftConversion: placeholder, BoundNullCoalescingOperatorResultKind.LeftType, @checked: false, result.Type) { WasCompilerGenerated = true };
354
result =
_factory
.StaticCall(stringType, "Format", expressions.ToImmutableAndFree(),
440
return _rewriter.
_factory
.Sequence(locals, _expressions, result);
445
return _rewriter.
_factory
.SpillSequence(locals, _statements, result);
Lowering\LocalRewriter\LocalRewriter_TryStatement.cs (1)
101
_factory
);
Lowering\LocalRewriter\LocalRewriter_TupleBinaryOperator.cs (16)
38
BoundExpression result =
_factory
.Sequence(temps.ToImmutableAndFree(), initEffects.ToImmutableAndFree(), returnValue);
308
BoundExpression innerSequence =
_factory
.Sequence(locals: ImmutableArray<LocalSymbol>.Empty, innerEffects.ToImmutableAndFree(), logicalExpression);
322
return
_factory
.Sequence(ImmutableArray<LocalSymbol>.Empty, outerEffects.ToImmutableAndFree(),
323
result: boolValue ?
_factory
.Not(leftHasValue) : leftHasValue);
330
return
_factory
.Sequence(ImmutableArray<LocalSymbol>.Empty, outerEffects.ToImmutableAndFree(),
331
result: boolValue ?
_factory
.Not(rightHasValue) : rightHasValue);
339
_factory
.Sequence(ImmutableArray<LocalSymbol>.Empty, outerEffects.ToImmutableAndFree(),
340
_factory
.Conditional(
341
_factory
.Binary(BinaryOperatorKind.Equal, boolType, leftHasValue, rightHasValue),
342
_factory
.Conditional(leftHasValue, innerSequence, MakeBooleanConstant(right.Syntax, boolValue), boolType),
411
return
_factory
.MakeNullableHasValue(expr.Syntax, expr);
418
BoundLocal temp =
_factory
.StoreToTemp(loweredExpression, out BoundAssignmentOperator assignmentToTemp);
503
currentResult =
_factory
.Binary(logicalOperator, type, currentResult, nextLogicalOperand);
558
return
_factory
.Not(MakeUnaryOperator(UnaryOperatorKind.DynamicFalse, left.Syntax, method: null, constrainedToTypeOpt: null, dynamicResult, boolType));
572
BoundExpression binary = MakeBinaryOperator(
_factory
.Syntax, single.Kind, left, right, single.MethodSymbolOpt?.ReturnType ?? boolType, single.MethodSymbolOpt, single.ConstrainedToTypeOpt);
588
result =
_factory
.Not(result);
Lowering\LocalRewriter\LocalRewriter_TupleCreationExpression.cs (2)
63
return
_factory
.BadExpression(type);
78
return
_factory
.BadExpression(type);
Lowering\LocalRewriter\LocalRewriter_UnaryOperator.cs (8)
95
return
_factory
.Literal(constant.BooleanValue);
97
return MakeConversionNode(
_factory
.Literal(!constant.BooleanValue), type, @checked: false);
198
BoundLocal boundTemp =
_factory
.StoreToTemp(loweredOperand, out tempAssignment);
202
BoundExpression condition =
_factory
.MakeNullableHasValue(syntax, boundTemp);
438
LocalSymbol tempSymbol =
_factory
.SynthesizedLocal(operandType);
657
BoundLocal boundTemp =
_factory
.StoreToTemp(rewrittenArgument, out tempAssignment);
663
BoundExpression condition =
_factory
.MakeNullableHasValue(node.Syntax, boundTemp);
824
BoundExpression condition =
_factory
.MakeNullableHasValue(syntax, operand);
Lowering\LocalRewriter\LocalRewriter_UsingStatement.cs (5)
175
boundTemp =
_factory
.StoreToTemp(tempInit, out tempAssignment, kind: SynthesizedLocalKind.Using);
180
boundTemp =
_factory
.StoreToTemp(rewrittenExpression, out tempAssignment, syntaxOpt: usingSyntax, kind: SynthesizedLocalKind.Using);
251
BoundLocal boundTemp =
_factory
.StoreToTemp(tempInit, out tempAssignment, kind: SynthesizedLocalKind.Using);
382
ifCondition =
_factory
.MakeNullableHasValue(resourceSyntax, local);
391
ifCondition =
_factory
.MakeNullCheck(resourceSyntax, local, BinaryOperatorKind.NotEqual);
Lowering\LocalRewriter\LocalRewriter_WhileStatement.cs (1)
28
rewrittenCondition = Instrumenter.InstrumentWhileStatementCondition(node, rewrittenCondition,
_factory
);
Lowering\LocalRewriter\LocalRewriter_Yield.cs (1)
21
(!node.WasCompilerGenerated || (node.Syntax.Kind() == SyntaxKind.Block &&
_factory
.CurrentFunction?.IsAsync == false)))