diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.kt index de31381bfe7..0b9859cba2c 100644 --- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.kt +++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.kt @@ -110,6 +110,7 @@ abstract class CommonCompilerArguments : CommonToolArguments() { return HashMap, Any>().apply { put(AnalysisFlag.skipMetadataVersionCheck, skipMetadataVersionCheck) put(AnalysisFlag.multiPlatformDoNotCheckActual, noCheckActual) + put(AnalysisFlag.allowKotlinPackage, allowKotlinPackage) } } diff --git a/compiler/frontend/src/org/jetbrains/kotlin/contracts/parsing/ContractParsingServices.kt b/compiler/frontend/src/org/jetbrains/kotlin/contracts/parsing/ContractParsingServices.kt index f1e5574f4e2..73627216969 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/contracts/parsing/ContractParsingServices.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/contracts/parsing/ContractParsingServices.kt @@ -44,7 +44,9 @@ class ContractParsingServices(val languageVersionSettings: LanguageVersionSettin val contractProvider = ownerDescriptor.getUserData(ContractProviderKey) ?: return val isFeatureTurnedOn = languageVersionSettings.supportsFeature(LanguageFeature.CallsInPlaceEffect) || - languageVersionSettings.supportsFeature(LanguageFeature.ReturnsEffect) + languageVersionSettings.supportsFeature(LanguageFeature.ReturnsEffect) || + // This condition is here for technical purposes of compiling 1.2-runtime with contracts + languageVersionSettings.getFlag(AnalysisFlag.Flags.allowKotlinPackage) val contractDescriptor = when { !isFeatureTurnedOn || !isContractDescriptionCallPreciseCheck(expression, trace.bindingContext) -> null diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/FunctionDescriptorResolver.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/FunctionDescriptorResolver.kt index f3d3ed06329..f66fc96c116 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/FunctionDescriptorResolver.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/FunctionDescriptorResolver.kt @@ -221,7 +221,9 @@ class FunctionDescriptorResolver( val emptyContract = LazyContractProvider.createInitialized(null) val isContractsEnabled = languageVersionSettings.supportsFeature(LanguageFeature.CallsInPlaceEffect) || - languageVersionSettings.supportsFeature(LanguageFeature.ReturnsEffect) + languageVersionSettings.supportsFeature(LanguageFeature.ReturnsEffect) || + // We need to enable contracts if we're compiling "kotlin"-package to be able to ship contracts in stdlib in 1.2 + languageVersionSettings.getFlag(AnalysisFlag.allowKotlinPackage) if (!isContractsEnabled || !contractParsingServices.fastCheckIfContractPresent(function)) return emptyContract diff --git a/compiler/util/src/org/jetbrains/kotlin/config/AnalysisFlag.kt b/compiler/util/src/org/jetbrains/kotlin/config/AnalysisFlag.kt index 223f60ea81f..e8a469113a9 100644 --- a/compiler/util/src/org/jetbrains/kotlin/config/AnalysisFlag.kt +++ b/compiler/util/src/org/jetbrains/kotlin/config/AnalysisFlag.kt @@ -53,5 +53,8 @@ class AnalysisFlag internal constructor( @JvmStatic val jsr305 by Flag.Jsr305StateWarnByDefault + + @JvmStatic + val allowKotlinPackage by Flag.Boolean } }