From 9b114335fb80a25c3c9f86b7b7a6ca78674ff5bf Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Tue, 29 Aug 2023 19:51:34 +0200 Subject: [PATCH] [stdlib] fix stdlib-common highlighting in K2 IDE plugin K2 IDE Plugin uses only a partial set of built-ins. It only has declarations which are not present in the JVM stdlib as classfiles. Because of that, some major declarations like `kotlin.Unit` are missing, so resolution inside kotlin stdlib common modules does not work. Because of incorrectly resolved stdlib, highlighting and resolution in other files in the kotlin project does not work. This commit adds source versions of stdlib declarations (`/core/builtins/src/kotlin/`) to the common stdlib as a source-set for IDE import. This way all declarations in stdlib common module are properly resolved. The approach might be incorrect as it might introduce possible redeclaration conflicts between common and platform stdlib sources as `/core/builtins/src/kotlin/` source-set is also registered as a source-set for platforms. --- libraries/stdlib/build.gradle.kts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/libraries/stdlib/build.gradle.kts b/libraries/stdlib/build.gradle.kts index 47c513563f6..702117b5208 100644 --- a/libraries/stdlib/build.gradle.kts +++ b/libraries/stdlib/build.gradle.kts @@ -278,7 +278,11 @@ kotlin { srcDir(files("src").builtBy(prepareCommonSources)) srcDir("unsigned/src") if (!kotlinBuildProperties.isInIdeaSync) { - srcDir("$rootDir/core/builtins/src/kotlin/internal") + srcDir("$builtinsDir/src/kotlin/internal") + } + if (kotlinBuildProperties.isInIdeaSync) { + // required for correct resolution of builtin classes in common code in K2 IDE + srcDir("$builtinsDir/src") } } } @@ -303,13 +307,13 @@ kotlin { dependencies { api("org.jetbrains:annotations:13.0") } - val jvmSrcDirs = arrayOf( + val jvmSrcDirs = listOfNotNull( "jvm/src", "jvm/runtime", - "$builtinsDir/src" + "$builtinsDir/src".takeUnless { kotlinBuildProperties.isInIdeaSync } ) - project.sourceSets["main"].java.srcDirs(*jvmSrcDirs) - kotlin.setSrcDirs(jvmSrcDirs.toList()) + project.sourceSets["main"].java.srcDirs(*jvmSrcDirs.toTypedArray()) + kotlin.setSrcDirs(jvmSrcDirs) } val jvmMainJdk7 by getting {