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 ab086e7ae32..e55da1c1074 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 @@ -384,6 +384,7 @@ abstract class CommonCompilerArguments : CommonToolArguments() { "Unknown value for parameter -Xexplicit-api: '$explicitApi'. Value should be one of ${ExplicitApiMode.availableValues()}" ) put(AnalysisFlags.extendedCompilerChecks, extendedCompilerChecks) + put(AnalysisFlags.allowKotlinPackage, allowKotlinPackage) } } diff --git a/compiler/config/src/org/jetbrains/kotlin/config/AnalysisFlags.kt b/compiler/config/src/org/jetbrains/kotlin/config/AnalysisFlags.kt index 00e02de39e0..b942e22d9f8 100644 --- a/compiler/config/src/org/jetbrains/kotlin/config/AnalysisFlags.kt +++ b/compiler/config/src/org/jetbrains/kotlin/config/AnalysisFlags.kt @@ -53,4 +53,7 @@ object AnalysisFlags { @JvmStatic val extendedCompilerChecks by AnalysisFlag.Delegates.Boolean + + @JvmStatic + val allowKotlinPackage by AnalysisFlag.Delegates.Boolean } diff --git a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirDefaultStarImportingScope.kt b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirDefaultStarImportingScope.kt index be24559892f..52ee5a3c84f 100644 --- a/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirDefaultStarImportingScope.kt +++ b/compiler/fir/resolve/src/org/jetbrains/kotlin/fir/scopes/impl/FirDefaultStarImportingScope.kt @@ -5,10 +5,12 @@ package org.jetbrains.kotlin.fir.scopes.impl +import org.jetbrains.kotlin.config.AnalysisFlags import org.jetbrains.kotlin.config.LanguageVersionSettingsImpl import org.jetbrains.kotlin.fir.FirSession import org.jetbrains.kotlin.fir.declarations.builder.buildImport import org.jetbrains.kotlin.fir.declarations.builder.buildResolvedImport +import org.jetbrains.kotlin.fir.languageVersionSettings import org.jetbrains.kotlin.fir.moduleData import org.jetbrains.kotlin.fir.resolve.ScopeSession import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol @@ -20,7 +22,10 @@ class FirDefaultStarImportingScope( scopeSession: ScopeSession, filter: FirImportingScopeFilter, priority: DefaultImportPriority -) : FirAbstractStarImportingScope(session, scopeSession, filter, lookupInFir = false) { +) : FirAbstractStarImportingScope( + session, scopeSession, filter, + lookupInFir = session.languageVersionSettings.getFlag(AnalysisFlags.allowKotlinPackage) +) { // TODO: put languageVersionSettings into FirSession? override val starImports = run { val analyzerServices = session.moduleData.analyzerServices diff --git a/compiler/test-infrastructure/tests/org/jetbrains/kotlin/test/builders/LanguageVersionSettingsBuilder.kt b/compiler/test-infrastructure/tests/org/jetbrains/kotlin/test/builders/LanguageVersionSettingsBuilder.kt index 33d359e282b..02d27c0365a 100644 --- a/compiler/test-infrastructure/tests/org/jetbrains/kotlin/test/builders/LanguageVersionSettingsBuilder.kt +++ b/compiler/test-infrastructure/tests/org/jetbrains/kotlin/test/builders/LanguageVersionSettingsBuilder.kt @@ -69,6 +69,7 @@ class LanguageVersionSettingsBuilder { analysisFlag(AnalysisFlags.constraintSystemForOverloadResolution, directives.singleOrZeroValue(LanguageSettingsDirectives.CONSTRAINT_SYSTEM_FOR_OVERLOAD_RESOLUTION)), analysisFlag(AnalysisFlags.allowResultReturnType, trueOrNull(LanguageSettingsDirectives.ALLOW_RESULT_RETURN_TYPE in directives)), analysisFlag(AnalysisFlags.explicitApiMode, directives.singleOrZeroValue(LanguageSettingsDirectives.EXPLICIT_API_MODE)), + analysisFlag(AnalysisFlags.allowKotlinPackage, trueOrNull(LanguageSettingsDirectives.ALLOW_KOTLIN_PACKAGE in directives)), analysisFlag(JvmAnalysisFlags.jvmDefaultMode, directives.singleOrZeroValue(LanguageSettingsDirectives.JVM_DEFAULT_MODE)), analysisFlag(JvmAnalysisFlags.inheritMultifileParts, trueOrNull(LanguageSettingsDirectives.INHERIT_MULTIFILE_PARTS in directives)), diff --git a/compiler/test-infrastructure/tests/org/jetbrains/kotlin/test/directives/LanguageSettingsDirectives.kt b/compiler/test-infrastructure/tests/org/jetbrains/kotlin/test/directives/LanguageSettingsDirectives.kt index 5186b68ab8f..0e7dbef2e3f 100644 --- a/compiler/test-infrastructure/tests/org/jetbrains/kotlin/test/directives/LanguageSettingsDirectives.kt +++ b/compiler/test-infrastructure/tests/org/jetbrains/kotlin/test/directives/LanguageSettingsDirectives.kt @@ -52,6 +52,10 @@ object LanguageSettingsDirectives : SimpleDirectivesContainer() { additionalParser = ExplicitApiMode.Companion::fromString ) + val ALLOW_KOTLIN_PACKAGE by directive( + description = "Allow compiling code in package 'kotlin' and allow not requiring kotlin.stdlib in module-info (AnalysisFlags.allowKotlinPackage)" + ) + // --------------------- Jvm Analysis Flags --------------------- val JVM_DEFAULT_MODE by enumDirective( diff --git a/compiler/testData/codegen/box/inlineClasses/result.kt b/compiler/testData/codegen/box/inlineClasses/result.kt index b86ee2f1270..6c758dc1bae 100644 --- a/compiler/testData/codegen/box/inlineClasses/result.kt +++ b/compiler/testData/codegen/box/inlineClasses/result.kt @@ -1,7 +1,7 @@ // IGNORE_BACKEND: WASM, JS_IR -// IGNORE_BACKEND_FIR: JVM_IR // IGNORE_BACKEND: ANDROID // IGNORE_BACKEND: NATIVE +// ALLOW_KOTLIN_PACKAGE // FILE: result.kt package kotlin diff --git a/compiler/testData/codegen/bytecodeText/constants/inlineUnsignedIntConstant.kt b/compiler/testData/codegen/bytecodeText/constants/inlineUnsignedIntConstant.kt index bf888eca433..86898f1d6ac 100644 --- a/compiler/testData/codegen/bytecodeText/constants/inlineUnsignedIntConstant.kt +++ b/compiler/testData/codegen/bytecodeText/constants/inlineUnsignedIntConstant.kt @@ -1,4 +1,5 @@ // !LANGUAGE: +InlineClasses +// ALLOW_KOTLIN_PACKAGE // FILE: uint.kt @@ -8,9 +9,6 @@ inline class UInt(val value: Int) // FILE: test.kt -//this import in required in FIR because default imports don't search in local sources atm -import kotlin.UInt - const val u = UInt(14) fun foo() { diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/directives/JvmEnvironmentConfigurationDirectives.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/directives/JvmEnvironmentConfigurationDirectives.kt index 8d45ba6b353..7435f30cc65 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/directives/JvmEnvironmentConfigurationDirectives.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/directives/JvmEnvironmentConfigurationDirectives.kt @@ -34,8 +34,6 @@ object JvmEnvironmentConfigurationDirectives : SimpleDirectivesContainer() { val WITH_FOREIGN_ANNOTATIONS by directive("Add foreign nullability annotations to classpath") - val ALLOW_KOTLIN_PACKAGE by directive("Don't require stdlib as a java 9 module") - val WITH_JSR305_TEST_ANNOTATIONS by directive( description = """ Add test nullability annotations based on JSR-305 annotations diff --git a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/configuration/JvmEnvironmentConfigurator.kt b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/configuration/JvmEnvironmentConfigurator.kt index b70e8c688e9..848e1f92412 100644 --- a/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/configuration/JvmEnvironmentConfigurator.kt +++ b/compiler/tests-common-new/tests/org/jetbrains/kotlin/test/services/configuration/JvmEnvironmentConfigurator.kt @@ -34,6 +34,7 @@ import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirective import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.SAM_CONVERSIONS import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.STRING_CONCAT import org.jetbrains.kotlin.test.directives.JvmEnvironmentConfigurationDirectives.USE_OLD_INLINE_CLASSES_MANGLING_SCHEME +import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.DISABLE_CALL_ASSERTIONS import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.DISABLE_PARAM_ASSERTIONS import org.jetbrains.kotlin.test.directives.LanguageSettingsDirectives.EMIT_JVM_TYPE_ANNOTATIONS @@ -243,7 +244,7 @@ class JvmEnvironmentConfigurator(testServices: TestServices) : EnvironmentConfig configuration.put(JVMConfigurationKeys.USE_PSI_CLASS_FILES_READING, true) } - if (JvmEnvironmentConfigurationDirectives.ALLOW_KOTLIN_PACKAGE in module.directives) { + if (LanguageSettingsDirectives.ALLOW_KOTLIN_PACKAGE in module.directives) { configuration.put(CLIConfigurationKeys.ALLOW_KOTLIN_PACKAGE, true) } }