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)
5263var 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)
5227protected BoundDagTest(BoundKind kind, SyntaxNode syntax, BoundDagTemp input, bool hasErrors = false) 5236public BoundDagTemp Input { get; } 5259public BoundDagTemp Update(TypeSymbol type, BoundDagEvaluation? source, int index) 5263var result = new BoundDagTemp(this.Syntax, type, source, index, this.HasErrors); 5273public BoundDagTypeTest(SyntaxNode syntax, TypeSymbol type, BoundDagTemp input, bool hasErrors = false) 5288public BoundDagTypeTest Update(TypeSymbol type, BoundDagTemp input) 5302public BoundDagNonNullTest(SyntaxNode syntax, bool isExplicitTest, BoundDagTemp input, bool hasErrors = false) 5316public BoundDagNonNullTest Update(bool isExplicitTest, BoundDagTemp input) 5330public BoundDagExplicitNullTest(SyntaxNode syntax, BoundDagTemp input, bool hasErrors = false) 5342public new BoundDagExplicitNullTest Update(BoundDagTemp input) 5356public BoundDagValueTest(SyntaxNode syntax, ConstantValue value, BoundDagTemp input, bool hasErrors = false) 5371public BoundDagValueTest Update(ConstantValue value, BoundDagTemp input) 5385public BoundDagRelationalTest(SyntaxNode syntax, BinaryOperatorKind operatorKind, ConstantValue value, BoundDagTemp input, bool hasErrors = false) 5402public BoundDagRelationalTest Update(BinaryOperatorKind operatorKind, ConstantValue value, BoundDagTemp input) 5416protected BoundDagEvaluation(BoundKind kind, SyntaxNode syntax, BoundDagTemp input, bool hasErrors = false) 5428public BoundDagDeconstructEvaluation(SyntaxNode syntax, MethodSymbol deconstructMethod, BoundDagTemp input, bool hasErrors = false) 5443public BoundDagDeconstructEvaluation Update(MethodSymbol deconstructMethod, BoundDagTemp input) 5457public BoundDagTypeEvaluation(SyntaxNode syntax, TypeSymbol type, BoundDagTemp input, bool hasErrors = false) 5472public BoundDagTypeEvaluation Update(TypeSymbol type, BoundDagTemp input) 5486public BoundDagFieldEvaluation(SyntaxNode syntax, FieldSymbol field, BoundDagTemp input, bool hasErrors = false) 5501public BoundDagFieldEvaluation Update(FieldSymbol field, BoundDagTemp input) 5515public BoundDagPropertyEvaluation(SyntaxNode syntax, PropertySymbol property, bool isLengthOrCount, BoundDagTemp input, bool hasErrors = false) 5532public BoundDagPropertyEvaluation Update(PropertySymbol property, bool isLengthOrCount, BoundDagTemp input) 5546public BoundDagIndexEvaluation(SyntaxNode syntax, PropertySymbol property, int index, BoundDagTemp input, bool hasErrors = false) 5563public BoundDagIndexEvaluation Update(PropertySymbol property, int index, BoundDagTemp input) 5577public BoundDagIndexerEvaluation(SyntaxNode syntax, TypeSymbol indexerType, BoundDagTemp lengthTemp, int index, BoundExpression indexerAccess, BoundListPatternReceiverPlaceholder receiverPlaceholder, BoundListPatternIndexPlaceholder argumentPlaceholder, BoundDagTemp input, bool hasErrors = false) 5601public BoundDagTemp LengthTemp { get; } 5610public BoundDagIndexerEvaluation Update(TypeSymbol indexerType, BoundDagTemp lengthTemp, int index, BoundExpression indexerAccess, BoundListPatternReceiverPlaceholder receiverPlaceholder, BoundListPatternIndexPlaceholder argumentPlaceholder, BoundDagTemp input) 5624public BoundDagSliceEvaluation(SyntaxNode syntax, TypeSymbol sliceType, BoundDagTemp lengthTemp, int startIndex, int endIndex, BoundExpression indexerAccess, BoundSlicePatternReceiverPlaceholder receiverPlaceholder, BoundSlicePatternRangePlaceholder argumentPlaceholder, BoundDagTemp input, bool hasErrors = false) 5649public BoundDagTemp LengthTemp { get; } 5659public BoundDagSliceEvaluation Update(TypeSymbol sliceType, BoundDagTemp lengthTemp, int startIndex, int endIndex, BoundExpression indexerAccess, BoundSlicePatternReceiverPlaceholder receiverPlaceholder, BoundSlicePatternRangePlaceholder argumentPlaceholder, BoundDagTemp input) 5673public BoundDagAssignmentEvaluation(SyntaxNode syntax, BoundDagTemp target, BoundDagTemp input, bool hasErrors = false) 5683public BoundDagTemp Target { get; } 5688public BoundDagAssignmentEvaluation Update(BoundDagTemp target, BoundDagTemp input) 5702public BoundDagPassThroughEvaluation(SyntaxNode syntax, BoundDagTemp input, bool hasErrors = false) 5714public new BoundDagPassThroughEvaluation Update(BoundDagTemp input) 9350return VisitDagTemp((BoundDagTemp)node, arg); 9695public virtual R VisitDagTemp(BoundDagTemp node, A arg) => this.DefaultVisit(node, arg); 9936public virtual BoundNode? VisitDagTemp(BoundDagTemp node) => this.DefaultVisit(node); 10588public override BoundNode? VisitDagTemp(BoundDagTemp node) 11978public override BoundNode? VisitDagTemp(BoundDagTemp node) 11986BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 11992BoundDagTemp 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); 12013BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12018BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12025BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12031BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12037BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12042BoundDagTemp lengthTemp = (BoundDagTemp)this.Visit(node.LengthTemp); 12046BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12052BoundDagTemp lengthTemp = (BoundDagTemp)this.Visit(node.LengthTemp); 12056BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12062BoundDagTemp target = (BoundDagTemp)this.Visit(node.Target); 12063BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 12068BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 14171BoundDagTemp 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 lengthTemp = (BoundDagTemp)this.Visit(node.LengthTemp); 14203BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 14210BoundDagTemp lengthTemp = (BoundDagTemp)this.Visit(node.LengthTemp); 14214BoundDagTemp input = (BoundDagTemp)this.Visit(node.Input); 16667public 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))