@@ -28,7 +28,7 @@ public class CSharpEditAndContinueAnalyzerTests
2828 {
2929 private static readonly IExportProviderFactory s_exportProviderFactoryWithTestActiveStatementSpanTracker =
3030 ExportProviderCache . GetOrCreateExportProviderFactory ( TestExportProvider . EntireAssemblyCatalogWithCSharpAndVisualBasic
31- . WithPart ( typeof ( TestActiveStatementSpanTracker ) ) ) ;
31+ . WithPart ( typeof ( TestActiveStatementSpanTrackerFactory ) ) ) ;
3232
3333 #region Helpers
3434
@@ -266,7 +266,6 @@ public static void Main()
266266 }
267267}
268268" ;
269- var analyzer = new CSharpEditAndContinueAnalyzer ( ) ;
270269
271270 using var workspace = TestWorkspace . CreateCSharp ( source1 , exportProvider : s_exportProviderFactoryWithTestActiveStatementSpanTracker . CreateExportProvider ( ) ) ;
272271 var oldSolution = workspace . CurrentSolution ;
@@ -287,7 +286,8 @@ public static void Main()
287286 var oldStatementSyntax = oldSyntaxRoot . FindNode ( oldStatementTextSpan ) ;
288287
289288 var baseActiveStatements = ImmutableArray . Create ( ActiveStatementsDescription . CreateActiveStatement ( ActiveStatementFlags . IsLeafFrame , oldStatementSpan , DocumentId . CreateNewId ( ProjectId . CreateNewId ( ) ) ) ) ;
290- var spanTracker = Assert . IsType < TestActiveStatementSpanTracker > ( workspace . Services . GetRequiredService < IActiveStatementSpanTracker > ( ) ) ;
289+ var spanTracker = Assert . IsType < TestActiveStatementSpanTracker > ( workspace . Services . GetRequiredService < IActiveStatementSpanTrackerFactory > ( ) . GetOrCreateActiveStatementSpanTracker ( ) ) ;
290+ var analyzer = new CSharpEditAndContinueAnalyzer ( spanTracker ) ;
291291
292292 var result = await analyzer . AnalyzeDocumentAsync ( oldDocument , baseActiveStatements , newDocument , CancellationToken . None ) ;
293293
@@ -324,7 +324,6 @@ public static void Main()
324324 }
325325}
326326" ;
327- var analyzer = new CSharpEditAndContinueAnalyzer ( ) ;
328327
329328 using var workspace = TestWorkspace . CreateCSharp ( source1 , exportProvider : s_exportProviderFactoryWithTestActiveStatementSpanTracker . CreateExportProvider ( ) ) ;
330329 var oldSolution = workspace . CurrentSolution ;
@@ -334,7 +333,8 @@ public static void Main()
334333 var newSolution = workspace . CurrentSolution . WithDocumentText ( documentId , SourceText . From ( source2 ) ) ;
335334
336335 var baseActiveStatements = ImmutableArray . Create < ActiveStatement > ( ) ;
337- var spanTracker = Assert . IsType < TestActiveStatementSpanTracker > ( workspace . Services . GetRequiredService < IActiveStatementSpanTracker > ( ) ) ;
336+ var spanTracker = Assert . IsType < TestActiveStatementSpanTracker > ( workspace . Services . GetRequiredService < IActiveStatementSpanTrackerFactory > ( ) . GetOrCreateActiveStatementSpanTracker ( ) ) ;
337+ var analyzer = new CSharpEditAndContinueAnalyzer ( spanTracker ) ;
338338
339339 var result = await analyzer . AnalyzeDocumentAsync ( oldDocument , baseActiveStatements , newSolution . GetDocument ( documentId ) , CancellationToken . None ) ;
340340
@@ -355,13 +355,13 @@ public static void Main()
355355 }
356356}
357357" ;
358- var analyzer = new CSharpEditAndContinueAnalyzer ( ) ;
359358
360359 using var workspace = TestWorkspace . CreateCSharp ( source , exportProvider : s_exportProviderFactoryWithTestActiveStatementSpanTracker . CreateExportProvider ( ) ) ;
361360 var oldProject = workspace . CurrentSolution . Projects . Single ( ) ;
362361 var oldDocument = oldProject . Documents . Single ( ) ;
363362 var baseActiveStatements = ImmutableArray . Create < ActiveStatement > ( ) ;
364- var spanTracker = Assert . IsType < TestActiveStatementSpanTracker > ( workspace . Services . GetRequiredService < IActiveStatementSpanTracker > ( ) ) ;
363+ var spanTracker = Assert . IsType < TestActiveStatementSpanTracker > ( workspace . Services . GetRequiredService < IActiveStatementSpanTrackerFactory > ( ) . GetOrCreateActiveStatementSpanTracker ( ) ) ;
364+ var analyzer = new CSharpEditAndContinueAnalyzer ( spanTracker ) ;
365365
366366 var result = await analyzer . AnalyzeDocumentAsync ( oldDocument , baseActiveStatements , oldDocument , CancellationToken . None ) ;
367367
@@ -391,7 +391,6 @@ public static void Main()
391391 }
392392}
393393" ;
394- var analyzer = new CSharpEditAndContinueAnalyzer ( ) ;
395394
396395 using var workspace = TestWorkspace . CreateCSharp ( source1 , exportProvider : s_exportProviderFactoryWithTestActiveStatementSpanTracker . CreateExportProvider ( ) ) ;
397396
@@ -403,7 +402,8 @@ public static void Main()
403402 var newSolution = workspace . CurrentSolution . WithDocumentText ( documentId , SourceText . From ( source2 ) ) ;
404403
405404 var baseActiveStatements = ImmutableArray . Create < ActiveStatement > ( ) ;
406- var spanTracker = Assert . IsType < TestActiveStatementSpanTracker > ( workspace . Services . GetRequiredService < IActiveStatementSpanTracker > ( ) ) ;
405+ var spanTracker = Assert . IsType < TestActiveStatementSpanTracker > ( workspace . Services . GetRequiredService < IActiveStatementSpanTrackerFactory > ( ) . GetOrCreateActiveStatementSpanTracker ( ) ) ;
406+ var analyzer = new CSharpEditAndContinueAnalyzer ( spanTracker ) ;
407407
408408 var result = await analyzer . AnalyzeDocumentAsync ( oldDocument , baseActiveStatements , newSolution . GetDocument ( documentId ) , CancellationToken . None ) ;
409409
@@ -424,7 +424,6 @@ public static void Main()
424424 }
425425}
426426" ;
427- var analyzer = new CSharpEditAndContinueAnalyzer ( ) ;
428427 var experimentalFeatures = new Dictionary < string , string > ( ) ; // no experimental features to enable
429428 var experimental = TestOptions . Regular . WithFeatures ( experimentalFeatures ) ;
430429
@@ -437,7 +436,8 @@ public static void Main()
437436 var documentId = oldDocument . Id ;
438437
439438 var baseActiveStatements = ImmutableArray . Create < ActiveStatement > ( ) ;
440- var spanTracker = Assert . IsType < TestActiveStatementSpanTracker > ( workspace . Services . GetRequiredService < IActiveStatementSpanTracker > ( ) ) ;
439+ var spanTracker = Assert . IsType < TestActiveStatementSpanTracker > ( workspace . Services . GetRequiredService < IActiveStatementSpanTrackerFactory > ( ) . GetOrCreateActiveStatementSpanTracker ( ) ) ;
440+ var analyzer = new CSharpEditAndContinueAnalyzer ( spanTracker ) ;
441441
442442 var result = await analyzer . AnalyzeDocumentAsync ( oldDocument , baseActiveStatements , oldDocument , CancellationToken . None ) ;
443443
@@ -473,7 +473,6 @@ public static void Main()
473473 }
474474}
475475" ;
476- var analyzer = new CSharpEditAndContinueAnalyzer ( ) ;
477476
478477 var featuresToEnable = new Dictionary < string , string > ( ) { { feature , "enabled" } } ;
479478 var experimental = TestOptions . Regular . WithFeatures ( featuresToEnable ) ;
@@ -489,7 +488,8 @@ public static void Main()
489488 var newSolution = workspace . CurrentSolution . WithDocumentText ( documentId , SourceText . From ( source2 ) ) ;
490489
491490 var baseActiveStatements = ImmutableArray . Create < ActiveStatement > ( ) ;
492- var spanTracker = Assert . IsType < TestActiveStatementSpanTracker > ( workspace . Services . GetRequiredService < IActiveStatementSpanTracker > ( ) ) ;
491+ var spanTracker = Assert . IsType < TestActiveStatementSpanTracker > ( workspace . Services . GetRequiredService < IActiveStatementSpanTrackerFactory > ( ) . GetOrCreateActiveStatementSpanTracker ( ) ) ;
492+ var analyzer = new CSharpEditAndContinueAnalyzer ( spanTracker ) ;
493493
494494 var result = await analyzer . AnalyzeDocumentAsync ( oldDocument , baseActiveStatements , newSolution . GetDocument ( documentId ) , CancellationToken . None ) ;
495495
@@ -513,7 +513,6 @@ public static void Main()
513513 }
514514}
515515" ;
516- var analyzer = new CSharpEditAndContinueAnalyzer ( ) ;
517516
518517 using var workspace = TestWorkspace . CreateCSharp ( source , exportProvider : s_exportProviderFactoryWithTestActiveStatementSpanTracker . CreateExportProvider ( ) ) ;
519518
@@ -523,7 +522,8 @@ public static void Main()
523522 var documentId = oldDocument . Id ;
524523
525524 var baseActiveStatements = ImmutableArray . Create < ActiveStatement > ( ) ;
526- var spanTracker = Assert . IsType < TestActiveStatementSpanTracker > ( workspace . Services . GetRequiredService < IActiveStatementSpanTracker > ( ) ) ;
525+ var spanTracker = Assert . IsType < TestActiveStatementSpanTracker > ( workspace . Services . GetRequiredService < IActiveStatementSpanTrackerFactory > ( ) . GetOrCreateActiveStatementSpanTracker ( ) ) ;
526+ var analyzer = new CSharpEditAndContinueAnalyzer ( spanTracker ) ;
527527
528528 var result = await analyzer . AnalyzeDocumentAsync ( oldDocument , baseActiveStatements , oldDocument , CancellationToken . None ) ;
529529
@@ -555,7 +555,6 @@ public static void Main()
555555 }
556556}
557557" ;
558- var analyzer = new CSharpEditAndContinueAnalyzer ( ) ;
559558
560559 using var workspace = TestWorkspace . CreateCSharp ( source1 , exportProvider : s_exportProviderFactoryWithTestActiveStatementSpanTracker . CreateExportProvider ( ) ) ;
561560
@@ -567,7 +566,8 @@ public static void Main()
567566 var newSolution = workspace . CurrentSolution . WithDocumentText ( documentId , SourceText . From ( source2 ) ) ;
568567
569568 var baseActiveStatements = ImmutableArray . Create < ActiveStatement > ( ) ;
570- var spanTracker = Assert . IsType < TestActiveStatementSpanTracker > ( workspace . Services . GetRequiredService < IActiveStatementSpanTracker > ( ) ) ;
569+ var spanTracker = Assert . IsType < TestActiveStatementSpanTracker > ( workspace . Services . GetRequiredService < IActiveStatementSpanTrackerFactory > ( ) . GetOrCreateActiveStatementSpanTracker ( ) ) ;
570+ var analyzer = new CSharpEditAndContinueAnalyzer ( spanTracker ) ;
571571
572572 var result = await analyzer . AnalyzeDocumentAsync ( oldDocument , baseActiveStatements , newSolution . GetDocument ( documentId ) , CancellationToken . None ) ;
573573
@@ -599,7 +599,6 @@ public static void Main(Bar x)
599599 }
600600}
601601" ;
602- var analyzer = new CSharpEditAndContinueAnalyzer ( ) ;
603602
604603 using var workspace = TestWorkspace . CreateCSharp ( source1 , exportProvider : s_exportProviderFactoryWithTestActiveStatementSpanTracker . CreateExportProvider ( ) ) ;
605604
@@ -611,7 +610,8 @@ public static void Main(Bar x)
611610 var newSolution = workspace . CurrentSolution . WithDocumentText ( documentId , SourceText . From ( source2 ) ) ;
612611
613612 var baseActiveStatements = ImmutableArray . Create < ActiveStatement > ( ) ;
614- var spanTracker = Assert . IsType < TestActiveStatementSpanTracker > ( workspace . Services . GetRequiredService < IActiveStatementSpanTracker > ( ) ) ;
613+ var spanTracker = Assert . IsType < TestActiveStatementSpanTracker > ( workspace . Services . GetRequiredService < IActiveStatementSpanTrackerFactory > ( ) . GetOrCreateActiveStatementSpanTracker ( ) ) ;
614+ var analyzer = new CSharpEditAndContinueAnalyzer ( spanTracker ) ;
615615
616616 var result = await analyzer . AnalyzeDocumentAsync ( oldDocument , baseActiveStatements , newSolution . GetDocument ( documentId ) , CancellationToken . None ) ;
617617
@@ -642,7 +642,6 @@ public class D
642642 }
643643}
644644" ;
645- var analyzer = new CSharpEditAndContinueAnalyzer ( ) ;
646645
647646 using var workspace = TestWorkspace . CreateCSharp ( source1 , exportProvider : s_exportProviderFactoryWithTestActiveStatementSpanTracker . CreateExportProvider ( ) ) ;
648647 // fork the solution to introduce a change
@@ -664,7 +663,8 @@ public class D
664663
665664 var result = new List < DocumentAnalysisResults > ( ) ;
666665 var baseActiveStatements = ImmutableArray . Create < ActiveStatement > ( ) ;
667- var spanTracker = Assert . IsType < TestActiveStatementSpanTracker > ( workspace . Services . GetRequiredService < IActiveStatementSpanTracker > ( ) ) ;
666+ var spanTracker = Assert . IsType < TestActiveStatementSpanTracker > ( workspace . Services . GetRequiredService < IActiveStatementSpanTrackerFactory > ( ) . GetOrCreateActiveStatementSpanTracker ( ) ) ;
667+ var analyzer = new CSharpEditAndContinueAnalyzer ( spanTracker ) ;
668668
669669 foreach ( var changedDocumentId in changedDocuments )
670670 {
@@ -692,7 +692,6 @@ public static void Main()
692692" ;
693693 var source2 = @"
694694" ;
695- var analyzer = new CSharpEditAndContinueAnalyzer ( ) ;
696695
697696 using var workspace = TestWorkspace . CreateCSharp ( source1 , exportProvider : s_exportProviderFactoryWithTestActiveStatementSpanTracker . CreateExportProvider ( ) ) ;
698697
@@ -714,7 +713,8 @@ public static void Main()
714713
715714 var result = new List < DocumentAnalysisResults > ( ) ;
716715 var baseActiveStatements = ImmutableArray . Create < ActiveStatement > ( ) ;
717- var spanTracker = Assert . IsType < TestActiveStatementSpanTracker > ( workspace . Services . GetRequiredService < IActiveStatementSpanTracker > ( ) ) ;
716+ var spanTracker = Assert . IsType < TestActiveStatementSpanTracker > ( workspace . Services . GetRequiredService < IActiveStatementSpanTrackerFactory > ( ) . GetOrCreateActiveStatementSpanTracker ( ) ) ;
717+ var analyzer = new CSharpEditAndContinueAnalyzer ( spanTracker ) ;
718718
719719 foreach ( var changedDocumentId in changedDocuments )
720720 {
0 commit comments