diff --git a/build.gradle.kts b/build.gradle.kts index 23290cdabd2..5741dbcd04c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -369,6 +369,7 @@ val coreLibProjects by extra { val projectsWithEnabledContextReceivers by extra { listOf( ":core:descriptors.jvm", + ":compiler:frontend.common", ":compiler:fir:fir2ir", ":kotlin-lombok-compiler-plugin.k1", ) diff --git a/compiler/frontend.common/src/org/jetbrains/kotlin/diagnostics/KtDiagnosticReportContextHelpers.kt b/compiler/frontend.common/src/org/jetbrains/kotlin/diagnostics/KtDiagnosticReportContextHelpers.kt new file mode 100644 index 00000000000..a8f29a01565 --- /dev/null +++ b/compiler/frontend.common/src/org/jetbrains/kotlin/diagnostics/KtDiagnosticReportContextHelpers.kt @@ -0,0 +1,118 @@ +/* + * Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. + */ + +package org.jetbrains.kotlin.diagnostics + +import org.jetbrains.kotlin.AbstractKtSourceElement + +context(DiagnosticContext) +fun DiagnosticReporter.reportOn( + source: AbstractKtSourceElement?, + factory: KtDiagnosticFactory0, + positioningStrategy: AbstractSourceElementPositioningStrategy? = null +) { + reportOn(source, factory, this@DiagnosticContext, positioningStrategy) +} + +context(DiagnosticContext) +fun DiagnosticReporter.reportOn( + source: AbstractKtSourceElement?, + factory: KtDiagnosticFactory1, + a: A, + positioningStrategy: AbstractSourceElementPositioningStrategy? = null +) { + reportOn(source, factory, a, this@DiagnosticContext, positioningStrategy) +} + +context(DiagnosticContext) +fun DiagnosticReporter.reportOn( + source: AbstractKtSourceElement?, + factory: KtDiagnosticFactory2, + a: A, + b: B, + positioningStrategy: AbstractSourceElementPositioningStrategy? = null +) { + reportOn(source, factory, a, b, this@DiagnosticContext, positioningStrategy) +} + +context(DiagnosticContext) +fun DiagnosticReporter.reportOn( + source: AbstractKtSourceElement?, + factory: KtDiagnosticFactory3, + a: A, + b: B, + c: C, + positioningStrategy: AbstractSourceElementPositioningStrategy? = null +) { + reportOn(source, factory, a, b, c, this@DiagnosticContext, positioningStrategy) +} + +context(DiagnosticContext) +fun DiagnosticReporter.reportOn( + source: AbstractKtSourceElement?, + factory: KtDiagnosticFactory4, + a: A, + b: B, + c: C, + d: D, + positioningStrategy: AbstractSourceElementPositioningStrategy? = null +) { + reportOn(source, factory, a, b, c, d, this@DiagnosticContext, positioningStrategy) +} + +context(DiagnosticContext) +fun DiagnosticReporter.reportOn( + source: AbstractKtSourceElement?, + factory: KtDiagnosticFactoryForDeprecation0, + positioningStrategy: AbstractSourceElementPositioningStrategy? = null +) { + reportOn(source, factory, this@DiagnosticContext, positioningStrategy) +} + +context(DiagnosticContext) +fun DiagnosticReporter.reportOn( + source: AbstractKtSourceElement?, + factory: KtDiagnosticFactoryForDeprecation1, + a: A, + positioningStrategy: AbstractSourceElementPositioningStrategy? = null +) { + reportOn(source, factory, a, this@DiagnosticContext, positioningStrategy) +} + +context(DiagnosticContext) +fun DiagnosticReporter.reportOn( + source: AbstractKtSourceElement?, + factory: KtDiagnosticFactoryForDeprecation2, + a: A, + b: B, + positioningStrategy: AbstractSourceElementPositioningStrategy? = null +) { + reportOn(source, factory, a, b, this@DiagnosticContext, positioningStrategy) +} + +context(DiagnosticContext) +fun DiagnosticReporter.reportOn( + source: AbstractKtSourceElement?, + factory: KtDiagnosticFactoryForDeprecation3, + a: A, + b: B, + c: C, + positioningStrategy: AbstractSourceElementPositioningStrategy? = null +) { + reportOn(source, factory, a, b, c, this@DiagnosticContext, positioningStrategy) +} + +context(DiagnosticContext) +fun DiagnosticReporter.reportOn( + source: AbstractKtSourceElement?, + factory: KtDiagnosticFactoryForDeprecation4, + a: A, + b: B, + c: C, + d: D, + positioningStrategy: AbstractSourceElementPositioningStrategy? = null +) { + reportOn(source, factory, a, b, c, d, this@DiagnosticContext, positioningStrategy) +}