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);
450 references to BoundDagTemp
Microsoft.CodeAnalysis.CSharp (450)
Binder\DecisionDagBuilder.cs (204)
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)
690
internal static bool IsUnionTryGetValueValue(
BoundDagTemp
input, [NotNullWhen(true)] out
BoundDagTemp
? unionInstance)
712
private static bool IsUnionHasValue(
BoundDagTemp
input, [NotNullWhen(true)] out
BoundDagTemp
? unionInstance)
755
var
temp = hasValueEvaluation.MakeResultTemp();
800
var
boolResult = deconstructEvaluation.MakeReturnValueTemp();
808
var
outParameterTemp = deconstructEvaluation.MakeFirstOutParameterTemp();
825
BoundDagTemp
input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests);
869
BoundDagTemp
input = PrepareForUnionValuePropertyMatching(ref inputInfo, builder);
885
BoundDagTemp
input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests);
899
BoundDagTemp
input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests);
907
private static Tests MakeConstantTest(SyntaxNode syntax,
BoundDagTemp
input, ConstantValue constantValue)
938
BoundDagTemp
input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests);
943
ArrayBuilder<
BoundDagTemp
> outParamTemps = evaluation.MakeOutParameterTemps();
967
BoundDagTemp
input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests);
973
var
element = evaluation.MakeResultTemp();
982
BoundDagTemp
input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests);
992
BoundDagTemp
input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests);
994
BoundDagTemp
currentInput = input;
1025
BoundDagTemp
input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests);
1033
bool tryMakeTestsForSubpatternMember([NotNullWhen(true)] BoundPropertySubpatternMember? member, ref
BoundDagTemp
input, bool isLengthOrCount)
1042
input = (
BoundDagTemp
)MakeConvertToType((TestInputOutputInfo)input, member.Syntax, member.Receiver.Type.StrippedType(), isExplicitTest: false, tests);
1125
BoundDagTemp
input = PrepareForUnionValuePropertyMatching(ref inputInfo, builder);
1156
BoundDagTemp
output = PrepareForUnionValuePropertyMatching(ref outputInfo, tests);
1273
DagState uniquifyState(FrozenArrayBuilder<StateForCase> cases, ImmutableDictionary<
BoundDagTemp
, IValueSet> remainingValues)
1286
var newRemainingValues = ImmutableDictionary.CreateBuilder<
BoundDagTemp
, IValueSet>();
1332
ImmutableDictionary<
BoundDagTemp
, IValueSet>.Empty);
1409
var tempToIndex = PooledDictionary<
BoundDagTemp
, int>.GetInstance();
1486
OneOrMany<
BoundDagTemp
> outputs = eval.AllOutputs();
1489
foreach (
var
temp in outputs)
1542
static void markTempsUsedInBindings(PooledDictionary<
BoundDagTemp
, int> tempToIndex, ref int nextTempIndex, ref BitVector usedTemps, StateForCase stateForCase)
1550
static void markUsedTemp(PooledDictionary<
BoundDagTemp
, int> tempToIndex, ref int nextTempIndex, ref BitVector usedTemps,
BoundDagTemp
temp)
1562
static void markAllInputsUsed(PooledDictionary<
BoundDagTemp
, int> tempToIndex, ref int nextTempIndex, ref BitVector usedTemps, BoundDagTest test)
1564
foreach (
var
temp in test.AllInputs())
1689
out ImmutableDictionary<
BoundDagTemp
, IValueSet> whenTrueValues,
1691
out ImmutableDictionary<
BoundDagTemp
, IValueSet> whenFalseValues,
1726
ImmutableDictionary<
BoundDagTemp
, IValueSet> whenTrueValues,
1727
ImmutableDictionary<
BoundDagTemp
, IValueSet> whenFalseValues,
1731
ImmutableDictionary<
BoundDagTemp
, IValueSet> values,
1753
ImmutableDictionary<
BoundDagTemp
, IValueSet> whenTrueValues,
1754
ImmutableDictionary<
BoundDagTemp
, IValueSet> whenFalseValues,
1759
var
input = test.Input;
1772
ImmutableDictionary<
BoundDagTemp
, IValueSet> whenTrueValues,
1773
ImmutableDictionary<
BoundDagTemp
, IValueSet> whenFalseValues,
1776
splitValues<TValueSet>(ImmutableDictionary<
BoundDagTemp
, IValueSet> values,
BoundDagTemp
input, TValueSet fromTestPassing) where TValueSet : IValueSet
1790
ImmutableDictionary<
BoundDagTemp
, IValueSet> whenTrueValues,
1791
ImmutableDictionary<
BoundDagTemp
, IValueSet> whenFalseValues,
1816
ImmutableDictionary<
BoundDagTemp
, IValueSet> whenTrueValues,
1817
ImmutableDictionary<
BoundDagTemp
, IValueSet> whenFalseValues,
1837
ImmutableDictionary<
BoundDagTemp
, IValueSet> whenTrueValues,
1838
ImmutableDictionary<
BoundDagTemp
, IValueSet> whenFalseValues,
1858
private static (
BoundDagTemp
? lengthTemp, int offset) TryGetTopLevelLengthTemp(BoundDagPropertyEvaluation e)
1862
BoundDagTemp
input = e.Input;
1863
BoundDagTemp
? lengthTemp = null;
1874
internal static (
BoundDagTemp
input,
BoundDagTemp
lengthTemp, int index) GetCanonicalInput(BoundDagIndexerEvaluation e)
1877
BoundDagTemp
input = e.Input;
1878
BoundDagTemp
lengthTemp = e.LengthTemp;
2147
BoundDagTemp
? testUnionInstance;
2159
BoundDagTemp
? otherUnionInstance;
2256
static UnionTestKind getUnionTestKind(BoundDagTest test, out TypeSymbol? targetType, out
BoundDagTemp
? testUnionInstance)
2294
static bool isAnyUnionValueNullTest(BoundDagTest test, [NotNullWhen(true)] out
BoundDagTemp
? testUnionInstance)
2300
static bool isAnyUnionValueNonNullTest(BoundDagTest test, [NotNullWhen(true)] out
BoundDagTemp
? testUnionInstance)
2306
static bool isAnyUnionValueTypeTest(BoundDagTest test, [NotNullWhen(true)] out TypeSymbol? targetType, [NotNullWhen(true)] out
BoundDagTemp
? testUnionInstance)
2319
static bool isUnionHasValueTest(BoundDagTest test, out bool sense, [NotNullWhen(true)] out
BoundDagTemp
? testUnionInstance)
2337
private static bool IsUnionTryGetValueTest(BoundDagTest test, [NotNullWhen(true)] out TypeSymbol? targetType, [NotNullWhen(true)] out
BoundDagTemp
? testUnionInstance, [NotNullWhen(true)] out BoundDagDeconstructEvaluation? tryGetValueEvaluation)
2376
private static bool IsSameEntity(
BoundDagTemp
input1,
BoundDagTemp
input2)
2378
BoundDagTemp
s1Input = OriginalInput(input1);
2379
BoundDagTemp
s2Input = OriginalInput(input2);
2397
if (IsAnyUnionValue(s1.Input, out
BoundDagTemp
? s1UnionInstance) &&
2398
IsAnyUnionValue(s2.Input, out
BoundDagTemp
? s2UnionInstance))
2458
(s1Input,
BoundDagTemp
s1LengthTemp, int s1Index) = GetCanonicalInput(s1);
2459
(s2Input,
BoundDagTemp
s2LengthTemp, int s2Index) = GetCanonicalInput(s2);
2516
(
BoundDagTemp
s1Input,
BoundDagTemp
s1LengthTemp, int s1Index) = GetCanonicalInput(s1);
2517
(
BoundDagTemp
s2Input,
BoundDagTemp
s2LengthTemp, int s2Index) = GetCanonicalInput(s2);
2537
BoundDagTemp
s1Input = NotTypeEvaluationInput(s1.Input.Source);
2538
BoundDagTemp
s2Input = NotTypeEvaluationInput(s2.Input.Source);
2550
BoundDagTemp
s1OriginalInput = NotTypeEvaluationInput(s1);
2551
BoundDagTemp
s2OriginalInput = NotTypeEvaluationInput(s2);
2559
if (IsAnyUnionValue(s1OriginalInput, out
BoundDagTemp
? s1UnionInstance) &&
2560
IsAnyUnionValue(s2OriginalInput, out
BoundDagTemp
? s2UnionInstance))
2607
private static bool IsAnyUnionValue(
BoundDagTemp
input, [NotNullWhen(true)] out
BoundDagTemp
? unionInstance)
2617
internal static
BoundDagTemp
NotTypeEvaluationInput(
BoundDagTemp
input)
2628
internal static
BoundDagTemp
NotTypeEvaluationInput(BoundDagTest test)
2779
string tempName(
BoundDagTemp
t)
2975
/// A <see cref="
BoundDagTemp
"/> absent from this dictionary means that all values of the type are possible.
2977
public ImmutableDictionary<
BoundDagTemp
, IValueSet> RemainingValues { get; private set; } = null!;
3006
public static DagState GetInstance(FrozenArrayBuilder<StateForCase> cases, ImmutableDictionary<
BoundDagTemp
, IValueSet> remainingValues)
3050
internal void UpdateRemainingValues(ImmutableDictionary<
BoundDagTemp
, IValueSet> newRemainingValues)
3207
public readonly ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> FinalTempMap;
3217
ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> finalTempMap,
3230
protected abstract RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder dagBuilder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap, BoundDagEvaluation e);
3234
return RemoveEvaluationAndUpdateTempReferences(dagBuilder, state, bindings, ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
>.Empty, e);
3237
protected Tests RemoveEvaluationAndUpdateTempReferences(DecisionDagBuilder dagBuilder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap, BoundDagEvaluation e)
3283
private static void AddBindingsPatchingAssignments(ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> oldTempMap, ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> newTempMap, ArrayBuilder<Tests> assignments)
3292
if (TryGetTempReplacement(newTempMap, b.TempContainingValue, out
BoundDagTemp
? useValueFrom))
3294
if (!TryGetTempReplacement(oldTempMap, b.TempContainingValue, out
BoundDagTemp
? oldReplacement) ||
3304
private static bool TryGetTempReplacement(ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap,
BoundDagTemp
oldTemp, [NotNullWhen(true)] out
BoundDagTemp
? newTemp)
3309
while (tempMap.TryGetValue(newTemp, out
BoundDagTemp
? nextTemp))
3346
protected override RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder builder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap, BoundDagEvaluation e)
3370
protected override RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder builder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap, BoundDagEvaluation e)
3474
if (TryGetTopLevelLengthTemp(e) is (
BoundDagTemp
lengthTemp, int offset))
3517
protected override RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder builder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap, BoundDagEvaluation e)
3591
public static Tests RemoveEvaluation(One tests, DecisionDagBuilder builder, DagState state, ref ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap, BoundDagEvaluation e, out Tests? condition)
3652
private static Tests RemoveSimpleEvaluationWithResultTemp(One tests, ref ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap, BoundDagEvaluation e1)
3664
private static void AddResultTempReplacement(ref ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap, BoundDagEvaluation oldEval, BoundDagEvaluation newEval)
3669
private static void AddTempReplacement(ref ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap,
BoundDagTemp
oldTemp,
BoundDagTemp
newTemp)
3671
var
current = newTemp;
3686
private static Tests RemoveDeconstructEvaluation(One tests, ref ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap, BoundDagDeconstructEvaluation e1)
3698
private static void AddOutParameterTempsReplacement(ref ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap, BoundDagDeconstructEvaluation oldDeconstruct, BoundDagDeconstructEvaluation newDeconstruct)
3700
ArrayBuilder<
BoundDagTemp
> newOutParamTemps = newDeconstruct.MakeOutParameterTemps();
3701
ArrayBuilder<
BoundDagTemp
> oldOutParamTemps = oldDeconstruct.MakeOutParameterTemps();
3710
private static Tests RemoveTypeEvaluation(One tests, DecisionDagBuilder dagBuilder, ref ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap, BoundDagTypeEvaluation e1)
3724
BoundDagTemp
e1Input = NotTypeEvaluationInput(e1);
3765
BoundDagTemp
oldTemp = typeEval.MakeResultTemp();
3766
BoundDagTemp
newTemp = newTypeEval.MakeResultTemp();
3787
private static Tests RemoveIndexerEvaluation(One tests, DecisionDagBuilder dagBuilder, DagState state, ref ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap, BoundDagIndexerEvaluation s1, out Tests? condition)
3797
(
BoundDagTemp
s1Input,
BoundDagTemp
s1LengthTemp, int s1Index) = GetCanonicalInput(s1);
3798
(
BoundDagTemp
s2Input,
BoundDagTemp
s2LengthTemp, int s2Index) = GetCanonicalInput(s2);
3845
private static BoundDagTest UpdateDagTempReferences(BoundDagTest test, ref ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap)
3863
if (!TryGetTempReplacement(tempMap, eval.Input, out
BoundDagTemp
? replacement))
3875
if (!TryGetTempReplacement(tempMap, indexer.Input, out
BoundDagTemp
? inputReplacement))
3880
if (!TryGetTempReplacement(tempMap, indexer.LengthTemp, out
BoundDagTemp
? lengthReplacement))
3891
if (!TryGetTempReplacement(tempMap, slice.Input, out
BoundDagTemp
? inputReplacement))
3896
if (!TryGetTempReplacement(tempMap, slice.LengthTemp, out
BoundDagTemp
? lengthReplacement))
3907
if (!TryGetTempReplacement(tempMap, assignment.Input, out
BoundDagTemp
? inputReplacement))
3917
if (!TryGetTempReplacement(tempMap, deconstruct.Input, out
BoundDagTemp
? replacement))
3939
if (!TryGetTempReplacement(tempMap, test.Input, out
BoundDagTemp
? replacement))
3976
protected override RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder builder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap, BoundDagEvaluation e)
4097
protected sealed override RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder dagBuilder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<
BoundDagTemp
,
BoundDagTemp
> tempMap, BoundDagEvaluation e)
4103
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)
220
BoundDagTemp
rootIdentifier,
250
static string samplePatternFromOtherPaths(
BoundDagTemp
rootIdentifier, BoundDecisionDagNode rootNode,
285
out Dictionary<
BoundDagTemp
, ArrayBuilder<(BoundDagTest, bool)>> constraints,
286
out Dictionary<
BoundDagTemp
, ArrayBuilder<BoundDagEvaluation>> evaluations)
288
constraints = new Dictionary<
BoundDagTemp
, ArrayBuilder<(BoundDagTest, bool)>>();
289
evaluations = new Dictionary<
BoundDagTemp
, ArrayBuilder<BoundDagEvaluation>>();
300
BoundDagTemp
temp = test.Input;
318
BoundDagTemp
temp = e.Evaluation.Input;
332
BoundDagTemp
input,
333
Dictionary<
BoundDagTemp
, ArrayBuilder<(BoundDagTest test, bool sense)>> constraintMap,
334
Dictionary<
BoundDagTemp
, ArrayBuilder<BoundDagEvaluation>> evaluationMap,
352
static ImmutableArray<T> getArray<T>(Dictionary<
BoundDagTemp
, ArrayBuilder<T>> map,
BoundDagTemp
temp)
399
var
typedTemp = te.MakeResultTemp();
415
var
typedTemp = te.MakeResultTemp();
459
var
lengthTemp = lengthOrCount.MakeResultTemp();
487
var
indexerTemp = e.MakeResultTemp();
506
var
sliceTemp = slice.MakeResultTemp();
535
var
elementTemp = e.MakeResultTemp();
659
ArrayBuilder<
BoundDagTemp
> outParamTemps = e.MakeOutParameterTemps();
661
foreach (
var
elementTemp in outParamTemps)
689
var
subInput = e.MakeResultTemp();
696
var
subInput = e.MakeResultTemp();
Binder\SwitchExpressionBinder.cs (1)
106
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)
385
var
rootTemp =
BoundDagTemp
.ForOriginalInput(expression);
409
var tempMap = PooledDictionary<
BoundDagTemp
, (int slot, TypeSymbol type)>.GetInstance();
448
ArrayBuilder<
BoundDagTemp
> outParamTemps = e.MakeOutParameterTemps();
449
foreach (
var
output in outParamTemps)
458
var
output = e.MakeResultTemp();
467
var
output = e.MakeResultTemp();
478
var
output = e.MakeResultTemp();
492
var
output = e.MakeResultTemp();
501
var
output = e.MakeResultTemp();
511
var
output = e.MakeResultTemp();
622
var
tempSource = binding.TempContainingValue;
677
int getOrMakeAndRegisterDagTempSlot(
BoundDagTemp
output)
849
void addToTempMap(
BoundDagTemp
output, int slot, TypeSymbol type)
940
int makeDagTempSlot(TypeWithAnnotations type,
BoundDagTemp
temp)
1003
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(
BoundDagTemp
input)
74
if (DecisionDagBuilder.IsUnionValue(input, out
BoundDagTemp
? unionInstance) && ((NamedTypeSymbol)unionInstance.Type).UnionCaseTypes is not [])