12 instantiations of BoundDagTemp
Microsoft.CodeAnalysis.CSharp (12)
BoundTree\BoundDagEvaluation.cs (9)
135return new BoundDagTemp(Syntax, Type, this); 162return new BoundDagTemp(Syntax, Field.Type, this); 176return new BoundDagTemp(Syntax, Property.Type, this); 199return new BoundDagTemp(Syntax, Property.Type, this); 230return new BoundDagTemp(Syntax, IndexerType, this); 267return new BoundDagTemp(Syntax, SliceType, this); 328builder.Add(new BoundDagTemp(Syntax, parameter.Type, this, i)); 340return new BoundDagTemp(Syntax, parameter.Type, this, 0); 346return new BoundDagTemp(Syntax, DeconstructMethod.ReturnType, this, index: -1);
BoundTree\BoundDagTemp.cs (1)
21public static BoundDagTemp ForOriginalInput(SyntaxNode syntax, TypeSymbol type) => new BoundDagTemp(syntax, type, source: null, 0);
BoundTree\Constructors.cs (1)
649public static BoundDagTemp ForOriginalInput(BoundExpression expr) => new BoundDagTemp(expr.Syntax, expr.Type!, source: null);
Generated\BoundNodes.xml.Generated.cs (1)
5262var result = new BoundDagTemp(this.Syntax, type, source, index, this.HasErrors);
461 references to BoundDagTemp
Microsoft.CodeAnalysis.CSharp (461)
Binder\DecisionDagBuilder_CheckOrReachability.cs (9)
76BoundDagTemp rootIdentifier = BoundDagTemp.ForOriginalInput(inputExpression); 166BoundDagTemp rootIdentifier = BoundDagTemp.ForOriginalInput(inputExpression); 241BoundDagTemp rootIdentifier = BoundDagTemp.ForOriginalInput(inputExpression); 368public readonly BoundDagTemp RootIdentifier; 375DecisionDagBuilder builder, BoundDagTemp rootIdentifier, SyntaxNode syntax, PooledHashSet<SyntaxNode> redundantNodes) 413BoundDagTemp rootIdentifier,
Binder\DecisionDagBuilder_ListPatterns.cs (6)
31BoundDagTemp input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests); 42BoundDagTemp input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests); 48var lengthTemp = lengthEvaluation.MakeResultTemp(); 72var sliceTemp = sliceEvaluation.MakeResultTemp(); 87var indexTemp = indexEvaluation.MakeResultTemp(); 94BoundDagTemp input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests);
Binder\DecisionDagBuilder.cs (215)
135var rootIdentifier = BoundDagTemp.ForOriginalInput(inputExpression); 148var rootIdentifier = BoundDagTemp.ForOriginalInput(switchGoverningExpression); 173var rootIdentifier = BoundDagTemp.ForOriginalInput(switchExpressionInput); 190BoundDagTemp input, 206BoundDagTemp input, 227BoundDagTemp temp = binding.TempContainingValue; 331BoundDagTemp input, 338private readonly struct TestInputOutputInfo(BoundDagTemp dagTemp, BoundPropertySubpatternMember? unionValue) 340public readonly BoundDagTemp DagTemp = dagTemp; 343public static explicit operator TestInputOutputInfo(BoundDagTemp dagTemp) 348public static explicit operator BoundDagTemp(TestInputOutputInfo info) 420private BoundDagTemp PrepareForUnionValuePropertyMatching(ref TestInputOutputInfo input, ArrayBuilder<Tests> tests) 425BoundDagTemp temp = MakeUnionValue(input.DagTemp, unionValue, out BoundDagEvaluation valueEvaluation); 430return (BoundDagTemp)input; 433private BoundDagTemp MakeUnionValue(BoundDagTemp input, BoundPropertySubpatternMember unionValue, out BoundDagEvaluation valueEvaluation) 438var result = valueEvaluation.MakeResultTemp(); 444internal static bool IsUnionValue(BoundDagTemp input, [NotNullWhen(true)] out BoundDagTemp? unionInstance) 472internal static bool IsUnionValueEvaluation(BoundDagEvaluation? source, [NotNullWhen(true)] out BoundDagTemp? unionInstance) 514var valueAsITuple = PrepareForUnionValuePropertyMatching(ref inputInfo, tests); 519var lengthTemp = lengthEvaluation.MakeResultTemp(); 522var getItemPropertyInput = OriginalInput(valueAsITuple, getItemProperty); 527var indexTemp = indexEvaluation.MakeResultTemp(); 540private BoundDagTemp OriginalInput(BoundDagTemp input, Symbol symbol) 564internal static BoundDagTemp OriginalInput(BoundDagTemp input) 601BoundDagTemp input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests); 626BoundDagTemp input, 640private static bool IsUnionTryGetValueReturn(BoundDagTemp input, [NotNullWhen(true)] out TypeSymbol? targetType, [NotNullWhen(true)] out BoundDagTemp? unionInstance, [NotNullWhen(true)] out BoundDagDeconstructEvaluation? tryGetValueEvaluation) 665internal static bool IsUnionTryGetValueEvaluation([NotNullWhen(true)] BoundDagEvaluation? evaluation, [NotNullWhen(true)] out TypeSymbol? targetType, [NotNullWhen(true)] out BoundDagTemp? unionInstance) 692internal static bool IsUnionTryGetValueValue(BoundDagTemp input, [NotNullWhen(true)] out BoundDagTemp? unionInstance) 714private static bool IsUnionHasValue(BoundDagTemp input, [NotNullWhen(true)] out BoundDagTemp? unionInstance) 757var temp = hasValueEvaluation.MakeResultTemp(); 802var boolResult = deconstructEvaluation.MakeReturnValueTemp(); 810var outParameterTemp = deconstructEvaluation.MakeFirstOutParameterTemp(); 817BoundDagTemp typeEvaluationTemp = typeEvaluation.MakeResultTemp(); 836BoundDagTemp input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests); 880BoundDagTemp input = PrepareForUnionValuePropertyMatching(ref inputInfo, builder); 896BoundDagTemp input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests); 910BoundDagTemp input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests); 918private static Tests MakeConstantTest(SyntaxNode syntax, BoundDagTemp input, ConstantValue constantValue) 949BoundDagTemp input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests); 954ArrayBuilder<BoundDagTemp> outParamTemps = evaluation.MakeOutParameterTemps(); 978BoundDagTemp input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests); 984var element = evaluation.MakeResultTemp(); 993BoundDagTemp input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests); 1003BoundDagTemp input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests); 1005BoundDagTemp currentInput = input; 1036BoundDagTemp input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests); 1044bool tryMakeTestsForSubpatternMemberReceiver(BoundPropertySubpattern subpattern, BoundPropertySubpatternMember member, ref BoundDagTemp input) 1052input = (BoundDagTemp)MakeConvertToType((TestInputOutputInfo)input, member.Syntax, member.Receiver.Type.StrippedType(), isExplicitTest: false, tests); 1063bool tryMakeTestsForSubpatternMember(BoundPropertySubpattern subpattern, [NotNullWhen(true)] BoundPropertySubpatternMember? member, ref BoundDagTemp input, bool isLengthOrCount) 1158BoundDagTemp input = PrepareForUnionValuePropertyMatching(ref inputInfo, builder); 1189BoundDagTemp output = PrepareForUnionValuePropertyMatching(ref outputInfo, tests); 1306DagState uniquifyState(FrozenArrayBuilder<StateForCase> cases, ImmutableDictionary<BoundDagTemp, IValueSet> remainingValues) 1319var newRemainingValues = ImmutableDictionary.CreateBuilder<BoundDagTemp, IValueSet>(); 1365ImmutableDictionary<BoundDagTemp, IValueSet>.Empty); 1442var tempToIndex = PooledDictionary<BoundDagTemp, int>.GetInstance(); 1519OneOrMany<BoundDagTemp> outputs = eval.AllOutputs(); 1522foreach (var temp in outputs) 1575static void markTempsUsedInBindings(PooledDictionary<BoundDagTemp, int> tempToIndex, ref int nextTempIndex, ref BitVector usedTemps, StateForCase stateForCase) 1583static void markUsedTemp(PooledDictionary<BoundDagTemp, int> tempToIndex, ref int nextTempIndex, ref BitVector usedTemps, BoundDagTemp temp) 1595static void markAllInputsUsed(PooledDictionary<BoundDagTemp, int> tempToIndex, ref int nextTempIndex, ref BitVector usedTemps, BoundDagTest test) 1597foreach (var temp in test.AllInputs()) 1722out ImmutableDictionary<BoundDagTemp, IValueSet> whenTrueValues, 1724out ImmutableDictionary<BoundDagTemp, IValueSet> whenFalseValues, 1759ImmutableDictionary<BoundDagTemp, IValueSet> whenTrueValues, 1760ImmutableDictionary<BoundDagTemp, IValueSet> whenFalseValues, 1764ImmutableDictionary<BoundDagTemp, IValueSet> values, 1786ImmutableDictionary<BoundDagTemp, IValueSet> whenTrueValues, 1787ImmutableDictionary<BoundDagTemp, IValueSet> whenFalseValues, 1792var input = test.Input; 1805ImmutableDictionary<BoundDagTemp, IValueSet> whenTrueValues, 1806ImmutableDictionary<BoundDagTemp, IValueSet> whenFalseValues, 1809splitValues<TValueSet>(ImmutableDictionary<BoundDagTemp, IValueSet> values, BoundDagTemp input, TValueSet fromTestPassing) where TValueSet : IValueSet 1823ImmutableDictionary<BoundDagTemp, IValueSet> whenTrueValues, 1824ImmutableDictionary<BoundDagTemp, IValueSet> whenFalseValues, 1849ImmutableDictionary<BoundDagTemp, IValueSet> whenTrueValues, 1850ImmutableDictionary<BoundDagTemp, IValueSet> whenFalseValues, 1870ImmutableDictionary<BoundDagTemp, IValueSet> whenTrueValues, 1871ImmutableDictionary<BoundDagTemp, IValueSet> whenFalseValues, 1891private static (BoundDagTemp? lengthTemp, int offset) TryGetTopLevelLengthTemp(BoundDagPropertyEvaluation e) 1895BoundDagTemp input = e.Input; 1896BoundDagTemp? lengthTemp = null; 1907internal static (BoundDagTemp input, BoundDagTemp lengthTemp, int index) GetCanonicalInput(BoundDagIndexerEvaluation e) 1910BoundDagTemp input = e.Input; 1911BoundDagTemp lengthTemp = e.LengthTemp; 2201BoundDagTemp? testUnionInstance; 2213BoundDagTemp? otherUnionInstance; 2310static UnionTestKind getUnionTestKind(BoundDagTest test, out TypeSymbol? targetType, out BoundDagTemp? testUnionInstance) 2348static bool isAnyUnionValueNullTest(BoundDagTest test, [NotNullWhen(true)] out BoundDagTemp? testUnionInstance) 2354static bool isAnyUnionValueNonNullTest(BoundDagTest test, [NotNullWhen(true)] out BoundDagTemp? testUnionInstance) 2360static bool isAnyUnionValueTypeTest(BoundDagTest test, [NotNullWhen(true)] out TypeSymbol? targetType, [NotNullWhen(true)] out BoundDagTemp? testUnionInstance) 2373static bool isUnionHasValueTest(BoundDagTest test, out bool sense, [NotNullWhen(true)] out BoundDagTemp? testUnionInstance) 2391private static bool IsUnionTryGetValueTest(BoundDagTest test, [NotNullWhen(true)] out TypeSymbol? targetType, [NotNullWhen(true)] out BoundDagTemp? testUnionInstance, [NotNullWhen(true)] out BoundDagDeconstructEvaluation? tryGetValueEvaluation) 2431private static bool IsSameEntity(BoundDagTemp input1, BoundDagTemp input2) 2433BoundDagTemp s1Input = OriginalInput(input1); 2434BoundDagTemp s2Input = OriginalInput(input2); 2452if (IsAnyUnionValue(s1.Input, out BoundDagTemp? s1UnionInstance) && 2453IsAnyUnionValue(s2.Input, out BoundDagTemp? s2UnionInstance)) 2513(s1Input, BoundDagTemp s1LengthTemp, int s1Index) = GetCanonicalInput(s1); 2514(s2Input, BoundDagTemp s2LengthTemp, int s2Index) = GetCanonicalInput(s2); 2571(BoundDagTemp s1Input, BoundDagTemp s1LengthTemp, int s1Index) = GetCanonicalInput(s1); 2572(BoundDagTemp s2Input, BoundDagTemp s2LengthTemp, int s2Index) = GetCanonicalInput(s2); 2592BoundDagTemp s1Input = NotTypeEvaluationInput(s1.Input.Source); 2593BoundDagTemp s2Input = NotTypeEvaluationInput(s2.Input.Source); 2605BoundDagTemp s1OriginalInput = NotTypeEvaluationInput(s1); 2606BoundDagTemp s2OriginalInput = NotTypeEvaluationInput(s2); 2614if (IsAnyUnionValue(s1OriginalInput, out BoundDagTemp? s1UnionInstance) && 2615IsAnyUnionValue(s2OriginalInput, out BoundDagTemp? s2UnionInstance)) 2662private static bool IsAnyUnionValue(BoundDagTemp input, [NotNullWhen(true)] out BoundDagTemp? unionInstance) 2672internal static BoundDagTemp NotTypeEvaluationInput(BoundDagTemp input) 2683internal static BoundDagTemp NotTypeEvaluationInput(BoundDagTest test) 2834string tempName(BoundDagTemp t) 3030/// A <see cref="BoundDagTemp"/> absent from this dictionary means that all values of the type are possible. 3032public ImmutableDictionary<BoundDagTemp, IValueSet> RemainingValues { get; private set; } = null!; 3061public static DagState GetInstance(FrozenArrayBuilder<StateForCase> cases, ImmutableDictionary<BoundDagTemp, IValueSet> remainingValues) 3105internal void UpdateRemainingValues(ImmutableDictionary<BoundDagTemp, IValueSet> newRemainingValues) 3264public readonly ImmutableDictionary<BoundDagTemp, BoundDagTemp> FinalTempMap; 3274ImmutableDictionary<BoundDagTemp, BoundDagTemp> finalTempMap, 3287protected abstract RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder dagBuilder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation e); 3291return RemoveEvaluationAndUpdateTempReferences(dagBuilder, state, bindings, ImmutableDictionary<BoundDagTemp, BoundDagTemp>.Empty, e); 3294protected Tests RemoveEvaluationAndUpdateTempReferences(DecisionDagBuilder dagBuilder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation e) 3340private static void AddBindingsPatchingAssignments(ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<BoundDagTemp, BoundDagTemp> oldTempMap, ImmutableDictionary<BoundDagTemp, BoundDagTemp> newTempMap, ArrayBuilder<Tests> assignments) 3349if (TryGetTempReplacement(newTempMap, b.TempContainingValue, out BoundDagTemp? useValueFrom)) 3351if (!TryGetTempReplacement(oldTempMap, b.TempContainingValue, out BoundDagTemp? oldReplacement) || 3361private static bool TryGetTempReplacement(ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagTemp oldTemp, [NotNullWhen(true)] out BoundDagTemp? newTemp) 3366while (tempMap.TryGetValue(newTemp, out BoundDagTemp? nextTemp)) 3403protected override RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder builder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation e) 3427protected override RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder builder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation e) 3531if (TryGetTopLevelLengthTemp(e) is (BoundDagTemp lengthTemp, int offset)) 3574protected override RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder builder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation e) 3658static Tests removeEvaluation(One tests, DecisionDagBuilder builder, DagState state, ref ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation e, out Tests? condition) 3698ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, 3732private static Tests RemoveSimpleEvaluationWithResultTemp(One tests, ref ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation e1) 3744private static void AddResultTempReplacement(ref ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation oldEval, BoundDagEvaluation newEval) 3749private static void AddTempReplacement(ref ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagTemp oldTemp, BoundDagTemp newTemp) 3751var current = newTemp; 3766private static Tests RemoveDeconstructEvaluation(One tests, ref ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagDeconstructEvaluation e1) 3778private static void AddOutParameterTempsReplacement(ref ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagDeconstructEvaluation oldDeconstruct, BoundDagDeconstructEvaluation newDeconstruct) 3780ArrayBuilder<BoundDagTemp> newOutParamTemps = newDeconstruct.MakeOutParameterTemps(); 3781ArrayBuilder<BoundDagTemp> oldOutParamTemps = oldDeconstruct.MakeOutParameterTemps(); 3790private static Tests RemoveTypeEvaluation(One tests, DecisionDagBuilder dagBuilder, ref ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagTypeEvaluation e1) 3804BoundDagTemp e1Input = NotTypeEvaluationInput(e1); 3845BoundDagTemp oldTemp = typeEval.MakeResultTemp(); 3846BoundDagTemp newTemp = newTypeEval.MakeResultTemp(); 3867private static Tests RemoveIndexerEvaluation(One tests, DecisionDagBuilder dagBuilder, DagState state, ref ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagIndexerEvaluation s1, out Tests? condition) 3877(BoundDagTemp s1Input, BoundDagTemp s1LengthTemp, int s1Index) = GetCanonicalInput(s1); 3878(BoundDagTemp s2Input, BoundDagTemp s2LengthTemp, int s2Index) = GetCanonicalInput(s2); 3925private static BoundDagTest UpdateDagTempReferences(BoundDagTest test, ref ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap) 3943if (!TryGetTempReplacement(tempMap, eval.Input, out BoundDagTemp? replacement)) 3955if (!TryGetTempReplacement(tempMap, indexer.Input, out BoundDagTemp? inputReplacement)) 3960if (!TryGetTempReplacement(tempMap, indexer.LengthTemp, out BoundDagTemp? lengthReplacement)) 3971if (!TryGetTempReplacement(tempMap, slice.Input, out BoundDagTemp? inputReplacement)) 3976if (!TryGetTempReplacement(tempMap, slice.LengthTemp, out BoundDagTemp? lengthReplacement)) 3987if (!TryGetTempReplacement(tempMap, assignment.Input, out BoundDagTemp? inputReplacement)) 3997if (!TryGetTempReplacement(tempMap, deconstruct.Input, out BoundDagTemp? replacement)) 4019if (!TryGetTempReplacement(tempMap, test.Input, out BoundDagTemp? replacement)) 4040public readonly BoundDagTemp Input; 4044public ValueSet(BoundDagTemp input, IConstantValueSet values, SyntaxNode syntax) 4109static bool isInputRelated(BoundDagTest test, BoundDagTemp valueSetInput) 4157ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation e) 4160if (TryGetTempReplacement(tempMap, Input, out BoundDagTemp? replacement)) 4209protected override RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder builder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation e) 4330protected sealed override RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder dagBuilder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation e) 4336ImmutableDictionary<BoundDagTemp, BoundDagTemp> TempMapToRestore 4964BoundDagTemp input;
Binder\PatternExplainer.cs (23)
243BoundDagTemp rootIdentifier, 276static string samplePatternFromOtherPaths(Binder binder, BoundDagTemp rootIdentifier, BoundDecisionDagNode rootNode, 311out Dictionary<BoundDagTemp, ArrayBuilder<(BoundDagTest, bool)>> constraints, 312out Dictionary<BoundDagTemp, ArrayBuilder<BoundDagEvaluation>> evaluations) 314constraints = new Dictionary<BoundDagTemp, ArrayBuilder<(BoundDagTest, bool)>>(); 315evaluations = new Dictionary<BoundDagTemp, ArrayBuilder<BoundDagEvaluation>>(); 326BoundDagTemp temp = test.Input; 344BoundDagTemp temp = e.Evaluation.Input; 359BoundDagTemp input, 360Dictionary<BoundDagTemp, ArrayBuilder<(BoundDagTest test, bool sense)>> constraintMap, 361Dictionary<BoundDagTemp, ArrayBuilder<BoundDagEvaluation>> evaluationMap, 379static ImmutableArray<T> getArray<T>(Dictionary<BoundDagTemp, ArrayBuilder<T>> map, BoundDagTemp temp) 426var typedTemp = te.MakeResultTemp(); 442var typedTemp = te.MakeResultTemp(); 486var lengthTemp = lengthOrCount.MakeResultTemp(); 514var indexerTemp = e.MakeResultTemp(); 533var sliceTemp = slice.MakeResultTemp(); 562var elementTemp = e.MakeResultTemp(); 686ArrayBuilder<BoundDagTemp> outParamTemps = e.MakeOutParameterTemps(); 690foreach (var elementTemp in outParamTemps) 722var subInput = e.MakeResultTemp(); 729var subInput = e.MakeResultTemp();
Binder\SwitchExpressionBinder.cs (1)
106this, BoundDagTemp.ForOriginalInput(boundInputExpression), nodes, n, nullPaths: false, reachabilityInfo: null, out bool requiresFalseWhenClause, out bool unnamedEnumValue);
BoundTree\BoundDagEvaluation.cs (48)
86public sealed override BoundDagTest UpdateTestImpl(BoundDagTemp input) => Update(input); 88public abstract BoundDagTemp MakeResultTemp(); 89public new BoundDagEvaluation Update(BoundDagTemp input) => UpdateEvaluationImpl(input); 90public abstract BoundDagEvaluation UpdateEvaluationImpl(BoundDagTemp input); 92public virtual OneOrMany<BoundDagTemp> AllOutputs() 94return new OneOrMany<BoundDagTemp>(MakeResultTemp()); 133public override BoundDagTemp MakeResultTemp() 138public override BoundDagEvaluation UpdateEvaluationImpl(BoundDagTemp input) => Update(input); 139public new BoundDagTypeEvaluation Update(BoundDagTemp input) 148if (DecisionDagBuilder.IsUnionTryGetValueEvaluation(nonTypeEvaluation, out _, out BoundDagTemp? unionInstance) || 160public override BoundDagTemp MakeResultTemp() 165public override BoundDagEvaluation UpdateEvaluationImpl(BoundDagTemp input) => Update(input); 166public new BoundDagFieldEvaluation Update(BoundDagTemp input) 174public override BoundDagTemp MakeResultTemp() 179public override BoundDagEvaluation UpdateEvaluationImpl(BoundDagTemp input) => Update(input); 180public new BoundDagPropertyEvaluation Update(BoundDagTemp input) 196public override BoundDagTemp MakeResultTemp() 202public override BoundDagEvaluation UpdateEvaluationImpl(BoundDagTemp input) => Update(input); 203public new BoundDagIndexEvaluation Update(BoundDagTemp input) 228public override BoundDagTemp MakeResultTemp() 233public override BoundDagEvaluation UpdateEvaluationImpl(BoundDagTemp input) => Update(input); 234public new BoundDagIndexerEvaluation Update(BoundDagTemp input) 239public BoundDagIndexerEvaluation Update(BoundDagTemp lengthTemp, BoundDagTemp input) 244public override OneOrMany<BoundDagTemp> AllInputs() 246return new OneOrMany<BoundDagTemp>([Input, LengthTemp]); 265public override BoundDagTemp MakeResultTemp() 270public override BoundDagEvaluation UpdateEvaluationImpl(BoundDagTemp input) => Update(input); 271public new BoundDagSliceEvaluation Update(BoundDagTemp input) 276public BoundDagSliceEvaluation Update(BoundDagTemp lengthTemp, BoundDagTemp input) 281public override OneOrMany<BoundDagTemp> AllInputs() 283return new OneOrMany<BoundDagTemp>([Input, LengthTemp]); 304public override BoundDagTemp MakeResultTemp() 309public override BoundDagEvaluation UpdateEvaluationImpl(BoundDagTemp input) => Update(input); 310public new BoundDagAssignmentEvaluation Update(BoundDagTemp input) 318public ArrayBuilder<BoundDagTemp> MakeOutParameterTemps() 323var builder = ArrayBuilder<BoundDagTemp>.GetInstance(count); 334public BoundDagTemp MakeFirstOutParameterTemp() 343public BoundDagTemp MakeReturnValueTemp() 349public override BoundDagTemp MakeResultTemp() 354public override BoundDagEvaluation UpdateEvaluationImpl(BoundDagTemp input) => Update(input); 355public new BoundDagDeconstructEvaluation Update(BoundDagTemp input) 360public override OneOrMany<BoundDagTemp> AllOutputs() 371return new OneOrMany<BoundDagTemp>(one); 374return new OneOrMany<BoundDagTemp>(builder.ToImmutableAndFree()); 386public override BoundDagTemp MakeResultTemp() 391public override BoundDagEvaluation UpdateEvaluationImpl(BoundDagTemp input) => Update(input);
BoundTree\BoundDagRelationalTest.cs (2)
11public override BoundDagTest UpdateTestImpl(BoundDagTemp input) => Update(input); 12public new BoundDagRelationalTest Update(BoundDagTemp input)
BoundTree\BoundDagTemp.cs (4)
21public static BoundDagTemp ForOriginalInput(SyntaxNode syntax, TypeSymbol type) => new BoundDagTemp(syntax, type, source: null, 0); 23public override bool Equals(object? obj) => obj is BoundDagTemp other && this.Equals(other); 25public bool Equals(BoundDagTemp other) 40public bool IsEquivalentTo(BoundDagTemp other)
BoundTree\BoundDagTest.cs (11)
51public BoundDagTest Update(BoundDagTemp input) => UpdateTestImpl(input); 52public abstract BoundDagTest UpdateTestImpl(BoundDagTemp input); 54public virtual OneOrMany<BoundDagTemp> AllInputs() 56return new OneOrMany<BoundDagTemp>(Input); 140public override BoundDagTest UpdateTestImpl(BoundDagTemp input) => Update(input); 141public new BoundDagValueTest Update(BoundDagTemp input) 149public override BoundDagTest UpdateTestImpl(BoundDagTemp input) => Update(input); 154public override BoundDagTest UpdateTestImpl(BoundDagTemp input) => Update(input); 155public new BoundDagNonNullTest Update(BoundDagTemp input) 163public override BoundDagTest UpdateTestImpl(BoundDagTemp input) => Update(input); 164public new BoundDagTypeTest Update(BoundDagTemp input)
BoundTree\BoundPatternBinding.cs (2)
15public readonly BoundDagTemp TempContainingValue; 16public BoundPatternBinding(BoundExpression variableAccess, BoundDagTemp tempContainingValue)
BoundTree\Constructors.cs (1)
649public static BoundDagTemp ForOriginalInput(BoundExpression expr) => new BoundDagTemp(expr.Syntax, expr.Type!, source: null);
FlowAnalysis\NullableWalker_Patterns.cs (16)
389var rootTemp = BoundDagTemp.ForOriginalInput(expression); 413var tempMap = PooledDictionary<BoundDagTemp, (int slot, TypeSymbol type)>.GetInstance(); 452ArrayBuilder<BoundDagTemp> outParamTemps = e.MakeOutParameterTemps(); 453foreach (var output in outParamTemps) 462var output = e.MakeResultTemp(); 471var output = e.MakeResultTemp(); 482var output = e.MakeResultTemp(); 496var output = e.MakeResultTemp(); 505var output = e.MakeResultTemp(); 515var output = e.MakeResultTemp(); 626var tempSource = binding.TempContainingValue; 681int getOrMakeAndRegisterDagTempSlot(BoundDagTemp output) 853void addToTempMap(BoundDagTemp output, int slot, TypeSymbol type) 954int makeDagTempSlot(TypeWithAnnotations type, BoundDagTemp temp) 1095_binder, BoundDagTemp.ForOriginalInput(node.Expression), nodes, leaf, nullPaths: true, reachabilityInfo, out bool requiresFalseWhenClause, out _);
Generated\BoundNodes.xml.Generated.cs (98)
5226protected BoundDagTest(BoundKind kind, SyntaxNode syntax, BoundDagTemp input, bool hasErrors = false) 5235public BoundDagTemp Input { get; } 5258public BoundDagTemp Update(TypeSymbol type, BoundDagEvaluation? source, int index) 5262var result = new BoundDagTemp(this.Syntax, type, source, index, this.HasErrors); 5272public BoundDagTypeTest(SyntaxNode syntax, TypeSymbol type, BoundDagTemp input, bool hasErrors = false) 5287public BoundDagTypeTest Update(TypeSymbol type, BoundDagTemp input) 5301public BoundDagNonNullTest(SyntaxNode syntax, bool isExplicitTest, BoundDagTemp input, bool hasErrors = false) 5315public BoundDagNonNullTest Update(bool isExplicitTest, BoundDagTemp input) 5329public BoundDagExplicitNullTest(SyntaxNode syntax, BoundDagTemp input, bool hasErrors = false) 5341public new BoundDagExplicitNullTest Update(BoundDagTemp input) 5355public BoundDagValueTest(SyntaxNode syntax, ConstantValue value, BoundDagTemp input, bool hasErrors = false) 5370public BoundDagValueTest Update(ConstantValue value, BoundDagTemp input) 5384public BoundDagRelationalTest(SyntaxNode syntax, BinaryOperatorKind operatorKind, ConstantValue value, BoundDagTemp input, bool hasErrors = false) 5401public BoundDagRelationalTest Update(BinaryOperatorKind operatorKind, ConstantValue value, BoundDagTemp input) 5415protected BoundDagEvaluation(BoundKind kind, SyntaxNode syntax, BoundDagTemp input, bool hasErrors = false) 5427public BoundDagDeconstructEvaluation(SyntaxNode syntax, MethodSymbol deconstructMethod, BoundDagTemp input, bool hasErrors = false) 5442public BoundDagDeconstructEvaluation Update(MethodSymbol deconstructMethod, BoundDagTemp input) 5456public BoundDagTypeEvaluation(SyntaxNode syntax, TypeSymbol type, BoundDagTemp input, bool hasErrors = false) 5471public BoundDagTypeEvaluation Update(TypeSymbol type, BoundDagTemp input) 5485public BoundDagFieldEvaluation(SyntaxNode syntax, FieldSymbol field, BoundDagTemp input, bool hasErrors = false) 5500public BoundDagFieldEvaluation Update(FieldSymbol field, BoundDagTemp input) 5514public BoundDagPropertyEvaluation(SyntaxNode syntax, PropertySymbol property, bool isLengthOrCount, BoundDagTemp input, bool hasErrors = false) 5531public BoundDagPropertyEvaluation Update(PropertySymbol property, bool isLengthOrCount, BoundDagTemp input) 5545public BoundDagIndexEvaluation(SyntaxNode syntax, PropertySymbol property, int index, BoundDagTemp input, bool hasErrors = false) 5562public BoundDagIndexEvaluation Update(PropertySymbol property, int index, BoundDagTemp input) 5576public BoundDagIndexerEvaluation(SyntaxNode syntax, TypeSymbol indexerType, BoundDagTemp lengthTemp, int index, BoundExpression indexerAccess, BoundListPatternReceiverPlaceholder receiverPlaceholder, BoundListPatternIndexPlaceholder argumentPlaceholder, BoundDagTemp input, bool hasErrors = false) 5600public BoundDagTemp LengthTemp { get; } 5609public BoundDagIndexerEvaluation Update(TypeSymbol indexerType, BoundDagTemp lengthTemp, int index, BoundExpression indexerAccess, BoundListPatternReceiverPlaceholder receiverPlaceholder, BoundListPatternIndexPlaceholder argumentPlaceholder, BoundDagTemp input) 5623public BoundDagSliceEvaluation(SyntaxNode syntax, TypeSymbol sliceType, BoundDagTemp lengthTemp, int startIndex, int endIndex, BoundExpression indexerAccess, BoundSlicePatternReceiverPlaceholder receiverPlaceholder, BoundSlicePatternRangePlaceholder argumentPlaceholder, BoundDagTemp input, bool hasErrors = false) 5648public BoundDagTemp LengthTemp { get; } 5658public BoundDagSliceEvaluation Update(TypeSymbol sliceType, BoundDagTemp lengthTemp, int startIndex, int endIndex, BoundExpression indexerAccess, BoundSlicePatternReceiverPlaceholder receiverPlaceholder, BoundSlicePatternRangePlaceholder argumentPlaceholder, BoundDagTemp input) 5672public BoundDagAssignmentEvaluation(SyntaxNode syntax, BoundDagTemp target, BoundDagTemp input, bool hasErrors = false) 5682public BoundDagTemp Target { get; } 5687public BoundDagAssignmentEvaluation Update(BoundDagTemp target, BoundDagTemp input) 5701public BoundDagPassThroughEvaluation(SyntaxNode syntax, BoundDagTemp input, bool hasErrors = false) 5713public new BoundDagPassThroughEvaluation Update(BoundDagTemp input) 9353return VisitDagTemp((BoundDagTemp)node, arg); 9698public virtual R VisitDagTemp(BoundDagTemp node, A arg) => this.DefaultVisit(node, arg); 9939public virtual BoundNode? VisitDagTemp(BoundDagTemp node) => this.DefaultVisit(node); 10591public override BoundNode? VisitDagTemp(BoundDagTemp node) 11983public override BoundNode? VisitDagTemp(BoundDagTemp node) 11991BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 11997BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12002BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12007BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12012BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12018BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12023BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12030BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12036BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12042BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12047BoundDagTemp lengthTemp = (BoundDagTemp)this.Visit(node.LengthTemp); 12051BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12057BoundDagTemp lengthTemp = (BoundDagTemp)this.Visit(node.LengthTemp); 12061BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12067BoundDagTemp target = (BoundDagTemp)this.Visit(node.Target); 12068BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12073BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 14178BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 14185BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 14192BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 14199BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 14206BoundDagTemp lengthTemp = (BoundDagTemp)this.Visit(node.LengthTemp); 14210BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 14217BoundDagTemp lengthTemp = (BoundDagTemp)this.Visit(node.LengthTemp); 14221BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 16676public override TreeDumperNode VisitDagTemp(BoundDagTemp node, object? arg) => new TreeDumperNode("dagTemp", null, new TreeDumperNode[]
Lowering\LocalRewriter\LocalRewriter.DecisionDagRewriter.cs (4)
360BoundExpression inputTemp = _tempAllocator.GetTemp(BoundDagTemp.ForOriginalInput(loweredSwitchGoverningExpression)); 504var input = ((BoundTestDecisionDagNode)node).Test.Input; 552BoundDagTemp input) 561BoundDagTemp input,
Lowering\LocalRewriter\LocalRewriter.PatternLocalRewriter.cs (18)
56private readonly PooledDictionary<BoundDagTemp, BoundExpression> _map = PooledDictionary<BoundDagTemp, BoundExpression>.GetInstance(); 94public BoundExpression GetTemp(BoundDagTemp dagTemp) 115public bool TrySetTemp(BoundDagTemp dagTemp, BoundExpression translation) 143var outputTemp = f.MakeResultTemp(); 153var outputTemp = p.MakeResultTemp(); 185ArrayBuilder<BoundDagTemp> outParamTemps = d.MakeOutParameterTemps(); 186foreach (var outputTemp in outParamTemps) 225var outputTemp = t.MakeResultTemp(); 264var outputTemp = e.MakeResultTemp(); 289var outputTemp = e.MakeResultTemp(); 315var outputTemp = e.MakeResultTemp(); 553var inputDagTemp = BoundDagTemp.ForOriginalInput(loweredInput); 654var originalInput = BoundDagTemp.ForOriginalInput(loweredInput.Syntax, loweredInput.Type); 662var temp = fieldFetchEvaluation.MakeResultTemp(); 675void storeToTemp(BoundDagTemp temp, BoundExpression expr)
Utilities\ValueSetFactory.cs (3)
65public static IConstantValueSetFactory? ForInput(BoundDagTemp input) 72public static ITypeUnionValueSetFactory? TypeUnionValueSetFactoryForInput(CSharpCompilation compilation, BoundDagTemp input) 74if (DecisionDagBuilder.IsUnionValue(input, out BoundDagTemp? unionInstance))