FIR: Add analysis flag for loading IR builtins from sources
This commit is contained in:
committed by
TeamCityServer
parent
c2c02ddb27
commit
5b2acea98f
+8
@@ -369,6 +369,13 @@ abstract class CommonCompilerArguments : CommonToolArguments() {
|
|||||||
)
|
)
|
||||||
var extendedCompilerChecks: Boolean by FreezableVar(false)
|
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(
|
@Argument(
|
||||||
value = "-Xunrestricted-builder-inference",
|
value = "-Xunrestricted-builder-inference",
|
||||||
description = "Eliminate builder inference restrictions like allowance of returning type variables of a builder inference call"
|
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.extendedCompilerChecks, extendedCompilerChecks)
|
||||||
put(AnalysisFlags.allowKotlinPackage, allowKotlinPackage)
|
put(AnalysisFlags.allowKotlinPackage, allowKotlinPackage)
|
||||||
|
put(AnalysisFlags.builtInsFromSources, builtInsFromSources)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -53,4 +53,7 @@ object AnalysisFlags {
|
|||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
val allowKotlinPackage by AnalysisFlag.Delegates.Boolean
|
val allowKotlinPackage by AnalysisFlag.Delegates.Boolean
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
val builtInsFromSources by AnalysisFlag.Delegates.Boolean
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.fir.backend
|
package org.jetbrains.kotlin.fir.backend
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.config.AnalysisFlags
|
||||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.backend.evaluate.evaluateConstants
|
import org.jetbrains.kotlin.fir.backend.evaluate.evaluateConstants
|
||||||
@@ -266,7 +267,6 @@ class Fir2IrConverter(
|
|||||||
val moduleDescriptor = FirModuleDescriptor(session)
|
val moduleDescriptor = FirModuleDescriptor(session)
|
||||||
val symbolTable = SymbolTable(signaturer, irFactory)
|
val symbolTable = SymbolTable(signaturer, irFactory)
|
||||||
val signatureComposer = FirBasedSignatureComposer(mangler)
|
val signatureComposer = FirBasedSignatureComposer(mangler)
|
||||||
// FirBuiltinSymbols(irBuiltIns, symbolTable)
|
|
||||||
val components = Fir2IrComponentsStorage(session, scopeSession, symbolTable, irFactory, signatureComposer)
|
val components = Fir2IrComponentsStorage(session, scopeSession, symbolTable, irFactory, signatureComposer)
|
||||||
val classifierStorage = Fir2IrClassifierStorage(components)
|
val classifierStorage = Fir2IrClassifierStorage(components)
|
||||||
components.classifierStorage = classifierStorage
|
components.classifierStorage = classifierStorage
|
||||||
@@ -275,8 +275,11 @@ class Fir2IrConverter(
|
|||||||
components.visibilityConverter = visibilityConverter
|
components.visibilityConverter = visibilityConverter
|
||||||
val typeConverter = Fir2IrTypeConverter(components)
|
val typeConverter = Fir2IrTypeConverter(components)
|
||||||
components.typeConverter = typeConverter
|
components.typeConverter = typeConverter
|
||||||
val irBuiltIns = //IrBuiltInsOverDescriptors(moduleDescriptor.builtIns, typeTranslator, symbolTable)
|
val irBuiltIns =
|
||||||
IrBuiltInsOverFir(components, languageVersionSettings, moduleDescriptor)
|
IrBuiltInsOverFir(
|
||||||
|
components, languageVersionSettings, moduleDescriptor,
|
||||||
|
languageVersionSettings.getFlag(AnalysisFlags.builtInsFromSources)
|
||||||
|
)
|
||||||
components.irBuiltIns = irBuiltIns
|
components.irBuiltIns = irBuiltIns
|
||||||
val converter = Fir2IrConverter(moduleDescriptor, components)
|
val converter = Fir2IrConverter(moduleDescriptor, components)
|
||||||
val conversionScope = Fir2IrConversionScope()
|
val conversionScope = Fir2IrConversionScope()
|
||||||
|
|||||||
+1
@@ -36,6 +36,7 @@ where advanced options include:
|
|||||||
-Xwasm Use experimental WebAssembly compiler backend
|
-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-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
|
-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-phase-conditions Check pre- and postconditions on phases
|
||||||
-Xcheck-sticky-phase-conditions
|
-Xcheck-sticky-phase-conditions
|
||||||
Run sticky condition checks on subsequent phases as well. Implies -Xcheck-phase-conditions
|
Run sticky condition checks on subsequent phases as well. Implies -Xcheck-phase-conditions
|
||||||
|
|||||||
+1
@@ -147,6 +147,7 @@ where advanced options include:
|
|||||||
-Xuse-type-table Use type table in metadata serialization
|
-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-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
|
-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-phase-conditions Check pre- and postconditions on phases
|
||||||
-Xcheck-sticky-phase-conditions
|
-Xcheck-sticky-phase-conditions
|
||||||
Run sticky condition checks on subsequent phases as well. Implies -Xcheck-phase-conditions
|
Run sticky condition checks on subsequent phases as well. Implies -Xcheck-phase-conditions
|
||||||
|
|||||||
+15
@@ -5,6 +5,9 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.test.runners.ir.interpreter
|
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.platform.jvm.JvmPlatforms
|
||||||
import org.jetbrains.kotlin.test.TargetBackend
|
import org.jetbrains.kotlin.test.TargetBackend
|
||||||
import org.jetbrains.kotlin.test.backend.BlackBoxCodegenSuppressor
|
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.backend.ir.JvmIrBackendFacade
|
||||||
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
|
||||||
import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives
|
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.directives.LanguageSettingsDirectives
|
||||||
import org.jetbrains.kotlin.test.frontend.fir.Fir2IrResultsConverter
|
import org.jetbrains.kotlin.test.frontend.fir.Fir2IrResultsConverter
|
||||||
import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade
|
import org.jetbrains.kotlin.test.frontend.fir.FirFrontendFacade
|
||||||
import org.jetbrains.kotlin.test.model.*
|
import org.jetbrains.kotlin.test.model.*
|
||||||
import org.jetbrains.kotlin.test.preprocessors.IrInterpreterImplicitKotlinImports
|
import org.jetbrains.kotlin.test.preprocessors.IrInterpreterImplicitKotlinImports
|
||||||
import org.jetbrains.kotlin.test.runners.AbstractKotlinCompilerWithTargetBackendTest
|
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.CommonEnvironmentConfigurator
|
||||||
import org.jetbrains.kotlin.test.services.configuration.JvmEnvironmentConfigurator
|
import org.jetbrains.kotlin.test.services.configuration.JvmEnvironmentConfigurator
|
||||||
import org.jetbrains.kotlin.test.services.sourceProviders.IrInterpreterHelpersSourceFilesProvider
|
import org.jetbrains.kotlin.test.services.sourceProviders.IrInterpreterHelpersSourceFilesProvider
|
||||||
@@ -40,6 +46,7 @@ open class AbstractIrInterpreterAfterFir2IrTest : AbstractKotlinCompilerWithTarg
|
|||||||
|
|
||||||
useConfigurators(
|
useConfigurators(
|
||||||
::CommonEnvironmentConfigurator,
|
::CommonEnvironmentConfigurator,
|
||||||
|
::IrInterpreterEnvironmentConfigurator,
|
||||||
::JvmEnvironmentConfigurator,
|
::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