@@ -247,6 +247,32 @@ suite("DiagnosticsManager Test Suite", async function () {
247
247
assert . equal ( diagnostics . length , 1 ) ;
248
248
assertHasDiagnostic ( mainUri , outputDiagnostic ) ;
249
249
} ) ;
250
+
251
+ test ( "New set of swiftc diagnostics clear old list" , async ( ) => {
252
+ let fixture = testSwiftTask ( "swift" , [ "build" ] , workspaceFolder , toolchain ) ;
253
+ await vscode . tasks . executeTask ( fixture . task ) ;
254
+ let diagnosticsPromise = waitForDiagnostics ( [ mainUri ] ) ;
255
+ // Wait to spawn before writing
256
+ fixture . process . write ( `${ mainUri . fsPath } :13:5: error: Cannot find 'foo' in scope` ) ;
257
+ fixture . process . close ( 1 ) ;
258
+ await waitForNoRunningTasks ( ) ;
259
+ await diagnosticsPromise ;
260
+ let diagnostics = vscode . languages . getDiagnostics ( mainUri ) ;
261
+ // Should only include one
262
+ assert . equal ( diagnostics . length , 1 ) ;
263
+ assertHasDiagnostic ( mainUri , outputDiagnostic ) ;
264
+
265
+ // Run again but no diagnostics returned
266
+ fixture = testSwiftTask ( "swift" , [ "build" ] , workspaceFolder , toolchain ) ;
267
+ await vscode . tasks . executeTask ( fixture . task ) ;
268
+ diagnosticsPromise = waitForDiagnostics ( [ mainUri ] ) ;
269
+ fixture . process . close ( 0 ) ;
270
+ await waitForNoRunningTasks ( ) ;
271
+ await diagnosticsPromise ;
272
+ diagnostics = vscode . languages . getDiagnostics ( mainUri ) ;
273
+ // Should have cleaned up
274
+ assert . equal ( diagnostics . length , 0 ) ;
275
+ } ) ;
250
276
} ) ;
251
277
} ) ;
252
278
@@ -346,30 +372,6 @@ suite("DiagnosticsManager Test Suite", async function () {
346
372
assertHasDiagnostic ( mainUri , sourcekitErrorDiagnostic ) ;
347
373
assertHasDiagnostic ( mainUri , sourcekitWarningDiagnostic ) ;
348
374
} ) ;
349
-
350
- test ( "fix swiftc diagnostic" , async ( ) => {
351
- // Add initial diagnostics
352
- workspaceContext . diagnostics . handleDiagnostics (
353
- mainUri ,
354
- DiagnosticsManager . sourcekit ,
355
- [ sourcekitErrorDiagnostic , sourcekitWarningDiagnostic ]
356
- ) ;
357
- workspaceContext . diagnostics . handleDiagnostics ( mainUri , DiagnosticsManager . swiftc , [
358
- swiftcErrorDiagnostic ,
359
- ] ) ;
360
-
361
- // Have SourceKit some have been fixed
362
- workspaceContext . diagnostics . handleDiagnostics (
363
- mainUri ,
364
- DiagnosticsManager . sourcekit ,
365
- [ sourcekitWarningDiagnostic ]
366
- ) ;
367
-
368
- // check kept all
369
- assertWithoutDiagnostic ( mainUri , swiftcErrorDiagnostic ) ;
370
- assertWithoutDiagnostic ( mainUri , sourcekitErrorDiagnostic ) ;
371
- assertHasDiagnostic ( mainUri , sourcekitWarningDiagnostic ) ;
372
- } ) ;
373
375
} ) ;
374
376
375
377
suite ( "keepSourceKit" , ( ) => {
@@ -477,30 +479,6 @@ suite("DiagnosticsManager Test Suite", async function () {
477
479
// kept unique swiftc diagnostic
478
480
assertHasDiagnostic ( mainUri , swiftcWarningDiagnostic ) ;
479
481
} ) ;
480
-
481
- test ( "fix swiftc diagnostic" , async ( ) => {
482
- // Add initial diagnostics
483
- workspaceContext . diagnostics . handleDiagnostics (
484
- mainUri ,
485
- DiagnosticsManager . sourcekit ,
486
- [ sourcekitErrorDiagnostic , sourcekitWarningDiagnostic ]
487
- ) ;
488
- workspaceContext . diagnostics . handleDiagnostics ( mainUri , DiagnosticsManager . swiftc , [
489
- swiftcErrorDiagnostic ,
490
- ] ) ;
491
-
492
- // Have SourceKit some have been fixed
493
- workspaceContext . diagnostics . handleDiagnostics (
494
- mainUri ,
495
- DiagnosticsManager . sourcekit ,
496
- [ sourcekitWarningDiagnostic ]
497
- ) ;
498
-
499
- // check kept all
500
- assertWithoutDiagnostic ( mainUri , swiftcErrorDiagnostic ) ;
501
- assertWithoutDiagnostic ( mainUri , sourcekitErrorDiagnostic ) ;
502
- assertHasDiagnostic ( mainUri , sourcekitWarningDiagnostic ) ;
503
- } ) ;
504
482
} ) ;
505
483
506
484
suite ( "keepSwiftc" , ( ) => {
@@ -583,30 +561,6 @@ suite("DiagnosticsManager Test Suite", async function () {
583
561
// kept unique SourceKit diagnostic
584
562
assertHasDiagnostic ( mainUri , sourcekitWarningDiagnostic ) ;
585
563
} ) ;
586
-
587
- test ( "fix swiftc diagnostic" , async ( ) => {
588
- // Add initial diagnostics
589
- workspaceContext . diagnostics . handleDiagnostics (
590
- mainUri ,
591
- DiagnosticsManager . sourcekit ,
592
- [ sourcekitErrorDiagnostic , sourcekitWarningDiagnostic ]
593
- ) ;
594
- workspaceContext . diagnostics . handleDiagnostics ( mainUri , DiagnosticsManager . swiftc , [
595
- swiftcErrorDiagnostic ,
596
- ] ) ;
597
-
598
- // Have SourceKit some have been fixed
599
- workspaceContext . diagnostics . handleDiagnostics (
600
- mainUri ,
601
- DiagnosticsManager . sourcekit ,
602
- [ sourcekitWarningDiagnostic ]
603
- ) ;
604
-
605
- // check kept all
606
- assertWithoutDiagnostic ( mainUri , swiftcErrorDiagnostic ) ;
607
- assertWithoutDiagnostic ( mainUri , sourcekitErrorDiagnostic ) ;
608
- assertHasDiagnostic ( mainUri , sourcekitWarningDiagnostic ) ;
609
- } ) ;
610
564
} ) ;
611
565
612
566
suite ( "onlySourceKit" , ( ) => {
@@ -734,30 +688,64 @@ suite("DiagnosticsManager Test Suite", async function () {
734
688
assertWithoutDiagnostic ( mainUri , sourcekitErrorDiagnostic ) ;
735
689
assertWithoutDiagnostic ( mainUri , sourcekitWarningDiagnostic ) ;
736
690
} ) ;
691
+ } ) ;
737
692
738
- test ( "fix swiftc diagnostic" , async ( ) => {
739
- // Add initial diagnostics
740
- workspaceContext . diagnostics . handleDiagnostics (
741
- mainUri ,
742
- DiagnosticsManager . sourcekit ,
743
- [ sourcekitErrorDiagnostic , sourcekitWarningDiagnostic ]
744
- ) ;
745
- workspaceContext . diagnostics . handleDiagnostics ( mainUri , DiagnosticsManager . swiftc , [
746
- swiftcErrorDiagnostic ,
747
- ] ) ;
693
+ test ( "SourceKit removes swiftc diagnostic (SourceKit shows first)" , async ( ) => {
694
+ // Add initial diagnostics
695
+ workspaceContext . diagnostics . handleDiagnostics ( mainUri , DiagnosticsManager . sourcekit , [
696
+ sourcekitErrorDiagnostic ,
697
+ sourcekitWarningDiagnostic ,
698
+ ] ) ;
699
+ workspaceContext . diagnostics . handleDiagnostics ( mainUri , DiagnosticsManager . swiftc , [
700
+ swiftcErrorDiagnostic ,
701
+ ] ) ;
702
+
703
+ // Have SourceKit indicate some have been fixed
704
+ workspaceContext . diagnostics . handleDiagnostics ( mainUri , DiagnosticsManager . sourcekit , [
705
+ sourcekitWarningDiagnostic ,
706
+ ] ) ;
707
+
708
+ // check cleaned up stale error
709
+ assertWithoutDiagnostic ( mainUri , swiftcErrorDiagnostic ) ;
710
+ assertWithoutDiagnostic ( mainUri , sourcekitErrorDiagnostic ) ;
711
+ assertHasDiagnostic ( mainUri , sourcekitWarningDiagnostic ) ;
712
+ } ) ;
748
713
749
- // Have SourceKit some have been fixed
750
- workspaceContext . diagnostics . handleDiagnostics (
751
- mainUri ,
752
- DiagnosticsManager . sourcekit ,
753
- [ sourcekitWarningDiagnostic ]
754
- ) ;
714
+ test ( "SourceKit removes swiftc diagnostic (swiftc shows first)" , async ( ) => {
715
+ // Add initial diagnostics
716
+ workspaceContext . diagnostics . handleDiagnostics ( mainUri , DiagnosticsManager . swiftc , [
717
+ swiftcErrorDiagnostic ,
718
+ swiftcWarningDiagnostic ,
719
+ ] ) ;
720
+ workspaceContext . diagnostics . handleDiagnostics ( mainUri , DiagnosticsManager . sourcekit , [
721
+ sourcekitErrorDiagnostic ,
722
+ ] ) ;
723
+
724
+ // Have SourceKit indicate has been fixed
725
+ workspaceContext . diagnostics . handleDiagnostics (
726
+ mainUri ,
727
+ DiagnosticsManager . sourcekit ,
728
+ [ ]
729
+ ) ;
755
730
756
- // check kept all
757
- assertWithoutDiagnostic ( mainUri , swiftcErrorDiagnostic ) ;
758
- assertWithoutDiagnostic ( mainUri , sourcekitErrorDiagnostic ) ;
759
- assertWithoutDiagnostic ( mainUri , sourcekitWarningDiagnostic ) ;
760
- } ) ;
731
+ // check cleaned up stale error
732
+ assertWithoutDiagnostic ( mainUri , swiftcErrorDiagnostic ) ;
733
+ assertWithoutDiagnostic ( mainUri , sourcekitErrorDiagnostic ) ;
734
+ assertHasDiagnostic ( mainUri , swiftcWarningDiagnostic ) ;
735
+ } ) ;
736
+
737
+ test ( "don't remove swiftc diagnostics when SourceKit never matched" , async ( ) => {
738
+ workspaceContext . diagnostics . handleDiagnostics ( mainUri , DiagnosticsManager . swiftc , [
739
+ swiftcErrorDiagnostic ,
740
+ ] ) ;
741
+
742
+ workspaceContext . diagnostics . handleDiagnostics ( mainUri , DiagnosticsManager . sourcekit , [
743
+ sourcekitWarningDiagnostic ,
744
+ ] ) ;
745
+
746
+ // Should not have cleaned up swiftc error
747
+ assertHasDiagnostic ( mainUri , swiftcErrorDiagnostic ) ;
748
+ assertHasDiagnostic ( mainUri , sourcekitWarningDiagnostic ) ;
761
749
} ) ;
762
750
} ) ;
763
751
} ) ;
0 commit comments