mirror of
https://github.com/jlengrand/kotlin.git
synced 2026-03-10 08:31:29 +00:00
FIR: Add analysis flag for loading IR builtins from sources
This commit is contained in:
committed by
TeamCityServer
parent
c2c02ddb27
commit
5b2acea98f
@@ -369,6 +369,13 @@ abstract class CommonCompilerArguments : CommonToolArguments() {
|
||||
)
|
||||
var extendedCompilerChecks: Boolean by FreezableVar(false)
|
||||
|
||||
@GradleOption(DefaultValues.BooleanFalseDefault::class)
|
||||
@Argument(
|
||||
value = "-Xbuiltins-from-sources",
|
||||
description = "Compile builtIns from sources"
|
||||
)
|
||||
var builtInsFromSources: Boolean by FreezableVar(false)
|
||||
|
||||
@Argument(
|
||||
value = "-Xunrestricted-builder-inference",
|
||||
description = "Eliminate builder inference restrictions like allowance of returning type variables of a builder inference call"
|
||||
@@ -403,6 +410,7 @@ abstract class CommonCompilerArguments : CommonToolArguments() {
|
||||
)
|
||||
put(AnalysisFlags.extendedCompilerChecks, extendedCompilerChecks)
|
||||
put(AnalysisFlags.allowKotlinPackage, allowKotlinPackage)
|
||||
put(AnalysisFlags.builtInsFromSources, builtInsFromSources)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -53,4 +53,7 @@ object AnalysisFlags {
|
||||
|
||||
@JvmStatic
|
||||
val allowKotlinPackage by AnalysisFlag.Delegates.Boolean
|
||||
|
||||
@JvmStatic
|
||||
val builtInsFromSources by AnalysisFlag.Delegates.Boolean
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
package org.jetbrains.kotlin.fir.backend
|
||||
|
||||
import org.jetbrains.kotlin.config.AnalysisFlags
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.backend.evaluate.evaluateConstants
|
||||
@@ -266,7 +267,6 @@ class Fir2IrConverter(
|
||||
val moduleDescriptor = FirModuleDescriptor(session)
|
||||
val symbolTable = SymbolTable(signaturer, irFactory)
|
||||
val signatureComposer = FirBasedSignatureComposer(mangler)
|
||||
// FirBuiltinSymbols(irBuiltIns, symbolTable)
|
||||
val components = Fir2IrComponentsStorage(session, scopeSession, symbolTable, irFactory, signatureComposer)
|
||||
val classifierStorage = Fir2IrClassifierStorage(components)
|
||||
components.classifierStorage = classifierStorage
|
||||
@@ -275,8 +275,11 @@ class Fir2IrConverter(
|
||||
components.visibilityConverter = visibilityConverter
|
||||
val typeConverter = Fir2IrTypeConverter(components)
|
||||
components.typeConverter = typeConverter
|
||||
val irBuiltIns = //IrBuiltInsOverDescriptors(moduleDescriptor.builtIns, typeTranslator, symbolTable)
|
||||
IrBuiltInsOverFir(components, languageVersionSettings, moduleDescriptor)
|
||||
val irBuiltIns =
|
||||
IrBuiltInsOverFir(
|
||||
components, languageVersionSettings, moduleDescriptor,
|
||||
languageVersionSettings.getFlag(AnalysisFlags.builtInsFromSources)
|
||||
)
|
||||
components.irBuiltIns = irBuiltIns
|
||||
val converter = Fir2IrConverter(moduleDescriptor, components)
|
||||
val conversionScope = Fir2IrConversionScope()
|
||||
|
||||
1
compiler/testData/cli/js/jsExtraHelp.out
vendored
1
compiler/testData/cli/js/jsExtraHelp.out
vendored
@@ -36,6 +36,7 @@ where advanced options include:
|
||||
-Xwasm Use experimental WebAssembly compiler backend
|
||||
-Xallow-kotlin-package Allow compiling code in package 'kotlin' and allow not requiring kotlin.stdlib in module-info
|
||||
-Xallow-result-return-type Allow compiling code when `kotlin.Result` is used as a return type
|
||||
-Xbuiltins-from-sources Compile builtIns from sources
|
||||
-Xcheck-phase-conditions Check pre- and postconditions on phases
|
||||
-Xcheck-sticky-phase-conditions
|
||||
Run sticky condition checks on subsequent phases as well. Implies -Xcheck-phase-conditions
|
||||
|
||||
1
compiler/testData/cli/jvm/extraHelp.out
vendored
1
compiler/testData/cli/jvm/extraHelp.out
vendored
@@ -147,6 +147,7 @@ where advanced options include:
|
||||
-Xuse-type-table Use type table in metadata serialization
|
||||
-Xallow-kotlin-package Allow compiling code in package 'kotlin' and allow not requiring kotlin.stdlib in module-info
|
||||
-Xallow-result-return-type Allow compiling code when `kotlin.Result` is used as a return type
|
||||
-Xbuiltins-from-sources Compile builtIns from sources
|
||||
-Xcheck-phase-conditions Check pre- and postconditions on phases
|
||||
-Xcheck-sticky-phase-conditions
|
||||
Run sticky condition checks on subsequent phases as well. Implies -Xcheck-phase-conditions
|
||||
|
||||
@@ -5,6 +5,9 @@
|
||||
|
||||
package org.jetbrains.kotlin.test.runners.ir.interpreter
|
||||
|
||||
import org.jetbrains.kotlin.config.AnalysisFlag
|
||||
import org.jetbrains.kotlin.config.AnalysisFlags
|
||||
import org.jetbrains.kotlin.config.LanguageVersion
|
||||
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
|
||||
import org.jetbrains.kotlin.test.TargetBackend
|
||||
import org.jetbrains.kotlin.test.backend.BlackBoxCodegenSuppressor
|
||||
@@ -12,12 +15,15 @@ import org.jetbrains.kotlin.test.backend.handlers.IrInterpreterBackendHandler
|
||||
import org.jetbrains.kotlin.test.backend.ir.JvmIrBackendFacade
|
||||
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives
|
||||
import org.jetbrains.kotlin.test.directives.model.RegisteredDirectives
|
||||
import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives
|
||||
import org.jetbrains.kotlin.test.frontend.fir.Fir2IrResultsConverter
|
||||
import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade
|
||||
import org.jetbrains.kotlin.test.model.*
|
||||
import org.jetbrains.kotlin.test.preprocessors.IrInterpreterImplicitKotlinImports
|
||||
import org.jetbrains.kotlin.test.runners.AbstractKotlinCompilerWithTargetBackendTest
|
||||
import org.jetbrains.kotlin.test.services.EnvironmentConfigurator
|
||||
import org.jetbrains.kotlin.test.services.TestServices
|
||||
import org.jetbrains.kotlin.test.services.configuration.CommonEnvironmentConfigurator
|
||||
import org.jetbrains.kotlin.test.services.configuration.JvmEnvironmentConfigurator
|
||||
import org.jetbrains.kotlin.test.services.sourceProviders.IrInterpreterHelpersSourceFilesProvider
|
||||
@@ -40,6 +46,7 @@ open class AbstractIrInterpreterAfterFir2IrTest : AbstractKotlinCompilerWithTarg
|
||||
|
||||
useConfigurators(
|
||||
::CommonEnvironmentConfigurator,
|
||||
::IrInterpreterEnvironmentConfigurator,
|
||||
::JvmEnvironmentConfigurator,
|
||||
)
|
||||
|
||||
@@ -56,3 +63,11 @@ open class AbstractIrInterpreterAfterFir2IrTest : AbstractKotlinCompilerWithTarg
|
||||
}
|
||||
}
|
||||
|
||||
class IrInterpreterEnvironmentConfigurator(testServices: TestServices) : EnvironmentConfigurator(testServices) {
|
||||
override fun provideAdditionalAnalysisFlags(
|
||||
directives: RegisteredDirectives,
|
||||
languageVersion: LanguageVersion
|
||||
): Map<AnalysisFlag<*>, Any?> {
|
||||
return super.provideAdditionalAnalysisFlags(directives, languageVersion) + (AnalysisFlags.builtInsFromSources to true)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user