[Frontend] Make DiagnosticSuppressor a project-level extension
Originally it was an application-level component, which caused non-trivial
logic and cognitive load to carefully handle those extensions to avoid
memory leaks.
6740a596 introduced a way to easily register `DiagnosticSuppressor` to
project, and this commit continues this work, making it a proper
project-level extension
A lot of changes caused by the fact, that this extension is needed to be
obtained from `BindingContext` (see `BindingContextSuppressCache` and
its usages), so almost all changes are introducing `Project` to
`BindingContext`
^KT-66449 Fixed
This commit is contained in:
committed by
Space Team
parent
a552238874
commit
d352cc9d96
@@ -40,9 +40,10 @@ class MutableDiagnosticsTest : KotlinTestWithEnvironment() {
|
||||
get() = bindingContext.diagnostics
|
||||
|
||||
fun testPropagatingModification() {
|
||||
val base = BindingTraceContext()
|
||||
val middle = DelegatingBindingTrace(base.bindingContext, "middle")
|
||||
val derived = DelegatingBindingTrace(middle.bindingContext, "derived")
|
||||
val project = environment.project
|
||||
val base = BindingTraceContext(project)
|
||||
val middle = DelegatingBindingTrace(base.bindingContext, "middle", project)
|
||||
val derived = DelegatingBindingTrace(middle.bindingContext, "derived", project)
|
||||
|
||||
Assert.assertTrue(base.diagnostics.isEmpty())
|
||||
Assert.assertTrue(middle.diagnostics.isEmpty())
|
||||
@@ -83,9 +84,10 @@ class MutableDiagnosticsTest : KotlinTestWithEnvironment() {
|
||||
}
|
||||
|
||||
fun testCaching() {
|
||||
val base = BindingTraceContext()
|
||||
val middle = DelegatingBindingTrace(base.bindingContext, "middle")
|
||||
val derived = DelegatingBindingTrace(middle.bindingContext, "derived")
|
||||
val project = environment.project
|
||||
val base = BindingTraceContext(project)
|
||||
val middle = DelegatingBindingTrace(base.bindingContext, "middle", project)
|
||||
val derived = DelegatingBindingTrace(middle.bindingContext, "derived", project)
|
||||
|
||||
base.reportDiagnostic()
|
||||
middle.reportDiagnostic()
|
||||
|
||||
Reference in New Issue
Block a user