12 instantiations of BoundDagTemp
Microsoft.CodeAnalysis.CSharp (12)
BoundTree\BoundDagEvaluation.cs (9)
135
return new
BoundDagTemp
(Syntax, Type, this);
162
return new
BoundDagTemp
(Syntax, Field.Type, this);
176
return new
BoundDagTemp
(Syntax, Property.Type, this);
199
return new
BoundDagTemp
(Syntax, Property.Type, this);
230
return new
BoundDagTemp
(Syntax, IndexerType, this);
267
return new
BoundDagTemp
(Syntax, SliceType, this);
328
builder.Add(new
BoundDagTemp
(Syntax, parameter.Type, this, i));
340
return new
BoundDagTemp
(Syntax, parameter.Type, this, 0);
346
return new
BoundDagTemp
(Syntax, DeconstructMethod.ReturnType, this, index: -1);
BoundTree\BoundDagTemp.cs (1)
21
public static BoundDagTemp ForOriginalInput(SyntaxNode syntax, TypeSymbol type) => new
BoundDagTemp
(syntax, type, source: null, 0);
BoundTree\Constructors.cs (1)
649
public static BoundDagTemp ForOriginalInput(BoundExpression expr) => new
BoundDagTemp
(expr.Syntax, expr.Type!, source: null);
Generated\BoundNodes.xml.Generated.cs (1)
5281
var result = new
BoundDagTemp
(this.Syntax, type, source, index, this.HasErrors);
452 references to BoundDagTemp
Microsoft.CodeAnalysis.CSharp (452)
Binder\DecisionDagBuilder.cs (206)
135
var
rootIdentifier =
BoundDagTemp
.ForOriginalInput(inputExpression);
148
var
rootIdentifier =
BoundDagTemp
.ForOriginalInput(switchGoverningExpression);
173
var
rootIdentifier =
BoundDagTemp
.ForOriginalInput(switchExpressionInput);
188
BoundDagTemp
input,
204
BoundDagTemp
input,
225
BoundDagTemp
temp = binding.TempContainingValue;
323
BoundDagTemp
input,
330
private readonly struct TestInputOutputInfo(
BoundDagTemp
dagTemp, BoundPropertySubpatternMember? unionValue)
332
public readonly
BoundDagTemp
DagTemp = dagTemp;
335
public static explicit operator TestInputOutputInfo(
BoundDagTemp
dagTemp)
340
public static explicit operator
BoundDagTemp
(TestInputOutputInfo info)
412
private
BoundDagTemp
PrepareForUnionValuePropertyMatching(ref TestInputOutputInfo input, ArrayBuilder<Tests> tests)
417
BoundDagTemp
temp = MakeUnionValue(input.DagTemp, unionValue, out BoundDagEvaluation valueEvaluation);
422
return (
BoundDagTemp
)input;
425
private
BoundDagTemp
MakeUnionValue(
BoundDagTemp
input, BoundPropertySubpatternMember unionValue, out BoundDagEvaluation valueEvaluation)
430
var
result = valueEvaluation.MakeResultTemp();
436
internal static bool IsUnionValue(
BoundDagTemp
input, [NotNullWhen(true)] out
BoundDagTemp
? unionInstance)
464
internal static bool IsUnionValueEvaluation(BoundDagEvaluation? source, [NotNullWhen(true)] out
BoundDagTemp
? unionInstance)
506
var
valueAsITuple = PrepareForUnionValuePropertyMatching(ref inputInfo, tests);
511
var
lengthTemp = lengthEvaluation.MakeResultTemp();
514
var
getItemPropertyInput = OriginalInput(valueAsITuple, getItemProperty);
519
var
indexTemp = indexEvaluation.MakeResultTemp();
532
private
BoundDagTemp
OriginalInput(
BoundDagTemp
input, Symbol symbol)
556
internal static
BoundDagTemp
OriginalInput(
BoundDagTemp
input)
593
BoundDagTemp
input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests);
618
BoundDagTemp
input,
632
private static bool IsUnionTryGetValueReturn(
BoundDagTemp
input, [NotNullWhen(true)] out TypeSymbol? targetType, [NotNullWhen(true)] out
BoundDagTemp
? unionInstance, [NotNullWhen(true)] out BoundDagDeconstructEvaluation? tryGetValueEvaluation)
657
internal static bool IsUnionTryGetValueEvaluation([NotNullWhen(true)] BoundDagEvaluation? evaluation, [NotNullWhen(true)] out TypeSymbol? targetType, [NotNullWhen(true)] out
BoundDagTemp
? unionInstance)
684
internal static bool IsUnionTryGetValueValue(
BoundDagTemp
input, [NotNullWhen(true)] out
BoundDagTemp
? unionInstance)
706
private static bool IsUnionHasValue(
BoundDagTemp
input, [NotNullWhen(true)] out
BoundDagTemp
? unionInstance)
749
var
temp = hasValueEvaluation.MakeResultTemp();
794
var
boolResult = deconstructEvaluation.MakeReturnValueTemp();
802
var
outParameterTemp = deconstructEvaluation.MakeFirstOutParameterTemp();
809
BoundDagTemp
typeEvaluationTemp = typeEvaluation.MakeResultTemp();
828
BoundDagTemp
input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests);
872
BoundDagTemp
input = PrepareForUnionValuePropertyMatching(ref inputInfo, builder);
888
BoundDagTemp
input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests);
902
BoundDagTemp
input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests);
910
private static Tests MakeConstantTest(SyntaxNode syntax,
BoundDagTemp
input, ConstantValue constantValue)
941
BoundDagTemp
input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests);
946
ArrayBuilder<
BoundDagTemp
> outParamTemps = evaluation.MakeOutParameterTemps();
970
BoundDagTemp
input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests);
976
var
element = evaluation.MakeResultTemp();
985
BoundDagTemp
input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests);
995
BoundDagTemp
input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests);
997
BoundDagTemp
currentInput = input;
1028
BoundDagTemp
input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests);
1036
bool tryMakeTestsForSubpatternMemberReceiver(BoundPropertySubpattern subpattern, BoundPropertySubpatternMember member, ref
BoundDagTemp
input)
1044
input = (
BoundDagTemp
)MakeConvertToType((TestInputOutputInfo)input, member.Syntax, member.Receiver.Type.StrippedType(), isExplicitTest: false, tests);
1055
bool tryMakeTestsForSubpatternMember(BoundPropertySubpattern subpattern, [NotNullWhen(true)] BoundPropertySubpatternMember? member, ref
BoundDagTemp
input, bool isLengthOrCount)
1150
BoundDagTemp
input = PrepareForUnionValuePropertyMatching(ref inputInfo, builder);
1181
BoundDagTemp
output = PrepareForUnionValuePropertyMatching(ref outputInfo, tests);
1298
DagState uniquifyState(FrozenArrayBuilder<StateForCase> cases, ImmutableDictionary<
BoundDagTemp
, IValueSet> remainingValues)
1311
var newRemainingValues = ImmutableDictionary.CreateBuilder<
BoundDagTemp
, IValueSet>();
1357
ImmutableDictionary<
BoundDagTemp
, IValueSet>.Empty);
1434
var tempToIndex = PooledDictionary<
BoundDagTemp
, int>.GetInstance();
1511
OneOrMany<
BoundDagTemp
> outputs = eval.AllOutputs();
1514
foreach (
var
temp in outputs)
1567
static void markTempsUsedInBindings(PooledDictionary<
BoundDagTemp
, int> tempToIndex, ref int nextTempIndex, ref BitVector usedTemps, StateForCase stateForCase)
1575
static void markUsedTemp(PooledDictionary<
BoundDagTemp
, int> tempToIndex, ref int nextTempIndex, ref BitVector usedTemps,
BoundDagTemp
temp)
1587
static void markAllInputsUsed(PooledDictionary<
BoundDagTemp
, int> tempToIndex, ref int nextTempIndex, ref BitVector usedTemps, BoundDagTest test)
1589
foreach (
var
temp in test.AllInputs())
1714
out ImmutableDictionary<
BoundDagTemp
, IValueSet> whenTrueValues,
1716
out ImmutableDictionary<
BoundDagTemp
, IValueSet> whenFalseValues,
1751
ImmutableDictionary<
BoundDagTemp
, IValueSet> whenTrueValues,
1752
ImmutableDictionary<
BoundDagTemp
, IValueSet> whenFalseValues,
1756
ImmutableDictionary<
BoundDagTemp
, IValueSet> values,
1778
ImmutableDictionary<
BoundDagTemp
, IValueSet> whenTrueValues,
1779
ImmutableDictionary<
BoundDagTemp
, IValueSet> whenFalseValues,
1784
var
input = test.Input;
1797
ImmutableDictionary<
BoundDagTemp
, IValueSet> whenTrueValues,
1798
ImmutableDictionary<
BoundDagTemp
, IValueSet> whenFalseValues,
1801
splitValues<TValueSet>(ImmutableDictionary<
BoundDagTemp
, IValueSet> values,
BoundDagTemp
input, TValueSet fromTestPassing) where TValueSet : IValueSet
1815
ImmutableDictionary<
BoundDagTemp
, IValueSet> whenTrueValues,
1816
ImmutableDictionary<
BoundDagTemp
, IValueSet> whenFalseValues,
1841
ImmutableDictionary<
BoundDagTemp
, IValueSet> whenTrueValues,
1842
ImmutableDictionary<
BoundDagTemp
, IValueSet> whenFalseValues,
1862
ImmutableDictionary<
BoundDagTemp
, IValueSet> whenTrueValues,
1863
ImmutableDictionary<
BoundDagTemp
, IValueSet> whenFalseValues,
1883
private static (
BoundDagTemp
? lengthTemp, int offset) TryGetTopLevelLengthTemp(BoundDagPropertyEvaluation e)
1887
BoundDagTemp
input = e.Input;
1888
BoundDagTemp
? lengthTemp = null;
1899
internal static (
BoundDagTemp
input,
BoundDagTemp
lengthTemp, int index) GetCanonicalInput(BoundDagIndexerEvaluation e)
1902
BoundDagTemp
input = e.Input;
1903
BoundDagTemp
lengthTemp = e.LengthTemp;
2194
BoundDagTemp
? testUnionInstance;
2206
BoundDagTemp
? otherUnionInstance;
2303
static UnionTestKind getUnionTestKind(BoundDagTest test, out TypeSymbol? targetType, out
BoundDagTemp
? testUnionInstance)
2341
static bool isAnyUnionValueNullTest(BoundDagTest test, [NotNullWhen(true)] out
BoundDagTemp
? testUnionInstance)
2347
static bool isAnyUnionValueNonNullTest(BoundDagTest test, [NotNullWhen(true)] out
BoundDagTemp
? testUnionInstance)
2353
static bool isAnyUnionValueTypeTest(BoundDagTest test, [NotNullWhen(true)] out TypeSymbol? targetType, [NotNullWhen(true)] out
BoundDagTemp
? testUnionInstance)
2366
static bool isUnionHasValueTest(BoundDagTest test, out bool sense, [NotNullWhen(true)] out
BoundDagTemp
? testUnionInstance)
2384
private static bool IsUnionTryGetValueTest(BoundDagTest test, [NotNullWhen(true)] out TypeSymbol? targetType, [NotNullWhen(true)] out
BoundDagTemp
? testUnionInstance, [NotNullWhen(true)] out BoundDagDeconstructEvaluation? tryGetValueEvaluation)
2423
private static bool IsSameEntity(
BoundDagTemp
input1,
BoundDagTemp
input2)
2425
BoundDagTemp
s1Input = OriginalInput(input1);
2426
BoundDagTemp
s2Input = OriginalInput(input2);
2444
if (IsAnyUnionValue(s1.Input, out
BoundDagTemp
? s1UnionInstance) &&
2445
IsAnyUnionValue(s2.Input, out
BoundDagTemp
? s2UnionInstance))
2505
(s1Input,
BoundDagTemp
s1LengthTemp, int s1Index) = GetCanonicalInput(s1);
2506
(s2Input,
BoundDagTemp
s2LengthTemp, int s2Index) = GetCanonicalInput(s2);
2563
(
BoundDagTemp
s1Input,
BoundDagTemp
s1LengthTemp, int s1Index) = GetCanonicalInput(s1);
2564
(
BoundDagTemp
s2Input,
BoundDagTemp
s2LengthTemp, int s2Index) = GetCanonicalInput(s2);
2584
BoundDagTemp
s1Input = NotTypeEvaluationInput(s1.Input.Source);
2585
BoundDagTemp
s2Input = NotTypeEvaluationInput(s2.Input.Source);
2597
BoundDagTemp
s1OriginalInput = NotTypeEvaluationInput(s1);
2598
BoundDagTemp
s2OriginalInput = NotTypeEvaluationInput(s2);
2606
if (IsAnyUnionValue(s1OriginalInput, out
BoundDagTemp
? s1UnionInstance) &&
2607
IsAnyUnionValue(s2OriginalInput, out
BoundDagTemp
? s2UnionInstance))
2654
private static bool IsAnyUnionValue(
BoundDagTemp
input, [NotNullWhen(true)] out
BoundDagTemp
? unionInstance)
2664
internal static
BoundDagTemp
NotTypeEvaluationInput(
BoundDagTemp
input)
2675
internal static
BoundDagTemp
NotTypeEvaluationInput(BoundDagTest test)
2826
string tempName(
BoundDagTemp
t)
3022
/// A <see cref="
BoundDagTemp
"/> absent from this dictionary means that all values of the type are possible.
3024
public ImmutableDictionary<
BoundDagTemp
, IValueSet> RemainingValues { get; private set; } = null!;
3053
public static DagState GetInstance(FrozenArrayBuilder<StateForCase> cases, ImmutableDictionary<
BoundDagTemp
, IValueSet> remainingValues)
3097
internal void UpdateRemainingValues(ImmutableDictionary<
BoundDagTemp
, IValueSet> newRemainingValues)
3254
public readonly ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> FinalTempMap;
3264
ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> finalTempMap,
3277
protected abstract RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder dagBuilder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap, BoundDagEvaluation e);
3281
return RemoveEvaluationAndUpdateTempReferences(dagBuilder, state, bindings, ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
>.Empty, e);
3284
protected Tests RemoveEvaluationAndUpdateTempReferences(DecisionDagBuilder dagBuilder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap, BoundDagEvaluation e)
3330
private static void AddBindingsPatchingAssignments(ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> oldTempMap, ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> newTempMap, ArrayBuilder<Tests> assignments)
3339
if (TryGetTempReplacement(newTempMap, b.TempContainingValue, out
BoundDagTemp
? useValueFrom))
3341
if (!TryGetTempReplacement(oldTempMap, b.TempContainingValue, out
BoundDagTemp
? oldReplacement) ||
3351
private static bool TryGetTempReplacement(ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap,
BoundDagTemp
oldTemp, [NotNullWhen(true)] out
BoundDagTemp
? newTemp)
3356
while (tempMap.TryGetValue(newTemp, out
BoundDagTemp
? nextTemp))
3393
protected override RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder builder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap, BoundDagEvaluation e)
3417
protected override RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder builder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap, BoundDagEvaluation e)
3521
if (TryGetTopLevelLengthTemp(e) is (
BoundDagTemp
lengthTemp, int offset))
3564
protected override RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder builder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap, BoundDagEvaluation e)
3638
public static Tests RemoveEvaluation(One tests, DecisionDagBuilder builder, DagState state, ref ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap, BoundDagEvaluation e, out Tests? condition)
3699
private static Tests RemoveSimpleEvaluationWithResultTemp(One tests, ref ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap, BoundDagEvaluation e1)
3711
private static void AddResultTempReplacement(ref ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap, BoundDagEvaluation oldEval, BoundDagEvaluation newEval)
3716
private static void AddTempReplacement(ref ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap,
BoundDagTemp
oldTemp,
BoundDagTemp
newTemp)
3718
var
current = newTemp;
3733
private static Tests RemoveDeconstructEvaluation(One tests, ref ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap, BoundDagDeconstructEvaluation e1)
3745
private static void AddOutParameterTempsReplacement(ref ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap, BoundDagDeconstructEvaluation oldDeconstruct, BoundDagDeconstructEvaluation newDeconstruct)
3747
ArrayBuilder<
BoundDagTemp
> newOutParamTemps = newDeconstruct.MakeOutParameterTemps();
3748
ArrayBuilder<
BoundDagTemp
> oldOutParamTemps = oldDeconstruct.MakeOutParameterTemps();
3757
private static Tests RemoveTypeEvaluation(One tests, DecisionDagBuilder dagBuilder, ref ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap, BoundDagTypeEvaluation e1)
3771
BoundDagTemp
e1Input = NotTypeEvaluationInput(e1);
3812
BoundDagTemp
oldTemp = typeEval.MakeResultTemp();
3813
BoundDagTemp
newTemp = newTypeEval.MakeResultTemp();
3834
private static Tests RemoveIndexerEvaluation(One tests, DecisionDagBuilder dagBuilder, DagState state, ref ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap, BoundDagIndexerEvaluation s1, out Tests? condition)
3844
(
BoundDagTemp
s1Input,
BoundDagTemp
s1LengthTemp, int s1Index) = GetCanonicalInput(s1);
3845
(
BoundDagTemp
s2Input,
BoundDagTemp
s2LengthTemp, int s2Index) = GetCanonicalInput(s2);
3892
private static BoundDagTest UpdateDagTempReferences(BoundDagTest test, ref ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap)
3910
if (!TryGetTempReplacement(tempMap, eval.Input, out
BoundDagTemp
? replacement))
3922
if (!TryGetTempReplacement(tempMap, indexer.Input, out
BoundDagTemp
? inputReplacement))
3927
if (!TryGetTempReplacement(tempMap, indexer.LengthTemp, out
BoundDagTemp
? lengthReplacement))
3938
if (!TryGetTempReplacement(tempMap, slice.Input, out
BoundDagTemp
? inputReplacement))
3943
if (!TryGetTempReplacement(tempMap, slice.LengthTemp, out
BoundDagTemp
? lengthReplacement))
3954
if (!TryGetTempReplacement(tempMap, assignment.Input, out
BoundDagTemp
? inputReplacement))
3964
if (!TryGetTempReplacement(tempMap, deconstruct.Input, out
BoundDagTemp
? replacement))
3986
if (!TryGetTempReplacement(tempMap, test.Input, out
BoundDagTemp
? replacement))
4023
protected override RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder builder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap, BoundDagEvaluation e)
4144
protected sealed override RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder dagBuilder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap, BoundDagEvaluation e)
4150
ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> TempMapToRestore
Binder\DecisionDagBuilder_CheckOrReachability.cs (9)
75
BoundDagTemp
rootIdentifier =
BoundDagTemp
.ForOriginalInput(inputExpression);
121
BoundDagTemp
rootIdentifier =
BoundDagTemp
.ForOriginalInput(inputExpression);
172
BoundDagTemp
rootIdentifier =
BoundDagTemp
.ForOriginalInput(inputExpression);
298
public readonly
BoundDagTemp
RootIdentifier;
305
DecisionDagBuilder builder,
BoundDagTemp
rootIdentifier, SyntaxNode syntax, PooledHashSet<SyntaxNode> redundantNodes)
343
BoundDagTemp
rootIdentifier,
Binder\DecisionDagBuilder_ListPatterns.cs (6)
31
BoundDagTemp
input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests);
42
BoundDagTemp
input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests);
48
var
lengthTemp = lengthEvaluation.MakeResultTemp();
72
var
sliceTemp = sliceEvaluation.MakeResultTemp();
87
var
indexTemp = indexEvaluation.MakeResultTemp();
94
BoundDagTemp
input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests);
Binder\PatternExplainer.cs (23)
221
BoundDagTemp
rootIdentifier,
251
static string samplePatternFromOtherPaths(Binder binder,
BoundDagTemp
rootIdentifier, BoundDecisionDagNode rootNode,
286
out Dictionary<
BoundDagTemp
, ArrayBuilder<(BoundDagTest, bool)>> constraints,
287
out Dictionary<
BoundDagTemp
, ArrayBuilder<BoundDagEvaluation>> evaluations)
289
constraints = new Dictionary<
BoundDagTemp
, ArrayBuilder<(BoundDagTest, bool)>>();
290
evaluations = new Dictionary<
BoundDagTemp
, ArrayBuilder<BoundDagEvaluation>>();
301
BoundDagTemp
temp = test.Input;
319
BoundDagTemp
temp = e.Evaluation.Input;
334
BoundDagTemp
input,
335
Dictionary<
BoundDagTemp
, ArrayBuilder<(BoundDagTest test, bool sense)>> constraintMap,
336
Dictionary<
BoundDagTemp
, ArrayBuilder<BoundDagEvaluation>> evaluationMap,
354
static ImmutableArray<T> getArray<T>(Dictionary<
BoundDagTemp
, ArrayBuilder<T>> map,
BoundDagTemp
temp)
401
var
typedTemp = te.MakeResultTemp();
417
var
typedTemp = te.MakeResultTemp();
461
var
lengthTemp = lengthOrCount.MakeResultTemp();
489
var
indexerTemp = e.MakeResultTemp();
508
var
sliceTemp = slice.MakeResultTemp();
537
var
elementTemp = e.MakeResultTemp();
661
ArrayBuilder<
BoundDagTemp
> outParamTemps = e.MakeOutParameterTemps();
665
foreach (
var
elementTemp in outParamTemps)
697
var
subInput = e.MakeResultTemp();
704
var
subInput = e.MakeResultTemp();
Binder\SwitchExpressionBinder.cs (1)
106
this,
BoundDagTemp
.ForOriginalInput(boundInputExpression), nodes, n, nullPaths: false, out bool requiresFalseWhenClause, out bool unnamedEnumValue);
BoundTree\BoundDagEvaluation.cs (48)
86
public sealed override BoundDagTest UpdateTestImpl(
BoundDagTemp
input) => Update(input);
88
public abstract
BoundDagTemp
MakeResultTemp();
89
public new BoundDagEvaluation Update(
BoundDagTemp
input) => UpdateEvaluationImpl(input);
90
public abstract BoundDagEvaluation UpdateEvaluationImpl(
BoundDagTemp
input);
92
public virtual OneOrMany<
BoundDagTemp
> AllOutputs()
94
return new OneOrMany<
BoundDagTemp
>(MakeResultTemp());
133
public override
BoundDagTemp
MakeResultTemp()
138
public override BoundDagEvaluation UpdateEvaluationImpl(
BoundDagTemp
input) => Update(input);
139
public new BoundDagTypeEvaluation Update(
BoundDagTemp
input)
148
if (DecisionDagBuilder.IsUnionTryGetValueEvaluation(nonTypeEvaluation, out _, out
BoundDagTemp
? unionInstance) ||
160
public override
BoundDagTemp
MakeResultTemp()
165
public override BoundDagEvaluation UpdateEvaluationImpl(
BoundDagTemp
input) => Update(input);
166
public new BoundDagFieldEvaluation Update(
BoundDagTemp
input)
174
public override
BoundDagTemp
MakeResultTemp()
179
public override BoundDagEvaluation UpdateEvaluationImpl(
BoundDagTemp
input) => Update(input);
180
public new BoundDagPropertyEvaluation Update(
BoundDagTemp
input)
196
public override
BoundDagTemp
MakeResultTemp()
202
public override BoundDagEvaluation UpdateEvaluationImpl(
BoundDagTemp
input) => Update(input);
203
public new BoundDagIndexEvaluation Update(
BoundDagTemp
input)
228
public override
BoundDagTemp
MakeResultTemp()
233
public override BoundDagEvaluation UpdateEvaluationImpl(
BoundDagTemp
input) => Update(input);
234
public new BoundDagIndexerEvaluation Update(
BoundDagTemp
input)
239
public BoundDagIndexerEvaluation Update(
BoundDagTemp
lengthTemp,
BoundDagTemp
input)
244
public override OneOrMany<
BoundDagTemp
> AllInputs()
246
return new OneOrMany<
BoundDagTemp
>([Input, LengthTemp]);
265
public override
BoundDagTemp
MakeResultTemp()
270
public override BoundDagEvaluation UpdateEvaluationImpl(
BoundDagTemp
input) => Update(input);
271
public new BoundDagSliceEvaluation Update(
BoundDagTemp
input)
276
public BoundDagSliceEvaluation Update(
BoundDagTemp
lengthTemp,
BoundDagTemp
input)
281
public override OneOrMany<
BoundDagTemp
> AllInputs()
283
return new OneOrMany<
BoundDagTemp
>([Input, LengthTemp]);
304
public override
BoundDagTemp
MakeResultTemp()
309
public override BoundDagEvaluation UpdateEvaluationImpl(
BoundDagTemp
input) => Update(input);
310
public new BoundDagAssignmentEvaluation Update(
BoundDagTemp
input)
318
public ArrayBuilder<
BoundDagTemp
> MakeOutParameterTemps()
323
var builder = ArrayBuilder<
BoundDagTemp
>.GetInstance(count);
334
public
BoundDagTemp
MakeFirstOutParameterTemp()
343
public
BoundDagTemp
MakeReturnValueTemp()
349
public override
BoundDagTemp
MakeResultTemp()
354
public override BoundDagEvaluation UpdateEvaluationImpl(
BoundDagTemp
input) => Update(input);
355
public new BoundDagDeconstructEvaluation Update(
BoundDagTemp
input)
360
public override OneOrMany<
BoundDagTemp
> AllOutputs()
371
return new OneOrMany<
BoundDagTemp
>(one);
374
return new OneOrMany<
BoundDagTemp
>(builder.ToImmutableAndFree());
386
public override
BoundDagTemp
MakeResultTemp()
391
public override BoundDagEvaluation UpdateEvaluationImpl(
BoundDagTemp
input) => Update(input);
BoundTree\BoundDagRelationalTest.cs (2)
11
public override BoundDagTest UpdateTestImpl(
BoundDagTemp
input) => Update(input);
12
public new BoundDagRelationalTest Update(
BoundDagTemp
input)
BoundTree\BoundDagTemp.cs (4)
21
public static
BoundDagTemp
ForOriginalInput(SyntaxNode syntax, TypeSymbol type) => new BoundDagTemp(syntax, type, source: null, 0);
23
public override bool Equals(object? obj) => obj is
BoundDagTemp
other && this.Equals(other);
25
public bool Equals(
BoundDagTemp
other)
40
public bool IsEquivalentTo(
BoundDagTemp
other)
BoundTree\BoundDagTest.cs (11)
51
public BoundDagTest Update(
BoundDagTemp
input) => UpdateTestImpl(input);
52
public abstract BoundDagTest UpdateTestImpl(
BoundDagTemp
input);
54
public virtual OneOrMany<
BoundDagTemp
> AllInputs()
56
return new OneOrMany<
BoundDagTemp
>(Input);
140
public override BoundDagTest UpdateTestImpl(
BoundDagTemp
input) => Update(input);
141
public new BoundDagValueTest Update(
BoundDagTemp
input)
149
public override BoundDagTest UpdateTestImpl(
BoundDagTemp
input) => Update(input);
154
public override BoundDagTest UpdateTestImpl(
BoundDagTemp
input) => Update(input);
155
public new BoundDagNonNullTest Update(
BoundDagTemp
input)
163
public override BoundDagTest UpdateTestImpl(
BoundDagTemp
input) => Update(input);
164
public new BoundDagTypeTest Update(
BoundDagTemp
input)
BoundTree\BoundPatternBinding.cs (2)
15
public readonly
BoundDagTemp
TempContainingValue;
16
public BoundPatternBinding(BoundExpression variableAccess,
BoundDagTemp
tempContainingValue)
BoundTree\Constructors.cs (1)
649
public static
BoundDagTemp
ForOriginalInput(BoundExpression expr) => new BoundDagTemp(expr.Syntax, expr.Type!, source: null);
FlowAnalysis\NullableWalker_Patterns.cs (16)
387
var
rootTemp =
BoundDagTemp
.ForOriginalInput(expression);
411
var tempMap = PooledDictionary<
BoundDagTemp
, (int slot, TypeSymbol type)>.GetInstance();
450
ArrayBuilder<
BoundDagTemp
> outParamTemps = e.MakeOutParameterTemps();
451
foreach (
var
output in outParamTemps)
460
var
output = e.MakeResultTemp();
469
var
output = e.MakeResultTemp();
480
var
output = e.MakeResultTemp();
494
var
output = e.MakeResultTemp();
503
var
output = e.MakeResultTemp();
513
var
output = e.MakeResultTemp();
624
var
tempSource = binding.TempContainingValue;
679
int getOrMakeAndRegisterDagTempSlot(
BoundDagTemp
output)
851
void addToTempMap(
BoundDagTemp
output, int slot, TypeSymbol type)
942
int makeDagTempSlot(TypeWithAnnotations type,
BoundDagTemp
temp)
1005
_binder,
BoundDagTemp
.ForOriginalInput(node.Expression), nodes, leaf, nullPaths: true, out bool requiresFalseWhenClause, out _);
Generated\BoundNodes.xml.Generated.cs (98)
5245
protected BoundDagTest(BoundKind kind, SyntaxNode syntax,
BoundDagTemp
input, bool hasErrors = false)
5254
public
BoundDagTemp
Input { get; }
5277
public
BoundDagTemp
Update(TypeSymbol type, BoundDagEvaluation? source, int index)
5281
var
result = new BoundDagTemp(this.Syntax, type, source, index, this.HasErrors);
5291
public BoundDagTypeTest(SyntaxNode syntax, TypeSymbol type,
BoundDagTemp
input, bool hasErrors = false)
5306
public BoundDagTypeTest Update(TypeSymbol type,
BoundDagTemp
input)
5320
public BoundDagNonNullTest(SyntaxNode syntax, bool isExplicitTest,
BoundDagTemp
input, bool hasErrors = false)
5334
public BoundDagNonNullTest Update(bool isExplicitTest,
BoundDagTemp
input)
5348
public BoundDagExplicitNullTest(SyntaxNode syntax,
BoundDagTemp
input, bool hasErrors = false)
5360
public new BoundDagExplicitNullTest Update(
BoundDagTemp
input)
5374
public BoundDagValueTest(SyntaxNode syntax, ConstantValue value,
BoundDagTemp
input, bool hasErrors = false)
5389
public BoundDagValueTest Update(ConstantValue value,
BoundDagTemp
input)
5403
public BoundDagRelationalTest(SyntaxNode syntax, BinaryOperatorKind operatorKind, ConstantValue value,
BoundDagTemp
input, bool hasErrors = false)
5420
public BoundDagRelationalTest Update(BinaryOperatorKind operatorKind, ConstantValue value,
BoundDagTemp
input)
5434
protected BoundDagEvaluation(BoundKind kind, SyntaxNode syntax,
BoundDagTemp
input, bool hasErrors = false)
5446
public BoundDagDeconstructEvaluation(SyntaxNode syntax, MethodSymbol deconstructMethod,
BoundDagTemp
input, bool hasErrors = false)
5461
public BoundDagDeconstructEvaluation Update(MethodSymbol deconstructMethod,
BoundDagTemp
input)
5475
public BoundDagTypeEvaluation(SyntaxNode syntax, TypeSymbol type,
BoundDagTemp
input, bool hasErrors = false)
5490
public BoundDagTypeEvaluation Update(TypeSymbol type,
BoundDagTemp
input)
5504
public BoundDagFieldEvaluation(SyntaxNode syntax, FieldSymbol field,
BoundDagTemp
input, bool hasErrors = false)
5519
public BoundDagFieldEvaluation Update(FieldSymbol field,
BoundDagTemp
input)
5533
public BoundDagPropertyEvaluation(SyntaxNode syntax, PropertySymbol property, bool isLengthOrCount,
BoundDagTemp
input, bool hasErrors = false)
5550
public BoundDagPropertyEvaluation Update(PropertySymbol property, bool isLengthOrCount,
BoundDagTemp
input)
5564
public BoundDagIndexEvaluation(SyntaxNode syntax, PropertySymbol property, int index,
BoundDagTemp
input, bool hasErrors = false)
5581
public BoundDagIndexEvaluation Update(PropertySymbol property, int index,
BoundDagTemp
input)
5595
public BoundDagIndexerEvaluation(SyntaxNode syntax, TypeSymbol indexerType,
BoundDagTemp
lengthTemp, int index, BoundExpression indexerAccess, BoundListPatternReceiverPlaceholder receiverPlaceholder, BoundListPatternIndexPlaceholder argumentPlaceholder,
BoundDagTemp
input, bool hasErrors = false)
5619
public
BoundDagTemp
LengthTemp { get; }
5628
public BoundDagIndexerEvaluation Update(TypeSymbol indexerType,
BoundDagTemp
lengthTemp, int index, BoundExpression indexerAccess, BoundListPatternReceiverPlaceholder receiverPlaceholder, BoundListPatternIndexPlaceholder argumentPlaceholder,
BoundDagTemp
input)
5642
public BoundDagSliceEvaluation(SyntaxNode syntax, TypeSymbol sliceType,
BoundDagTemp
lengthTemp, int startIndex, int endIndex, BoundExpression indexerAccess, BoundSlicePatternReceiverPlaceholder receiverPlaceholder, BoundSlicePatternRangePlaceholder argumentPlaceholder,
BoundDagTemp
input, bool hasErrors = false)
5667
public
BoundDagTemp
LengthTemp { get; }
5677
public BoundDagSliceEvaluation Update(TypeSymbol sliceType,
BoundDagTemp
lengthTemp, int startIndex, int endIndex, BoundExpression indexerAccess, BoundSlicePatternReceiverPlaceholder receiverPlaceholder, BoundSlicePatternRangePlaceholder argumentPlaceholder,
BoundDagTemp
input)
5691
public BoundDagAssignmentEvaluation(SyntaxNode syntax,
BoundDagTemp
target,
BoundDagTemp
input, bool hasErrors = false)
5701
public
BoundDagTemp
Target { get; }
5706
public BoundDagAssignmentEvaluation Update(
BoundDagTemp
target,
BoundDagTemp
input)
5720
public BoundDagPassThroughEvaluation(SyntaxNode syntax,
BoundDagTemp
input, bool hasErrors = false)
5732
public new BoundDagPassThroughEvaluation Update(
BoundDagTemp
input)
9370
return VisitDagTemp((
BoundDagTemp
)node, arg);
9715
public virtual R VisitDagTemp(
BoundDagTemp
node, A arg) => this.DefaultVisit(node, arg);
9956
public virtual BoundNode? VisitDagTemp(
BoundDagTemp
node) => this.DefaultVisit(node);
10596
public override BoundNode? VisitDagTemp(
BoundDagTemp
node)
11983
public override BoundNode? VisitDagTemp(
BoundDagTemp
node)
11991
BoundDagTemp
input = (
BoundDagTemp
)this.Visit(node.Input);
11997
BoundDagTemp
input = (
BoundDagTemp
)this.Visit(node.Input);
12002
BoundDagTemp
input = (
BoundDagTemp
)this.Visit(node.Input);
12007
BoundDagTemp
input = (
BoundDagTemp
)this.Visit(node.Input);
12012
BoundDagTemp
input = (
BoundDagTemp
)this.Visit(node.Input);
12018
BoundDagTemp
input = (
BoundDagTemp
)this.Visit(node.Input);
12023
BoundDagTemp
input = (
BoundDagTemp
)this.Visit(node.Input);
12030
BoundDagTemp
input = (
BoundDagTemp
)this.Visit(node.Input);
12036
BoundDagTemp
input = (
BoundDagTemp
)this.Visit(node.Input);
12042
BoundDagTemp
input = (
BoundDagTemp
)this.Visit(node.Input);
12047
BoundDagTemp
lengthTemp = (
BoundDagTemp
)this.Visit(node.LengthTemp);
12051
BoundDagTemp
input = (
BoundDagTemp
)this.Visit(node.Input);
12057
BoundDagTemp
lengthTemp = (
BoundDagTemp
)this.Visit(node.LengthTemp);
12061
BoundDagTemp
input = (
BoundDagTemp
)this.Visit(node.Input);
12067
BoundDagTemp
target = (
BoundDagTemp
)this.Visit(node.Target);
12068
BoundDagTemp
input = (
BoundDagTemp
)this.Visit(node.Input);
12073
BoundDagTemp
input = (
BoundDagTemp
)this.Visit(node.Input);
14171
BoundDagTemp
input = (
BoundDagTemp
)this.Visit(node.Input);
14178
BoundDagTemp
input = (
BoundDagTemp
)this.Visit(node.Input);
14185
BoundDagTemp
input = (
BoundDagTemp
)this.Visit(node.Input);
14192
BoundDagTemp
input = (
BoundDagTemp
)this.Visit(node.Input);
14199
BoundDagTemp
lengthTemp = (
BoundDagTemp
)this.Visit(node.LengthTemp);
14203
BoundDagTemp
input = (
BoundDagTemp
)this.Visit(node.Input);
14210
BoundDagTemp
lengthTemp = (
BoundDagTemp
)this.Visit(node.LengthTemp);
14214
BoundDagTemp
input = (
BoundDagTemp
)this.Visit(node.Input);
16664
public override TreeDumperNode VisitDagTemp(
BoundDagTemp
node, object? arg) => new TreeDumperNode("dagTemp", null, new TreeDumperNode[]
Lowering\LocalRewriter\LocalRewriter.DecisionDagRewriter.cs (4)
360
BoundExpression inputTemp = _tempAllocator.GetTemp(
BoundDagTemp
.ForOriginalInput(loweredSwitchGoverningExpression));
504
var
input = ((BoundTestDecisionDagNode)node).Test.Input;
552
BoundDagTemp
input)
561
BoundDagTemp
input,
Lowering\LocalRewriter\LocalRewriter.PatternLocalRewriter.cs (18)
56
private readonly PooledDictionary<
BoundDagTemp
, BoundExpression> _map = PooledDictionary<
BoundDagTemp
, BoundExpression>.GetInstance();
94
public BoundExpression GetTemp(
BoundDagTemp
dagTemp)
115
public bool TrySetTemp(
BoundDagTemp
dagTemp, BoundExpression translation)
143
var
outputTemp = f.MakeResultTemp();
153
var
outputTemp = p.MakeResultTemp();
185
ArrayBuilder<
BoundDagTemp
> outParamTemps = d.MakeOutParameterTemps();
186
foreach (
var
outputTemp in outParamTemps)
225
var
outputTemp = t.MakeResultTemp();
264
var
outputTemp = e.MakeResultTemp();
289
var
outputTemp = e.MakeResultTemp();
315
var
outputTemp = e.MakeResultTemp();
553
var
inputDagTemp =
BoundDagTemp
.ForOriginalInput(loweredInput);
654
var
originalInput =
BoundDagTemp
.ForOriginalInput(loweredInput.Syntax, loweredInput.Type);
662
var
temp = fieldFetchEvaluation.MakeResultTemp();
675
void storeToTemp(
BoundDagTemp
temp, BoundExpression expr)
Utilities\ValueSetFactory.cs (3)
65
public static IConstantValueSetFactory? ForInput(
BoundDagTemp
input)
72
public static ITypeUnionValueSetFactory? TypeUnionValueSetFactoryForInput(CSharpCompilation compilation,
BoundDagTemp
input)
74
if (DecisionDagBuilder.IsUnionValue(input, out
BoundDagTemp
? unionInstance))