[LL] Commit pending diagnostics from file checkers on top-level declarations

- In KT-62899, diagnostics produced by file checkers weren't suppressed
  because the top-level declarations on which the diagnostics are
  reported were never visited by the same reporter.
  `LLFirDiagnosticVisitor` skips nested declarations by design, as
  diagnostics are collected for each structure element separately.
  However, suppression takes effect when diagnostics are committed on
  some element. If the element is not visited, suppression is skipped
  and the diagnostic is committed at the end without a check by
  `FileStructureElementDiagnosticsCollector.collectForStructureElement`.
- The fix ensures that diagnostics are committed on top-level
  declarations, similar to how this was already done for class members.

^KT-62899 fixed
This commit is contained in:
Marco Pennekamp
2023-11-07 16:58:47 +01:00
committed by Space Team
parent 88d307d52c
commit c9cb2062bd
3 changed files with 34 additions and 18 deletions
@@ -1,5 +1,3 @@
// IGNORE_FIR
class SomeClass
@Suppress("CONFLICTING_OVERLOADS")
@@ -1,7 +1,7 @@
Diagnostics from elements:
for PSI element of type KtStringTemplateExpression at (10,11-34)
ERROR_SUPPRESSION text ranges: [(130,153)]
PSI: KtStringTemplateExpression at (10,11-34)
for PSI element of type KtStringTemplateExpression at (5,11-34)
ERROR_SUPPRESSION text ranges: [(42,65)]
PSI: KtStringTemplateExpression at (5,11-34)
for PSI element of type KtStringTemplateExpression at (3,11-34)
ERROR_SUPPRESSION text ranges: [(27,50)]
PSI: KtStringTemplateExpression at (3,11-34)
for PSI element of type KtStringTemplateExpression at (8,11-34)
ERROR_SUPPRESSION text ranges: [(115,138)]
PSI: KtStringTemplateExpression at (8,11-34)