Skip to content

Commit 35396c8

Browse files
committed
Propagate header configuration throughout the compiler
1 parent 86026bd commit 35396c8

File tree

14 files changed

+35
-16
lines changed

14 files changed

+35
-16
lines changed

compiler/cli/cli-js/src/org/jetbrains/kotlin/cli/pipeline/web/WebFrontendPipelinePhase.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,13 @@ object WebFrontendPipelinePhase : PipelinePhase<ConfigurationPipelineArtifact, W
194194
isCommonSource = { groupedSources.isCommonSourceForLt(it) },
195195
fileBelongsToModule = { file, it -> groupedSources.fileBelongsToModuleForLt(file, it) },
196196
buildResolveAndCheckFir = { session, files ->
197-
buildResolveAndCheckFirViaLightTree(session, files, diagnosticsReporter, performanceManager?.let { it::addSourcesStats })
197+
buildResolveAndCheckFirViaLightTree(
198+
session,
199+
files,
200+
diagnosticsReporter,
201+
performanceManager?.let { it::addSourcesStats },
202+
false
203+
)
198204
},
199205
useWasmPlatform = useWasmPlatform,
200206
)

compiler/cli/src/org/jetbrains/kotlin/cli/jvm/compiler/legacy/pipeline/jvmIncrementalCompilerPipelineLightTree.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import org.jetbrains.kotlin.cli.common.messages.MessageCollector
1313
import org.jetbrains.kotlin.cli.common.prepareJvmSessions
1414
import org.jetbrains.kotlin.cli.jvm.compiler.VfsBasedProjectEnvironment
1515
import org.jetbrains.kotlin.config.CompilerConfiguration
16+
import org.jetbrains.kotlin.config.headerCompilation
1617
import org.jetbrains.kotlin.config.perfManager
1718
import org.jetbrains.kotlin.diagnostics.impl.BaseDiagnosticsCollector
1819
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
@@ -94,9 +95,9 @@ private fun FrontendContext.compileModuleToAnalyzedFirViaLightTreeIncrementally(
9495
)
9596

9697
val countFilesAndLines = if (performanceManager == null) null else performanceManager::addSourcesStats
97-
9898
val outputs = sessionsWithSources.map { (session, sources) ->
99-
buildResolveAndCheckFirViaLightTree(session, sources, diagnosticsReporter, countFilesAndLines)
99+
buildResolveAndCheckFirViaLightTree(session, sources, diagnosticsReporter, countFilesAndLines,
100+
configuration.headerCompilation)
100101
}
101102
outputs.runPlatformCheckers(diagnosticsReporter)
102103
FirResult(outputs)

compiler/cli/src/org/jetbrains/kotlin/cli/pipeline/jvm/JvmFrontendPipelinePhase.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -263,7 +263,8 @@ object JvmFrontendPipelinePhase : PipelinePhase<ConfigurationPipelineArtifact, J
263263
val countFilesAndLines = if (perfManager == null) null else perfManager::addSourcesStats
264264
val outputs = sessionsWithSources.map { (session, sources) ->
265265
val rawFirFiles = when (configuration.useLightTree) {
266-
true -> session.buildFirViaLightTree(sources, diagnosticsCollector, countFilesAndLines)
266+
true -> session.buildFirViaLightTree(sources, diagnosticsCollector, countFilesAndLines,
267+
configuration.headerCompilation)
267268
else -> session.buildFirFromKtFiles(sources.asKtFilesList())
268269
}
269270
resolveAndCheckFir(session, rawFirFiles, diagnosticsCollector)

compiler/cli/src/org/jetbrains/kotlin/cli/pipeline/metadata/MetadataFrontendPipelinePhase.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import org.jetbrains.kotlin.cli.pipeline.PerformanceNotifications
3232
import org.jetbrains.kotlin.cli.pipeline.PipelinePhase
3333
import org.jetbrains.kotlin.cli.pipeline.jvm.asKtFilesList
3434
import org.jetbrains.kotlin.config.CommonConfigurationKeys
35+
import org.jetbrains.kotlin.config.headerCompilation
3536
import org.jetbrains.kotlin.config.messageCollector
3637
import org.jetbrains.kotlin.config.moduleName
3738
import org.jetbrains.kotlin.config.perfManager
@@ -110,9 +111,10 @@ object MetadataFrontendPipelinePhase : PipelinePhase<ConfigurationPipelineArtifa
110111
}
111112
)
112113
sessionsWithSources.map { (session, files) ->
113-
val firFiles = session.buildFirViaLightTree(files, diagnosticsReporter) { files, lines ->
114-
perfManager?.addSourcesStats(files, lines)
115-
}
114+
val firFiles = session.buildFirViaLightTree(files, diagnosticsReporter, { files, lines ->
115+
perfManager?.addSourcesStats(files, lines)
116+
},
117+
configuration.headerCompilation)
116118
resolveAndCheckFir(session, firFiles, diagnosticsReporter)
117119
}
118120
} else {

compiler/fir/analysis-tests/legacy-fir-tests/testFixtures/org/jetbrains/kotlin/fir/java/AbstractFirOldFrontendLightClassesTest.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ abstract class AbstractFirOldFrontendLightClassesTest : BaseDiagnosticsTest() {
121121
private fun mapKtFilesToFirFiles(session: FirSession, ktFiles: List<KtFile>, firFiles: MutableList<FirFile>, useLightTree: Boolean) {
122122
val firProvider = (session.firProvider as FirProviderImpl)
123123
if (useLightTree) {
124-
val lightTreeBuilder = LightTree2Fir(session, firProvider.kotlinScopeProvider)
124+
val lightTreeBuilder = LightTree2Fir(session, false, firProvider.kotlinScopeProvider)
125125
ktFiles.mapTo(firFiles) {
126126
val firFile =
127127
lightTreeBuilder.buildFirFile(

compiler/fir/entrypoint/src/org/jetbrains/kotlin/fir/pipeline/firUtils.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,11 @@ fun FirSession.buildFirViaLightTree(
2424
files: Collection<KtSourceFile>,
2525
diagnosticsReporter: DiagnosticReporter?,
2626
reportFilesAndLines: ((Int, Int) -> Unit)?,
27+
useHeaderCompilation: Boolean,
2728
): List<FirFile> {
2829
val firProvider = (firProvider as FirProviderImpl)
2930
val sourcesToPathsMapper = sourcesToPathsMapper
30-
val builder = LightTree2Fir(this, firProvider.kotlinScopeProvider, diagnosticsReporter)
31+
val builder = LightTree2Fir(this, useHeaderCompilation,firProvider.kotlinScopeProvider, diagnosticsReporter)
3132
val shouldCountLines = (reportFilesAndLines != null)
3233
var linesCount = 0
3334
val firFiles = files.map { file ->
@@ -82,8 +83,9 @@ fun buildResolveAndCheckFirViaLightTree(
8283
session: FirSession,
8384
ktFiles: Collection<KtSourceFile>,
8485
diagnosticsReporter: BaseDiagnosticsCollector,
85-
countFilesAndLines: KFunction2<Int, Int, Unit>?
86+
countFilesAndLines: KFunction2<Int, Int, Unit>?,
87+
useHeaderCompilation: Boolean,
8688
): ModuleCompilerAnalyzedOutput {
87-
val firFiles = session.buildFirViaLightTree(ktFiles, diagnosticsReporter, countFilesAndLines)
89+
val firFiles = session.buildFirViaLightTree(ktFiles, diagnosticsReporter, countFilesAndLines, useHeaderCompilation)
8890
return resolveAndCheckFir(session, firFiles, diagnosticsReporter)
8991
}

compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/LightTree2Fir.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ import java.nio.file.Path
2323

2424
class LightTree2Fir(
2525
val session: FirSession,
26+
val headerCompilationMode: Boolean,
2627
private val scopeProvider: FirScopeProvider,
2728
private val diagnosticsReporter: DiagnosticReporter? = null,
2829
) {
@@ -43,7 +44,7 @@ class LightTree2Fir(
4344
sourceFile: KtSourceFile,
4445
linesMapping: KtSourceFileLinesMapping,
4546
): FirFile {
46-
return LightTreeRawFirDeclarationBuilder(session, scopeProvider, lightTree)
47+
return LightTreeRawFirDeclarationBuilder(session, scopeProvider, lightTree, headerCompilationMode)
4748
.convertFile(lightTree.root, sourceFile, linesMapping)
4849
}
4950

compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/LightTreeRawFirDeclarationBuilder.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,10 @@ class LightTreeRawFirDeclarationBuilder(
6161
session: FirSession,
6262
internal val baseScopeProvider: FirScopeProvider,
6363
tree: FlyweightCapableTreeStructure<LighterASTNode>,
64+
private val headerCompilationMode: Boolean = false,
6465
context: Context<LighterASTNode> = Context(),
6566
) : AbstractLightTreeRawFirBuilder(session, tree, context) {
66-
67-
private val expressionConverter = LightTreeRawFirExpressionBuilder(session, tree, this, context)
67+
private val expressionConverter = LightTreeRawFirExpressionBuilder(session, tree, this, headerCompilationMode, context)
6868

6969
/**
7070
* [org.jetbrains.kotlin.parsing.KotlinParsing.parseFile]

compiler/fir/raw-fir/light-tree2fir/src/org/jetbrains/kotlin/fir/lightTree/converter/LightTreeRawFirExpressionBuilder.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ class LightTreeRawFirExpressionBuilder(
6262
session: FirSession,
6363
tree: FlyweightCapableTreeStructure<LighterASTNode>,
6464
private val declarationBuilder: LightTreeRawFirDeclarationBuilder,
65+
val headerCompilationMode: Boolean = false, // TODO: may be unnecessary
6566
context: Context<LighterASTNode> = Context(),
6667
) : AbstractLightTreeRawFirBuilder(session, tree, context) {
6768

compiler/fir/raw-fir/light-tree2fir/testFixtures/org/jetbrains/kotlin/fir/lightTree/AbstractLightTree2FirConverterTestCase.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ abstract class AbstractLightTree2FirConverterTestCase : AbstractRawFirBuilderTes
2525
val path = Paths.get(filePath)
2626
val firFile = LightTree2Fir(
2727
session = FirSessionFactoryHelper.createEmptySession(parseLanguageFeatures(path.readText())),
28+
headerCompilationMode = false,
2829
scopeProvider = StubFirScopeProvider,
2930
diagnosticsReporter = null
3031
).buildFirFile(path)

0 commit comments

Comments
 (0)