Skip to content

Commit 0916a66

Browse files
committed
Add FIR tests for header compilation.
^KT-78422
1 parent 5aae9e3 commit 0916a66

File tree

5 files changed

+18
-3
lines changed

5 files changed

+18
-3
lines changed

compiler/test-infrastructure/testFixtures/org/jetbrains/kotlin/test/directives/LanguageSettingsDirectives.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ object LanguageSettingsDirectives : SimpleDirectivesContainer() {
142142
val LINK_VIA_SIGNATURES_K1 by directive("Use linkage via signatures instead of descriptors on the K1 frontend")
143143
val USE_INLINE_SCOPES_NUMBERS by directive("Use inline scopes numbers for inline marker variables")
144144
val DONT_WARN_ON_ERROR_SUPPRESSION by directive("Don't emit warning when an error is suppressed")
145+
val ENABLE_HEADER_MODE by directive("Enable header mode")
145146

146147

147148
// --------------------- Utils ---------------------

compiler/tests-common-new/testFixtures/org/jetbrains/kotlin/test/configuration/BaseDiagnosticConfiguration.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.EXPLICIT_
3535
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.LANGUAGE
3636
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.LANGUAGE_VERSION
3737
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.RETURN_VALUE_CHECKER_MODE
38+
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.ENABLE_HEADER_MODE
3839
import org.jetbrains.kotlin.test.directives.configureFirParser
3940
import org.jetbrains.kotlin.test.frontend.classic.handlers.FirTestDataConsistencyHandler
4041
import org.jetbrains.kotlin.test.frontend.fir.*
@@ -293,6 +294,12 @@ fun TestConfigurationBuilder.configureCommonDiagnosticTestPaths(
293294
LANGUAGE + "+NestedTypeAliases"
294295
}
295296
}
297+
298+
forTestsMatching("compiler/fir/analysis-tests/testData/resolve/headerMode/*") {
299+
defaultDirectives {
300+
+ENABLE_HEADER_MODE
301+
}
302+
}
296303
}
297304

298305
/**

compiler/tests-common-new/testFixtures/org/jetbrains/kotlin/test/frontend/fir/FirFrontendFacade.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ import org.jetbrains.kotlin.platform.wasm.WasmTarget
4545
import org.jetbrains.kotlin.psi.KtFile
4646
import org.jetbrains.kotlin.test.FirParser
4747
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives
48+
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
4849
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
4950
import org.jetbrains.kotlin.test.directives.model.singleValue
5051
import org.jetbrains.kotlin.test.frontend.fir.handlers.FirDiagnosticCollectorService
@@ -310,7 +311,8 @@ open class FirFrontendFacade(testServices: TestServices) : FrontendFacade<FirOut
310311
ktFiles.values,
311312
lightTreeFiles.values,
312313
parser,
313-
testServices.firDiagnosticCollectorService.reporterForLTSyntaxErrors
314+
testServices.firDiagnosticCollectorService.reporterForLTSyntaxErrors,
315+
headerCompilationMode = (LanguageSettingsDirectives.ENABLE_HEADER_MODE in module.directives)
314316
)
315317
val firFiles = firAnalyzerFacade.runResolution()
316318

compiler/tests-common-new/testFixtures/org/jetbrains/kotlin/test/services/CompilerConfigurationProvider.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.psi.KtFile
2626
import org.jetbrains.kotlin.test.TestInfrastructureInternals
2727
import org.jetbrains.kotlin.test.directives.CodegenTestDirectives
2828
import org.jetbrains.kotlin.test.directives.JsEnvironmentConfigurationDirectives
29+
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
2930
import org.jetbrains.kotlin.test.directives.isApplicableTo
3031
import org.jetbrains.kotlin.test.model.*
3132
import org.jetbrains.kotlin.test.utils.MessageCollectorForCompilerTests
@@ -189,6 +190,9 @@ fun createCompilerConfiguration(
189190
configurator.configureCompileConfigurationWithAdditionalConfigurationKeys(configuration, module)
190191
}
191192
}
193+
if (LanguageSettingsDirectives.ENABLE_HEADER_MODE in module.directives) {
194+
configuration.headerCompilation = true
195+
}
192196

193197
return configuration
194198
}

compiler/tests-compiler-utils/testFixtures/org/jetbrains/kotlin/fir/FirAnalyzerFacade.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ class FirAnalyzerFacade(
2525
val ktFiles: Collection<KtFile> = emptyList(), // may be empty if light tree mode enabled
2626
val lightTreeFiles: Collection<KtSourceFile> = emptyList(), // may be empty if light tree mode disabled
2727
val parser: FirParser,
28-
val diagnosticReporterForLightTree: DiagnosticReporter? = null
28+
val diagnosticReporterForLightTree: DiagnosticReporter? = null,
29+
val headerCompilationMode: Boolean = false,
2930
) : AbstractFirAnalyzerFacade() {
3031
private var firFiles: List<FirFile>? = null
3132
private var _scopeSession: ScopeSession? = null
@@ -38,7 +39,7 @@ class FirAnalyzerFacade(
3839
private fun buildRawFir() {
3940
if (firFiles != null) return
4041
firFiles = when (parser) {
41-
FirParser.LightTree -> session.buildFirViaLightTree(lightTreeFiles, diagnosticReporterForLightTree, false, reportFilesAndLines = null)
42+
FirParser.LightTree -> session.buildFirViaLightTree(lightTreeFiles, diagnosticReporterForLightTree, headerCompilationMode, reportFilesAndLines = null)
4243
FirParser.Psi -> session.buildFirFromKtFiles(ktFiles)
4344
}
4445
}

0 commit comments

Comments
 (0)