294 references to EntryState
Microsoft.CodeAnalysis (99)
SourceGeneration\Nodes\BatchNode.cs (8)
46
if (entry.State !=
EntryState
.Removed)
74
if (entry.State ==
EntryState
.Removed)
98
if (entry.State ==
EntryState
.Removed)
133
newTable.AddEntry(sourceValues,
EntryState
.Added, stopwatch.Elapsed, sourceInputs,
EntryState
.Added);
137
if (!newTable.TryModifyEntry(sourceValues, _comparer, stopwatch.Elapsed, sourceInputs,
EntryState
.Modified))
139
newTable.AddEntry(sourceValues,
EntryState
.Added, stopwatch.Elapsed, sourceInputs,
EntryState
.Added);
SourceGeneration\Nodes\CombineNode.cs (6)
65
var
state = (entry1.State, isInput2Cached) switch
67
(
EntryState
.Cached, true) =>
EntryState
.Cached,
68
(
EntryState
.Cached, false) =>
EntryState
.Modified,
73
if (state !=
EntryState
.Modified || _comparer is null || !builder.TryModifyEntry(entry, _comparer, stopwatch.Elapsed, stepInputs, state))
SourceGeneration\Nodes\InputNode.cs (3)
78
var modified = builder.TryModifyEntry(inputItems[itemIndex], _comparer, elapsedTime, noInputStepsStepInfo,
EntryState
.Modified);
94
builder.AddEntry(newItem,
EntryState
.Added, elapsedTime, noInputStepsStepInfo,
EntryState
.Added);
SourceGeneration\Nodes\ISyntaxStrategy.cs (1)
20
void VisitTree(Lazy<SyntaxNode> root,
EntryState
state, Lazy<SemanticModel>? model, CancellationToken cancellationToken);
SourceGeneration\Nodes\NodeStateTable.cs (58)
55
internal readonly record struct NodeStateEntry<T>(T Item,
EntryState
State, int OutputIndex, IncrementalGeneratorRunStep? Step);
80
/// Indicates if every entry in this table has a state of <see cref="
EntryState
.Cached"/>
204
RecordStepInfoForLastEntry(elapsedTime, stepInputs,
EntryState
.Removed);
232
RecordStepInfoForLastEntry(elapsedTime, stepInputs,
EntryState
.Cached);
248
public bool TryModifyEntry(T value, IEqualityComparer<T> comparer, TimeSpan elapsedTime, ImmutableArray<(IncrementalGeneratorRunStep InputStep, int OutputIndex)> stepInputs,
EntryState
overallInputState)
263
public bool TryModifyEntries(ImmutableArray<T> outputs, IEqualityComparer<T> comparer, TimeSpan elapsedTime, ImmutableArray<(IncrementalGeneratorRunStep InputStep, int OutputIndex)> stepInputs,
EntryState
overallInputState)
285
RecordStepInfoForLastEntry(elapsedTime, stepInputs,
EntryState
.Cached);
305
var
previousState = previousEntry.GetState(i);
338
builder!.Add(previousEntry.GetItem(i),
EntryState
.Removed);
346
builder!.Add(outputs[i],
EntryState
.Added);
357
public void AddEntry(T value,
EntryState
state, TimeSpan elapsedTime, ImmutableArray<(IncrementalGeneratorRunStep InputStep, int OutputIndex)> stepInputs,
EntryState
overallInputState)
363
public TableEntry AddEntries(ImmutableArray<T> values,
EntryState
state, TimeSpan elapsedTime, ImmutableArray<(IncrementalGeneratorRunStep InputStep, int OutputIndex)> stepInputs,
EntryState
overallInputState)
371
private void RecordStepInfoForLastEntry(TimeSpan elapsedTime, ImmutableArray<(IncrementalGeneratorRunStep InputStep, int OutputIndex)> stepInputs,
EntryState
overallInputState)
399
private static IncrementalStepRunReason AsStepState(
EntryState
inputState,
EntryState
outputState)
403
(
EntryState
.Added,
EntryState
.Added) => IncrementalStepRunReason.New,
404
(
EntryState
.Modified,
EntryState
.Modified) => IncrementalStepRunReason.Modified,
405
(
EntryState
.Modified,
EntryState
.Cached) => IncrementalStepRunReason.Unchanged,
406
(
EntryState
.Cached,
EntryState
.Cached) => IncrementalStepRunReason.Cached,
407
(
EntryState
.Removed,
EntryState
.Removed) => IncrementalStepRunReason.Removed,
408
(
EntryState
.Modified,
EntryState
.Removed) => IncrementalStepRunReason.Removed,
409
(
EntryState
.Modified,
EntryState
.Added) => IncrementalStepRunReason.Modified,
452
private static (T chosen,
EntryState
state, bool chosePrevious) GetModifiedItemAndState(T previous, T replacement, IEqualityComparer<T> comparer)
457
? (previous,
EntryState
.Cached, chosePrevious: true)
458
: (replacement,
EntryState
.Modified, chosePrevious: false);
464
private static readonly ImmutableArray<
EntryState
> s_allAddedEntries = ImmutableArray.Create(
EntryState
.Added);
465
private static readonly ImmutableArray<
EntryState
> s_allCachedEntries = ImmutableArray.Create(
EntryState
.Cached);
466
private static readonly ImmutableArray<
EntryState
> s_allModifiedEntries = ImmutableArray.Create(
EntryState
.Modified);
467
private static readonly ImmutableArray<
EntryState
> s_allRemovedEntries = ImmutableArray.Create(
EntryState
.Removed);
475
private readonly ImmutableArray<
EntryState
> _states;
477
public TableEntry(OneOrMany<T> items,
EntryState
state)
480
private TableEntry(OneOrMany<T> items, ImmutableArray<
EntryState
> states)
506
public bool IsCached => this._states == s_allCachedEntries || this._states.All(s => s ==
EntryState
.Cached);
508
public bool IsRemoved => this._states == s_allRemovedEntries || this._states.All(s => s ==
EntryState
.Removed);
514
public
EntryState
GetState(int index) => _states.Length == 1 ? _states[0] : _states[index];
522
private static ImmutableArray<
EntryState
> GetSingleArray(
EntryState
state) => state switch
524
EntryState
.Added => s_allAddedEntries,
525
EntryState
.Cached => s_allCachedEntries,
526
EntryState
.Modified => s_allModifiedEntries,
527
EntryState
.Removed => s_allRemovedEntries,
588
private ArrayBuilder<
EntryState
>? _states;
589
private
EntryState
? _currentState;
599
public void Add(T item,
EntryState
state)
614
_states = ArrayBuilder<
EntryState
>.GetInstance(_requestedCapacity);
SourceGeneration\Nodes\PredicateSyntaxStrategy.cs (9)
63
EntryState
state,
69
if (state ==
EntryState
.Removed)
83
if (state !=
EntryState
.Cached || !_filterTable.TryUseCachedEntries(TimeSpan.Zero, noInputStepsStepInfo, out NodeStateTable<SyntaxNode>.TableEntry entry))
99
var
transformInputState = state ==
EntryState
.Cached ?
EntryState
.Modified : state;
101
if (transformInputState ==
EntryState
.Added || !_transformTable.TryModifyEntry(transformed, _comparer, stopwatch.Elapsed, noInputStepsStepInfo, transformInputState))
103
_transformTable.AddEntry(transformed,
EntryState
.Added, stopwatch.Elapsed, noInputStepsStepInfo,
EntryState
.Added);
SourceGeneration\Nodes\SourceOutputNode.cs (5)
55
if (entry.State ==
EntryState
.Removed)
59
else if (entry.State !=
EntryState
.Cached || !nodeTable.TryUseCachedEntries(TimeSpan.Zero, inputs))
75
nodeTable.AddEntry(sourcesAndDiagnostics,
EntryState
.Added, stopwatch.Elapsed, inputs,
EntryState
.Added);
103
if (state !=
EntryState
.Removed)
SourceGeneration\Nodes\SyntaxReceiverStrategy.cs (4)
63
_nodeStateTable.AddEntry(_receiver,
EntryState
.Modified, lastElapsedTime, TrackIncrementalSteps ? System.Collections.Immutable.ImmutableArray<(IncrementalGeneratorRunStep, int)>.Empty : default,
EntryState
.Modified);
69
EntryState
state,
73
if (_walker is not null && state !=
EntryState
.Removed)
SourceGeneration\Nodes\TransformNode.cs (4)
67
if (entry.State ==
EntryState
.Removed)
71
else if (entry.State !=
EntryState
.Cached || !newTable.TryUseCachedEntries(TimeSpan.Zero, inputs))
77
if (entry.State !=
EntryState
.Modified || !newTable.TryModifyEntries(newOutputs, _comparer, stopwatch.Elapsed, inputs, entry.State))
79
newTable.AddEntries(newOutputs,
EntryState
.Added, stopwatch.Elapsed, inputs, entry.State);
SourceGeneration\SyntaxStore.cs (1)
90
var model = state !=
EntryState
.Removed ? new Lazy<SemanticModel>(() => _compilation.GetSemanticModel(tree)) : null;
Microsoft.CodeAnalysis.CSharp.Semantic.UnitTests (190)
SourceGeneration\StateTableTests.cs (190)
24
builder.AddEntries(ImmutableArray.Create(1),
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
25
builder.AddEntries(ImmutableArray.Create(2),
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
26
builder.AddEntries(ImmutableArray.Create(3),
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
29
var expected = ImmutableArray.Create((1,
EntryState
.Added, 0), (2,
EntryState
.Added, 0), (3,
EntryState
.Added, 0));
37
builder.AddEntries(ImmutableArray.Create(1, 2, 3),
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
38
builder.AddEntries(ImmutableArray.Create(4, 5, 6),
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
39
builder.AddEntries(ImmutableArray.Create(7, 8, 9),
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
42
var expected = ImmutableArray.Create((1,
EntryState
.Added, 0), (2,
EntryState
.Added, 1), (3,
EntryState
.Added, 2), (4,
EntryState
.Added, 0), (5,
EntryState
.Added, 1), (6,
EntryState
.Added, 2), (7,
EntryState
.Added, 0), (8,
EntryState
.Added, 1), (9,
EntryState
.Added, 2));
52
builder.AddEntries(ImmutableArray.Create(o, o, o),
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
55
var expected = ImmutableArray.Create((o,
EntryState
.Added, 0), (o,
EntryState
.Added, 1), (o,
EntryState
.Added, 2));
65
builder.AddEntry(o,
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
66
builder.AddEntry(null,
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
67
builder.AddEntry(o,
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
70
var expected = ImmutableArray.Create((o,
EntryState
.Added, 0), (null,
EntryState
.Added, 0), (o,
EntryState
.Added, 0));
78
builder.AddEntries(ImmutableArray.Create(1),
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
79
builder.AddEntries(ImmutableArray.Create(2, 3),
EntryState
.Cached, TimeSpan.Zero, default,
EntryState
.Cached);
80
builder.AddEntries(ImmutableArray.Create(4, 5),
EntryState
.Modified, TimeSpan.Zero, default,
EntryState
.Modified);
81
builder.AddEntries(ImmutableArray.Create(6),
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
85
builder.AddEntries(ImmutableArray.Create(10, 11),
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
87
builder.AddEntries(ImmutableArray.Create(20, 21, 22),
EntryState
.Modified, TimeSpan.Zero, default,
EntryState
.Modified);
91
var expected = ImmutableArray.Create((10,
EntryState
.Added, 0), (11,
EntryState
.Added, 1), (2,
EntryState
.Cached, 0), (3,
EntryState
.Cached, 1), (20,
EntryState
.Modified, 0), (21,
EntryState
.Modified, 1), (22,
EntryState
.Modified, 2), (6,
EntryState
.Removed, 0));
109
builder.AddEntries(ImmutableArray.Create(1, 2, 3),
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
110
builder.AddEntries(ImmutableArray.Create(4, 5, 6),
EntryState
.Removed, TimeSpan.Zero, default,
EntryState
.Removed);
111
builder.AddEntries(ImmutableArray.Create(7, 8, 9),
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
114
var expected = ImmutableArray.Create((1,
EntryState
.Added, 0), (2,
EntryState
.Added, 1), (3,
EntryState
.Added, 2), (4,
EntryState
.Removed, 0), (5,
EntryState
.Removed, 1), (6,
EntryState
.Removed, 2), (7,
EntryState
.Added, 0), (8,
EntryState
.Added, 1), (9,
EntryState
.Added, 2));
118
expected = ImmutableArray.Create((1,
EntryState
.Cached, 0), (2,
EntryState
.Cached, 1), (3,
EntryState
.Cached, 2), (7,
EntryState
.Cached, 0), (8,
EntryState
.Cached, 1), (9,
EntryState
.Cached, 2));
126
builder.AddEntries(ImmutableArray.Create(1, 2, 3),
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
127
builder.AddEntries(ImmutableArray.Create(4, 5, 6),
EntryState
.Removed, TimeSpan.Zero, default,
EntryState
.Removed);
128
builder.AddEntries(ImmutableArray.Create(7, 8, 9),
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
131
var expected = ImmutableArray.Create((1,
EntryState
.Added, 0), (2,
EntryState
.Added, 1), (3,
EntryState
.Added, 2), (4,
EntryState
.Removed, 0), (5,
EntryState
.Removed, 1), (6,
EntryState
.Removed, 2), (7,
EntryState
.Added, 0), (8,
EntryState
.Added, 1), (9,
EntryState
.Added, 2));
135
expected = ImmutableArray.Create((1,
EntryState
.Cached, 0), (2,
EntryState
.Cached, 1), (3,
EntryState
.Cached, 2), (7,
EntryState
.Cached, 0), (8,
EntryState
.Cached, 1), (9,
EntryState
.Cached, 2));
147
builder.AddEntries(ImmutableArray.Create(1),
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
157
builder.AddEntries(ImmutableArray.Create(1),
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
160
AssertTableEntries(table, new[] { (1,
EntryState
.Added, 0) });
168
builder.AddEntries(ImmutableArray.Create(2),
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
171
AssertTableEntries(table, new[] { (1,
EntryState
.Removed, 0), (2,
EntryState
.Added, 0) });
179
builder.AddEntries(ImmutableArray.Create(1, 2),
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
180
builder.AddEntries(ImmutableArray<int>.Empty,
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
181
builder.AddEntries(ImmutableArray.Create(3, 4),
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
184
var expected = ImmutableArray.Create((1,
EntryState
.Added, 0), (2,
EntryState
.Added, 1), (3,
EntryState
.Added, 0), (4,
EntryState
.Added, 1));
188
Assert.True(builder.TryModifyEntries(ImmutableArray.Create(3, 2), EqualityComparer<int>.Default, TimeSpan.Zero, default,
EntryState
.Modified));
189
Assert.True(builder.TryModifyEntries(ImmutableArray<int>.Empty, EqualityComparer<int>.Default, TimeSpan.Zero, default,
EntryState
.Modified));
190
Assert.True(builder.TryModifyEntries(ImmutableArray.Create(3, 5), EqualityComparer<int>.Default, TimeSpan.Zero, default,
EntryState
.Modified));
194
expected = ImmutableArray.Create((3,
EntryState
.Modified, 0), (2,
EntryState
.Cached, 1), (3,
EntryState
.Cached, 0), (5,
EntryState
.Modified, 1));
202
builder.AddEntries(ImmutableArray.Create(1),
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
203
builder.AddEntries(ImmutableArray.Create(2),
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
204
builder.AddEntries(ImmutableArray.Create(3),
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
205
builder.AddEntries(ImmutableArray.Create(4),
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
208
var expected = ImmutableArray.Create((1,
EntryState
.Added, 0), (2,
EntryState
.Added, 0), (3,
EntryState
.Added, 0), (4,
EntryState
.Added, 0));
212
Assert.True(builder.TryModifyEntry(1, EqualityComparer<int>.Default, TimeSpan.Zero, default,
EntryState
.Modified));
213
Assert.True(builder.TryModifyEntry(2, EqualityComparer<int>.Default, TimeSpan.Zero, default,
EntryState
.Modified));
214
Assert.True(builder.TryModifyEntry(5, EqualityComparer<int>.Default, TimeSpan.Zero, default,
EntryState
.Modified));
215
Assert.True(builder.TryModifyEntry(4, EqualityComparer<int>.Default, TimeSpan.Zero, default,
EntryState
.Modified));
219
expected = ImmutableArray.Create((1,
EntryState
.Cached, 0), (2,
EntryState
.Cached, 0), (5,
EntryState
.Modified, 0), (4,
EntryState
.Cached, 0));
227
builder.AddEntries(ImmutableArray.Create(1),
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
228
builder.AddEntries(ImmutableArray.Create(2),
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
229
builder.AddEntries(ImmutableArray.Create(3),
EntryState
.Added, TimeSpan.Zero, default,
EntryState
.Added);
232
var expected = ImmutableArray.Create((1,
EntryState
.Added, 0), (2,
EntryState
.Added, 0), (3,
EntryState
.Added, 0));
236
Assert.True(builder.TryModifyEntry(1, EqualityComparer<int>.Default, TimeSpan.Zero, default,
EntryState
.Modified)); // ((1, EntryState.Cached))
237
Assert.True(builder.TryModifyEntry(4, EqualityComparer<int>.Default, TimeSpan.Zero, default,
EntryState
.Modified)); // ((4, EntryState.Modified))
238
Assert.True(builder.TryModifyEntry(5, new LambdaComparer<int>((i, j) => true), TimeSpan.Zero, default,
EntryState
.Modified)); // ((3, EntryState.Cached))
241
expected = ImmutableArray.Create((1,
EntryState
.Cached, 0), (4,
EntryState
.Modified, 0), (3,
EntryState
.Cached, 0));
281
nodeBuilder.AddEntries(ImmutableArray.Create(1, 2, 3),
EntryState
.Cached, TimeSpan.Zero, default,
EntryState
.Cached);
302
AssertTableEntries(passedIn!, new[] { (1,
EntryState
.Cached, 0), (2,
EntryState
.Cached, 1), (3,
EntryState
.Cached, 2) });
310
nodeBuilder.AddEntries(ImmutableArray.Create(1, 2, 3),
EntryState
.Added, TimeSpan.Zero, emptyInputSteps,
EntryState
.Added);
311
nodeBuilder.AddEntries(ImmutableArray.Create(4),
EntryState
.Removed, TimeSpan.Zero, emptyInputSteps,
EntryState
.Removed);
312
nodeBuilder.AddEntries(ImmutableArray.Create(5, 6),
EntryState
.Modified, TimeSpan.Zero, emptyInputSteps,
EntryState
.Modified);
338
AssertTableEntries(passedIn!, new[] { (1,
EntryState
.Cached, 0), (2,
EntryState
.Cached, 1), (3,
EntryState
.Cached, 2), (5,
EntryState
.Cached, 0), (6,
EntryState
.Cached, 1) });
425
AssertTableEntries(table, new[] { (ImmutableArray.Create(1, 2, 3),
EntryState
.Cached, 0) });
536
AssertTableEntries(table, new[] { (ImmutableArray.Create(1, 2, 4),
EntryState
.Modified, 0) });
749
AssertTableEntries(table, new[] { (1,
EntryState
.Cached, 0), (2,
EntryState
.Removed, 0), (3,
EntryState
.Removed, 0), (4,
EntryState
.Added, 0), (5,
EntryState
.Added, 0), (6,
EntryState
.Added, 0) });
891
AssertTableEntries(table, new[] { (1,
EntryState
.Cached, 0), new(2,
EntryState
.Cached, 0), new(3,
EntryState
.Cached, 0) });
986
private void AssertTableEntries<T>(NodeStateTable<T> table, IList<(T Item,
EntryState
State, int OutputIndex)> expected)
998
private void AssertTableEntries<T>(NodeStateTable<ImmutableArray<T>> table, IList<(ImmutableArray<T> Item,
EntryState
State, int OutputIndex)> expected)
Microsoft.CodeAnalysis.ExternalAccess.RazorCompiler (5)
HostOutputNode.cs (5)
48
if (entry.State ==
EntryState
.Removed)
52
else if (entry.State !=
EntryState
.Cached || !nodeTable.TryUseCachedEntries(TimeSpan.Zero, inputs))
58
nodeTable.AddEntry(output.ToImmutableAndFree(),
EntryState
.Added, stopwatch.Elapsed, inputs,
EntryState
.Added);
74
if (state !=
EntryState
.Removed)