From e94d75d433f65bb0d5928c3b1ef796b48b998a8f Mon Sep 17 00:00:00 2001 From: Dmitriy Novozhilov Date: Wed, 7 Jul 2021 17:51:01 +0300 Subject: [PATCH] [FIR] Add opt-in annotation which prevents from using symbol.fir --- compiler/fir/build.gradle.kts | 26 +++++++++++++++++++ .../kotlin/fir/symbols/FirBasedSymbol.kt | 4 +++ .../visualizer/render-fir/build.gradle.kts | 6 +++++ idea/idea-frontend-fir/build.gradle.kts | 7 +++++ settings.gradle | 3 ++- 5 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 compiler/fir/build.gradle.kts diff --git a/compiler/fir/build.gradle.kts b/compiler/fir/build.gradle.kts new file mode 100644 index 00000000000..3d16b334326 --- /dev/null +++ b/compiler/fir/build.gradle.kts @@ -0,0 +1,26 @@ +val projectsAllowedToUseFirFromSymbol = listOf( + "analysis-tests", + "dump", + "fir-deserialization", + "fir-serialization", + "fir2ir", + "java", + "jvm", + "raw-fir", + "resolve", + "tree", + "jvm-backend", + "light-tree2fir", + "psi2fir", + "raw-fir.common" +) + +subprojects { + if (name in projectsAllowedToUseFirFromSymbol) { + tasks.withType> { + kotlinOptions { + freeCompilerArgs += "-Xopt-in=org.jetbrains.kotlin.fir.symbols.SymbolInternals" + } + } + } +} diff --git a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/FirBasedSymbol.kt b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/FirBasedSymbol.kt index 28f4975fbfd..48dc4087268 100644 --- a/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/FirBasedSymbol.kt +++ b/compiler/fir/tree/src/org/jetbrains/kotlin/fir/symbols/FirBasedSymbol.kt @@ -13,6 +13,7 @@ import org.jetbrains.kotlin.fir.declarations.FirDeclarationOrigin abstract class FirBasedSymbol { private var _fir: E? = null + @SymbolInternals val fir: E get() = _fir ?: error("Fir is not initialized for $this") @@ -30,3 +31,6 @@ abstract class FirBasedSymbol { val moduleData: FirModuleData get() = fir.moduleData } + +@RequiresOptIn +annotation class SymbolInternals diff --git a/compiler/visualizer/render-fir/build.gradle.kts b/compiler/visualizer/render-fir/build.gradle.kts index 65c35616fef..2137b6aa772 100644 --- a/compiler/visualizer/render-fir/build.gradle.kts +++ b/compiler/visualizer/render-fir/build.gradle.kts @@ -14,3 +14,9 @@ sourceSets { "main" { projectDefault() } "test" { } } + +tasks.withType> { + kotlinOptions { + freeCompilerArgs += "-Xopt-in=org.jetbrains.kotlin.fir.symbols.SymbolInternals" + } +} diff --git a/idea/idea-frontend-fir/build.gradle.kts b/idea/idea-frontend-fir/build.gradle.kts index 65512a2aa18..cb8a2e39aed 100644 --- a/idea/idea-frontend-fir/build.gradle.kts +++ b/idea/idea-frontend-fir/build.gradle.kts @@ -62,6 +62,13 @@ projectTest(jUnit5Enabled = true) { testsJar() +allprojects { + tasks.withType> { + kotlinOptions { + freeCompilerArgs += "-Xopt-in=org.jetbrains.kotlin.fir.symbols.SymbolInternals" + } + } +} val generatorClasspath by configurations.creating diff --git a/settings.gradle b/settings.gradle index cf82cbc198a..5c086097568 100644 --- a/settings.gradle +++ b/settings.gradle @@ -262,7 +262,8 @@ include ":benchmarks", ":wasm:wasm.ir" -include ":compiler:fir:cones", +include ":compiler:fir", + ":compiler:fir:cones", ":compiler:fir:tree", ":compiler:fir:tree:tree-generator", ":compiler:fir:raw-fir:raw-fir.common",