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)
22public 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);
460 references to BoundDagTemp
Microsoft.CodeAnalysis.CSharp (460)
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 (214)
136var rootIdentifier = BoundDagTemp.ForOriginalInput(inputExpression); 149var rootIdentifier = BoundDagTemp.ForOriginalInput(switchGoverningExpression); 174var rootIdentifier = BoundDagTemp.ForOriginalInput(switchExpressionInput); 191BoundDagTemp input, 207BoundDagTemp input, 228BoundDagTemp temp = binding.TempContainingValue; 332BoundDagTemp input, 339private readonly struct TestInputOutputInfo(BoundDagTemp dagTemp, BoundPropertySubpatternMember? unionValue) 341public readonly BoundDagTemp DagTemp = dagTemp; 344public static explicit operator TestInputOutputInfo(BoundDagTemp dagTemp) 349public static explicit operator BoundDagTemp(TestInputOutputInfo info) 421private BoundDagTemp PrepareForUnionValuePropertyMatching(ref TestInputOutputInfo input, ArrayBuilder<Tests> tests) 426BoundDagTemp temp = MakeUnionValue(input.DagTemp, unionValue, out BoundDagEvaluation valueEvaluation); 431return (BoundDagTemp)input; 434private BoundDagTemp MakeUnionValue(BoundDagTemp input, BoundPropertySubpatternMember unionValue, out BoundDagEvaluation valueEvaluation) 439var result = valueEvaluation.MakeResultTemp(); 445internal static bool IsUnionValue(BoundDagTemp input, [NotNullWhen(true)] out BoundDagTemp? unionInstance) 473internal static bool IsUnionValueEvaluation(BoundDagEvaluation? source, [NotNullWhen(true)] out BoundDagTemp? unionInstance) 515var valueAsITuple = PrepareForUnionValuePropertyMatching(ref inputInfo, tests); 520var lengthTemp = lengthEvaluation.MakeResultTemp(); 523var getItemPropertyInput = OriginalInput(valueAsITuple, getItemProperty); 528var indexTemp = indexEvaluation.MakeResultTemp(); 541private BoundDagTemp OriginalInput(BoundDagTemp input, Symbol symbol) 565internal static BoundDagTemp OriginalInput(BoundDagTemp input) 602BoundDagTemp input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests); 627BoundDagTemp input, 641private static bool IsUnionTryGetValueReturn(BoundDagTemp input, [NotNullWhen(true)] out TypeSymbol? targetType, [NotNullWhen(true)] out BoundDagTemp? unionInstance, [NotNullWhen(true)] out BoundDagDeconstructEvaluation? tryGetValueEvaluation) 666internal static bool IsUnionTryGetValueEvaluation([NotNullWhen(true)] BoundDagEvaluation? evaluation, [NotNullWhen(true)] out TypeSymbol? targetType, [NotNullWhen(true)] out BoundDagTemp? unionInstance) 693internal static bool IsUnionTryGetValueValue(BoundDagTemp input, [NotNullWhen(true)] out BoundDagTemp? unionInstance) 715private static bool IsUnionHasValue(BoundDagTemp input, [NotNullWhen(true)] out BoundDagTemp? unionInstance) 758var temp = hasValueEvaluation.MakeResultTemp(); 803var boolResult = deconstructEvaluation.MakeReturnValueTemp(); 811var outParameterTemp = deconstructEvaluation.MakeFirstOutParameterTemp(); 818BoundDagTemp typeEvaluationTemp = typeEvaluation.MakeResultTemp(); 837BoundDagTemp input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests); 881BoundDagTemp input = PrepareForUnionValuePropertyMatching(ref inputInfo, builder); 897BoundDagTemp input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests); 911BoundDagTemp input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests); 919private static Tests MakeConstantTest(SyntaxNode syntax, BoundDagTemp input, ConstantValue constantValue) 950BoundDagTemp input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests); 955ArrayBuilder<BoundDagTemp> outParamTemps = evaluation.MakeOutParameterTemps(); 979BoundDagTemp input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests); 985var element = evaluation.MakeResultTemp(); 994BoundDagTemp input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests); 1004BoundDagTemp input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests); 1006BoundDagTemp currentInput = input; 1037BoundDagTemp input = PrepareForUnionValuePropertyMatching(ref inputInfo, tests); 1045bool tryMakeTestsForSubpatternMemberReceiver(BoundPropertySubpattern subpattern, BoundPropertySubpatternMember member, ref BoundDagTemp input) 1053input = (BoundDagTemp)MakeConvertToType((TestInputOutputInfo)input, member.Syntax, member.Receiver.Type.StrippedType(), isExplicitTest: false, tests); 1064bool tryMakeTestsForSubpatternMember(BoundPropertySubpattern subpattern, [NotNullWhen(true)] BoundPropertySubpatternMember? member, ref BoundDagTemp input, bool isLengthOrCount) 1159BoundDagTemp input = PrepareForUnionValuePropertyMatching(ref inputInfo, builder); 1190BoundDagTemp output = PrepareForUnionValuePropertyMatching(ref outputInfo, tests); 1307DagState uniquifyState(FrozenArrayBuilder<StateForCase> cases, ImmutableDictionary<BoundDagTemp, IValueSet> remainingValues) 1320var newRemainingValues = ImmutableDictionary.CreateBuilder<BoundDagTemp, IValueSet>(); 1366ImmutableDictionary<BoundDagTemp, IValueSet>.Empty); 1443var tempToIndex = PooledDictionary<BoundDagTemp, int>.GetInstance(); 1520OneOrMany<BoundDagTemp> outputs = eval.AllOutputs(); 1523foreach (var temp in outputs) 1576static void markTempsUsedInBindings(PooledDictionary<BoundDagTemp, int> tempToIndex, ref int nextTempIndex, ref BitVector usedTemps, StateForCase stateForCase) 1584static void markUsedTemp(PooledDictionary<BoundDagTemp, int> tempToIndex, ref int nextTempIndex, ref BitVector usedTemps, BoundDagTemp temp) 1596static void markAllInputsUsed(PooledDictionary<BoundDagTemp, int> tempToIndex, ref int nextTempIndex, ref BitVector usedTemps, BoundDagTest test) 1598foreach (var temp in test.AllInputs()) 1723out ImmutableDictionary<BoundDagTemp, IValueSet> whenTrueValues, 1725out ImmutableDictionary<BoundDagTemp, IValueSet> whenFalseValues, 1760ImmutableDictionary<BoundDagTemp, IValueSet> whenTrueValues, 1761ImmutableDictionary<BoundDagTemp, IValueSet> whenFalseValues, 1765ImmutableDictionary<BoundDagTemp, IValueSet> values, 1787ImmutableDictionary<BoundDagTemp, IValueSet> whenTrueValues, 1788ImmutableDictionary<BoundDagTemp, IValueSet> whenFalseValues, 1793var input = test.Input; 1806ImmutableDictionary<BoundDagTemp, IValueSet> whenTrueValues, 1807ImmutableDictionary<BoundDagTemp, IValueSet> whenFalseValues, 1810splitValues<TValueSet>(ImmutableDictionary<BoundDagTemp, IValueSet> values, BoundDagTemp input, TValueSet fromTestPassing) where TValueSet : IValueSet 1824ImmutableDictionary<BoundDagTemp, IValueSet> whenTrueValues, 1825ImmutableDictionary<BoundDagTemp, IValueSet> whenFalseValues, 1850ImmutableDictionary<BoundDagTemp, IValueSet> whenTrueValues, 1851ImmutableDictionary<BoundDagTemp, IValueSet> whenFalseValues, 1871ImmutableDictionary<BoundDagTemp, IValueSet> whenTrueValues, 1872ImmutableDictionary<BoundDagTemp, IValueSet> whenFalseValues, 1892private static (BoundDagTemp? lengthTemp, int offset) TryGetTopLevelLengthTemp(BoundDagPropertyEvaluation e) 1896BoundDagTemp input = e.Input; 1897BoundDagTemp? lengthTemp = null; 1908internal static (BoundDagTemp input, BoundDagTemp lengthTemp, int index) GetCanonicalInput(BoundDagIndexerEvaluation e) 1911BoundDagTemp input = e.Input; 1912BoundDagTemp lengthTemp = e.LengthTemp; 2202BoundDagTemp? testUnionInstance; 2214BoundDagTemp? otherUnionInstance; 2311static UnionTestKind getUnionTestKind(BoundDagTest test, out TypeSymbol? targetType, out BoundDagTemp? testUnionInstance) 2349static bool isAnyUnionValueNullTest(BoundDagTest test, [NotNullWhen(true)] out BoundDagTemp? testUnionInstance) 2355static bool isAnyUnionValueNonNullTest(BoundDagTest test, [NotNullWhen(true)] out BoundDagTemp? testUnionInstance) 2361static bool isAnyUnionValueTypeTest(BoundDagTest test, [NotNullWhen(true)] out TypeSymbol? targetType, [NotNullWhen(true)] out BoundDagTemp? testUnionInstance) 2374static bool isUnionHasValueTest(BoundDagTest test, out bool sense, [NotNullWhen(true)] out BoundDagTemp? testUnionInstance) 2392private static bool IsUnionTryGetValueTest(BoundDagTest test, [NotNullWhen(true)] out TypeSymbol? targetType, [NotNullWhen(true)] out BoundDagTemp? testUnionInstance, [NotNullWhen(true)] out BoundDagDeconstructEvaluation? tryGetValueEvaluation) 2432private static bool IsSameEntity(BoundDagTemp input1, BoundDagTemp input2) 2434BoundDagTemp s1Input = OriginalInput(input1); 2435BoundDagTemp s2Input = OriginalInput(input2); 2453if (IsAnyUnionValue(s1.Input, out BoundDagTemp? s1UnionInstance) && 2454IsAnyUnionValue(s2.Input, out BoundDagTemp? s2UnionInstance)) 2514(s1Input, BoundDagTemp s1LengthTemp, int s1Index) = GetCanonicalInput(s1); 2515(s2Input, BoundDagTemp s2LengthTemp, int s2Index) = GetCanonicalInput(s2); 2572(BoundDagTemp s1Input, BoundDagTemp s1LengthTemp, int s1Index) = GetCanonicalInput(s1); 2573(BoundDagTemp s2Input, BoundDagTemp s2LengthTemp, int s2Index) = GetCanonicalInput(s2); 2593BoundDagTemp s1Input = NotTypeEvaluationInput(s1.Input.Source); 2594BoundDagTemp s2Input = NotTypeEvaluationInput(s2.Input.Source); 2606BoundDagTemp s1OriginalInput = NotTypeEvaluationInput(s1); 2607BoundDagTemp s2OriginalInput = NotTypeEvaluationInput(s2); 2615if (IsAnyUnionValue(s1OriginalInput, out BoundDagTemp? s1UnionInstance) && 2616IsAnyUnionValue(s2OriginalInput, out BoundDagTemp? s2UnionInstance)) 2663private static bool IsAnyUnionValue(BoundDagTemp input, [NotNullWhen(true)] out BoundDagTemp? unionInstance) 2673internal static BoundDagTemp NotTypeEvaluationInput(BoundDagTemp input) 2684internal static BoundDagTemp NotTypeEvaluationInput(BoundDagTest test) 3031/// A <see cref="BoundDagTemp"/> absent from this dictionary means that all values of the type are possible. 3033public ImmutableDictionary<BoundDagTemp, IValueSet> RemainingValues { get; private set; } = null!; 3062public static DagState GetInstance(FrozenArrayBuilder<StateForCase> cases, ImmutableDictionary<BoundDagTemp, IValueSet> remainingValues) 3106internal void UpdateRemainingValues(ImmutableDictionary<BoundDagTemp, IValueSet> newRemainingValues) 3265public readonly ImmutableDictionary<BoundDagTemp, BoundDagTemp> FinalTempMap; 3275ImmutableDictionary<BoundDagTemp, BoundDagTemp> finalTempMap, 3288protected abstract RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder dagBuilder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation e); 3292return RemoveEvaluationAndUpdateTempReferences(dagBuilder, state, bindings, ImmutableDictionary<BoundDagTemp, BoundDagTemp>.Empty, e); 3295protected Tests RemoveEvaluationAndUpdateTempReferences(DecisionDagBuilder dagBuilder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation e) 3341private static void AddBindingsPatchingAssignments(ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<BoundDagTemp, BoundDagTemp> oldTempMap, ImmutableDictionary<BoundDagTemp, BoundDagTemp> newTempMap, ArrayBuilder<Tests> assignments) 3350if (TryGetTempReplacement(newTempMap, b.TempContainingValue, out BoundDagTemp? useValueFrom)) 3352if (!TryGetTempReplacement(oldTempMap, b.TempContainingValue, out BoundDagTemp? oldReplacement) || 3362private static bool TryGetTempReplacement(ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagTemp oldTemp, [NotNullWhen(true)] out BoundDagTemp? newTemp) 3367while (tempMap.TryGetValue(newTemp, out BoundDagTemp? nextTemp)) 3404protected override RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder builder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation e) 3428protected override RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder builder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation e) 3532if (TryGetTopLevelLengthTemp(e) is (BoundDagTemp lengthTemp, int offset)) 3575protected override RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder builder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation e) 3659static Tests removeEvaluation(One tests, DecisionDagBuilder builder, DagState state, ref ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation e, out Tests? condition) 3699ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, 3733private static Tests RemoveSimpleEvaluationWithResultTemp(One tests, ref ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation e1) 3745private static void AddResultTempReplacement(ref ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation oldEval, BoundDagEvaluation newEval) 3750private static void AddTempReplacement(ref ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagTemp oldTemp, BoundDagTemp newTemp) 3752var current = newTemp; 3767private static Tests RemoveDeconstructEvaluation(One tests, ref ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagDeconstructEvaluation e1) 3779private static void AddOutParameterTempsReplacement(ref ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagDeconstructEvaluation oldDeconstruct, BoundDagDeconstructEvaluation newDeconstruct) 3781ArrayBuilder<BoundDagTemp> newOutParamTemps = newDeconstruct.MakeOutParameterTemps(); 3782ArrayBuilder<BoundDagTemp> oldOutParamTemps = oldDeconstruct.MakeOutParameterTemps(); 3791private static Tests RemoveTypeEvaluation(One tests, DecisionDagBuilder dagBuilder, ref ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagTypeEvaluation e1) 3805BoundDagTemp e1Input = NotTypeEvaluationInput(e1); 3846BoundDagTemp oldTemp = typeEval.MakeResultTemp(); 3847BoundDagTemp newTemp = newTypeEval.MakeResultTemp(); 3868private static Tests RemoveIndexerEvaluation(One tests, DecisionDagBuilder dagBuilder, DagState state, ref ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagIndexerEvaluation s1, out Tests? condition) 3878(BoundDagTemp s1Input, BoundDagTemp s1LengthTemp, int s1Index) = GetCanonicalInput(s1); 3879(BoundDagTemp s2Input, BoundDagTemp s2LengthTemp, int s2Index) = GetCanonicalInput(s2); 3926private static BoundDagTest UpdateDagTempReferences(BoundDagTest test, ref ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap) 3944if (!TryGetTempReplacement(tempMap, eval.Input, out BoundDagTemp? replacement)) 3956if (!TryGetTempReplacement(tempMap, indexer.Input, out BoundDagTemp? inputReplacement)) 3961if (!TryGetTempReplacement(tempMap, indexer.LengthTemp, out BoundDagTemp? lengthReplacement)) 3972if (!TryGetTempReplacement(tempMap, slice.Input, out BoundDagTemp? inputReplacement)) 3977if (!TryGetTempReplacement(tempMap, slice.LengthTemp, out BoundDagTemp? lengthReplacement)) 3988if (!TryGetTempReplacement(tempMap, assignment.Input, out BoundDagTemp? inputReplacement)) 3998if (!TryGetTempReplacement(tempMap, deconstruct.Input, out BoundDagTemp? replacement)) 4020if (!TryGetTempReplacement(tempMap, test.Input, out BoundDagTemp? replacement)) 4041public readonly BoundDagTemp Input; 4045public ValueSet(BoundDagTemp input, IConstantValueSet values, SyntaxNode syntax) 4110static bool isInputRelated(BoundDagTest test, BoundDagTemp valueSetInput) 4158ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation e) 4161if (TryGetTempReplacement(tempMap, Input, out BoundDagTemp? replacement)) 4210protected override RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder builder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation e) 4331protected sealed override RemoveEvaluationAndUpdateTempReferencesResult RemoveEvaluationAndUpdateTempReferencesCore(DecisionDagBuilder dagBuilder, DagState state, ImmutableArray<BoundPatternBinding> bindings, ImmutableDictionary<BoundDagTemp, BoundDagTemp> tempMap, BoundDagEvaluation e) 4337ImmutableDictionary<BoundDagTemp, BoundDagTemp> TempMapToRestore 4965BoundDagTemp 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)
22public static BoundDagTemp ForOriginalInput(SyntaxNode syntax, TypeSymbol type) => new BoundDagTemp(syntax, type, source: null, 0); 24public override bool Equals(object? obj) => obj is BoundDagTemp other && this.Equals(other); 26public bool Equals(BoundDagTemp other) 41public 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) 9349return VisitDagTemp((BoundDagTemp)node, arg); 9694public virtual R VisitDagTemp(BoundDagTemp node, A arg) => this.DefaultVisit(node, arg); 9935public virtual BoundNode? VisitDagTemp(BoundDagTemp node) => this.DefaultVisit(node); 10587public override BoundNode? VisitDagTemp(BoundDagTemp node) 11977public override BoundNode? VisitDagTemp(BoundDagTemp node) 11985BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 11991BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 11996BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12001BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12006BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12012BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12017BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12024BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12030BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12036BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12041BoundDagTemp lengthTemp = (BoundDagTemp)this.Visit(node.LengthTemp); 12045BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12051BoundDagTemp lengthTemp = (BoundDagTemp)this.Visit(node.LengthTemp); 12055BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12061BoundDagTemp target = (BoundDagTemp)this.Visit(node.Target); 12062BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12067BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 14170BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 14177BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 14184BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 14191BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 14198BoundDagTemp lengthTemp = (BoundDagTemp)this.Visit(node.LengthTemp); 14202BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 14209BoundDagTemp lengthTemp = (BoundDagTemp)this.Visit(node.LengthTemp); 14213BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 16666public 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))