Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bump Kotlin to 1.7.0-RC #2508

Merged
merged 16 commits into from May 31, 2022
Merged
Show file tree
Hide file tree
Changes from 11 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
6 changes: 3 additions & 3 deletions gradle.properties
Expand Up @@ -2,12 +2,12 @@
dokka_version=1.7.0-SNAPSHOT
dokka_integration_test_parallelism=2
# Versions
kotlin_version=1.6.21
kotlin_version=1.7.0-RC
coroutines_version=1.6.0
kotlinx_html_version=0.7.3
kotlin_plugin_version=211-1.6.21-release-334-IJ7442.40
kotlin_plugin_version=213-1.7.0-RC-release-217-IJ6777.52
jsoup_version=1.14.3
idea_version=211.7442.40
idea_version=213.6777.52
language_version=1.4
jackson_version=2.12.4
freemarker_version=2.3.31
Expand Down
4 changes: 3 additions & 1 deletion integration-tests/gradle/projects/it-basic/build.gradle.kts
Expand Up @@ -12,7 +12,9 @@ plugins {

buildscript {
dependencies {
classpath("org.jetbrains.dokka:dokka-base:${System.getenv("DOKKA_VERSION")}")
classpath("org.jetbrains.dokka:dokka-base:${System.getenv("DOKKA_VERSION")}") {
exclude(group = "org.jetbrains.dokka", module = "dokka-analysis") // Gradle has embeddable Kotlin compiler
}
}
}

Expand Down
15 changes: 14 additions & 1 deletion kotlin-analysis/intellij-dependency/build.gradle.kts
Expand Up @@ -19,7 +19,17 @@ repositories {
val intellijCore: Configuration by configurations.creating

fun intellijCoreAnalysis() = zipTree(intellijCore.singleFile).matching {
include("intellij-core-analysis-deprecated.jar")
include("intellij-core.jar")
}

val jpsStandalone: Configuration by configurations.creating

fun jpsModel() = zipTree(jpsStandalone.singleFile).matching {
include("jps-model.jar")
include("aalto-xml-*.jar")
}.filter {
println(it.name)
true
}

dependencies {
Expand All @@ -34,6 +44,9 @@ dependencies {
val idea_version: String by project
intellijCore("com.jetbrains.intellij.idea:intellij-core:$idea_version")
implementation(intellijCoreAnalysis())

jpsStandalone("com.jetbrains.intellij.idea:jps-standalone:$idea_version")
implementation(jpsModel())
}

tasks {
Expand Down
Expand Up @@ -542,6 +542,8 @@ class AnalysisEnvironment(val messageCollector: MessageCollector, val analysisPl
}
}

// Set up JDK classpath roots explicitly because of https://github.com/JetBrains/kotlin/commit/f89765eb33dd95c8de33a919cca83651b326b246
fun configureJdkClasspathRoots() = configuration.configureJdkClasspathRoots()
/**
* Adds path to classpath.
* $path: path to add
Expand Down
Expand Up @@ -15,6 +15,10 @@ class CoreKotlinCacheService(private val resolutionFacade: DokkaResolutionFacade
return resolutionFacade
}

override fun getResolutionFacade(element: KtElement): ResolutionFacade {
return resolutionFacade
}

override fun getResolutionFacadeByFile(
file: PsiFile,
platform: org.jetbrains.kotlin.platform.TargetPlatform
Expand Down
Expand Up @@ -17,7 +17,7 @@ internal fun createEnvironmentAndFacade(
): EnvironmentAndFacade =
AnalysisEnvironment(DokkaMessageCollector(logger), sourceSet.analysisPlatform).run {
if (analysisPlatform == Platform.jvm) {
addClasspath(PathUtil.getJdkClassesRootsFromCurrentJre())
configureJdkClasspathRoots()
}

val parentSourceSets = sourceSets.filter { it.sourceSetID in sourceSet.dependentSourceSets }
Expand Down
Expand Up @@ -209,6 +209,7 @@ class JvmDependenciesIndexImpl(_roots: List<JavaRoot>) : JvmDependenciesIndex {

val fileExtension = when (rootType) {
JavaRoot.RootType.BINARY -> JavaClassFileType.INSTANCE.defaultExtension
JavaRoot.RootType.BINARY_SIG -> "sig"
JavaRoot.RootType.SOURCE -> JavaFileType.INSTANCE.defaultExtension
}

Expand Down
Expand Up @@ -90,7 +90,7 @@ class KotlinCliJavaFileManagerImpl(private val myPsiManager: PsiManager) : CoreJ
val (classId, classFileContentFromRequest, outerClassFromRequest) = request
val virtualFile = findVirtualFileForTopLevelClass(classId, searchScope) ?: return null

if (!usePsiClassFilesReading && virtualFile.extension == "class") {
if (!usePsiClassFilesReading && (virtualFile.extension == "class" || virtualFile.extension == "sig")) {
synchronized(binaryCache){
// We return all class files' names in the directory in knownClassNamesInPackage method, so one may request an inner class
return binaryCache.getOrPut(classId) {
Expand Down Expand Up @@ -215,6 +215,7 @@ class KotlinCliJavaFileManagerImpl(private val myPsiManager: PsiManager) : CoreJ

val vFile = when (rootType) {
JavaRoot.RootType.BINARY -> packageDir.findChild("$topLevelClassName.class")
JavaRoot.RootType.BINARY_SIG -> packageDir.findChild("$topLevelClassName.sig")
JavaRoot.RootType.SOURCE -> packageDir.findChild("$topLevelClassName.java")
} ?: return null

Expand All @@ -235,7 +236,7 @@ class KotlinCliJavaFileManagerImpl(private val myPsiManager: PsiManager) : CoreJ
val result = THashSet<String>()
index.traverseDirectoriesInPackage(packageFqName, continueSearch = { dir, _ ->
for (child in dir.children) {
if (child.extension == "class" || child.extension == "java") {
if (child.extension == "class" || child.extension == "java" || child.extension == "sig") {
result.add(child.nameWithoutExtension)
}
}
Expand Down
Expand Up @@ -9,7 +9,9 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameSafe
import org.jetbrains.kotlin.resolve.scopes.receivers.ExtensionReceiver
import org.jetbrains.kotlin.types.KotlinType
import org.jetbrains.kotlin.types.TypeProjection
import org.jetbrains.kotlin.types.UnresolvedType
import org.jetbrains.kotlin.types.error.ErrorType
import org.jetbrains.kotlin.types.error.ErrorTypeConstructor
import org.jetbrains.kotlin.types.error.ErrorTypeKind

fun TypeReference.Companion.from(d: ReceiverParameterDescriptor): TypeReference? =
when (d.value) {
Expand All @@ -35,9 +37,14 @@ private fun TypeReference.Companion.fromPossiblyRecursive(t: KotlinType, paramTr
?: from(t, paramTrace)

private fun TypeReference.Companion.from(t: KotlinType, paramTrace: List<KotlinType>): TypeReference {
if (t is UnresolvedType) {
if (t is ErrorType) {
val errorConstructor = t.constructor as? ErrorTypeConstructor
return TypeConstructor(
t.presentableName, t.arguments.map { fromProjection(it, paramTrace) }
if (errorConstructor?.kind == ErrorTypeKind.UNRESOLVED_TYPE && errorConstructor.parameters.isNotEmpty())
errorConstructor.getParam(0)
else
t.constructor.toString(),
IgnatBeresnev marked this conversation as resolved.
Show resolved Hide resolved
t.arguments.map { fromProjection(it, paramTrace) }
)
}
return when (val d = t.constructor.declarationDescriptor) {
Expand Down
Expand Up @@ -2,7 +2,6 @@ package org.jetbrains.dokka.base.transformers.pages.samples

import com.intellij.psi.PsiElement
import org.jetbrains.dokka.plugability.DokkaContext
import org.jetbrains.kotlin.idea.kdoc.resolveKDocSampleLink
import org.jetbrains.kotlin.psi.KtBlockExpression
import org.jetbrains.kotlin.psi.KtDeclarationWithBody
import org.jetbrains.kotlin.psi.KtFile
Expand Down
Expand Up @@ -18,7 +18,7 @@ import org.jetbrains.dokka.plugability.DokkaContext
import org.jetbrains.dokka.plugability.plugin
import org.jetbrains.dokka.plugability.querySingle
import org.jetbrains.dokka.transformers.pages.PageTransformer
import org.jetbrains.kotlin.idea.kdoc.resolveKDocSampleLink
import org.jetbrains.kotlin.idea.kdoc.resolveKDocLink
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.DescriptorToSourceUtils
Expand Down Expand Up @@ -55,7 +55,7 @@ abstract class SamplesTransformer(val context: DokkaContext) : PageTransformer {
.querySingle { kotlinAnalysis }[sourceSet] // from sourceSet.sourceRoots
else AnalysisEnvironment(DokkaMessageCollector(context.logger), sourceSet.analysisPlatform).run {
if (analysisPlatform == Platform.jvm) {
addClasspath(PathUtil.getJdkClassesRootsFromCurrentJre())
configureJdkClasspathRoots()
}
sourceSet.classpath.forEach(::addClasspath)

Expand Down Expand Up @@ -124,10 +124,11 @@ abstract class SamplesTransformer(val context: DokkaContext) : PageTransformer {
val packageName = functionName.takeWhile { it != '.' }
val descriptor = resolutionFacade.resolveSession.getPackageFragment(FqName(packageName))
?: return null.also { context.logger.warn("Cannot find descriptor for package $packageName") }
val symbol = resolveKDocSampleLink(
val symbol = resolveKDocLink(
BindingContext.EMPTY,
resolutionFacade,
descriptor,
null,
functionName.split(".")
).firstOrNull() ?: return null.also { context.logger.warn("Unresolved function $functionName in @sample") }
return DescriptorToSourceUtils.descriptorToDeclaration(symbol)
Expand Down
Expand Up @@ -534,7 +534,7 @@ private class DokkaDescriptorVisitor(
parameter(index, desc, DRIWithPlatformInfo(dri, actual))
},
sources = actual,
expectPresentInSet = sourceSet.takeIf { isExpect },
expectPresentInSet = if(isExpect) sourceSet else null,
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suppose this can be https://youtrack.jetbrains.com/issue/KT-52561 that is fixed in JetBrains/kotlin@c526ed7 (Kotlin 1.7.0)

visibility = descriptor.visibility.toDokkaVisibility().toSourceSetDependent(),
documentation = descriptor.resolveDescriptorData().let { sourceSetDependent ->
if (descriptor.isPrimary) {
Expand Down
Expand Up @@ -40,7 +40,7 @@ import org.jetbrains.dokka.utilities.parallelMapNotNull
import org.jetbrains.kotlin.asJava.elements.KtLightAbstractAnnotation
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.cli.jvm.config.JavaSourceRoot
import org.jetbrains.kotlin.idea.refactoring.fqName.getKotlinFqName
import org.jetbrains.kotlin.idea.base.utils.fqname.getKotlinFqName
import org.jetbrains.kotlin.load.java.JvmAbi
import org.jetbrains.kotlin.load.java.propertyNameByGetMethodName
import org.jetbrains.kotlin.load.java.propertyNamesBySetMethodName
Expand Down
Expand Up @@ -3,7 +3,7 @@ package org.jetbrains.dokka.base.translators.psi
import com.intellij.psi.PsiClass
import com.intellij.psi.PsiMethod
import org.jetbrains.dokka.utilities.DokkaLogger
import org.jetbrains.kotlin.idea.refactoring.fqName.getKotlinFqName
import org.jetbrains.kotlin.idea.base.utils.fqname.getKotlinFqName
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.utils.addToStdlib.safeAs

Expand Down
Expand Up @@ -19,7 +19,7 @@ import org.jetbrains.dokka.utilities.DokkaLogger
import org.jetbrains.dokka.utilities.enumValueOrNull
import org.jetbrains.dokka.utilities.htmlEscape
import org.jetbrains.kotlin.idea.kdoc.resolveKDocLink
import org.jetbrains.kotlin.idea.refactoring.fqName.getKotlinFqName
import org.jetbrains.kotlin.idea.base.utils.fqname.getKotlinFqName
import org.jetbrains.kotlin.idea.util.CommentSaver.Companion.tokenType
import org.jetbrains.kotlin.psi.psiUtil.getNextSiblingIgnoringWhitespace
import org.jetbrains.kotlin.psi.psiUtil.siblings
Expand Down
Expand Up @@ -9,7 +9,7 @@ import org.jetbrains.dokka.links.DRI
import org.jetbrains.dokka.utilities.DokkaLogger
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.idea.kdoc.findKDoc
import org.jetbrains.kotlin.idea.refactoring.fqName.getKotlinFqName
import org.jetbrains.kotlin.idea.base.utils.fqname.getKotlinFqName
import org.jetbrains.kotlin.idea.search.usagesSearch.descriptor
import org.jetbrains.kotlin.kdoc.psi.impl.KDocTag
import org.jetbrains.kotlin.psi.KtDeclaration
Expand Down
Expand Up @@ -126,7 +126,7 @@ internal class JavadocIndexTest : AbstractJavadocTemplateMapTest() {
class Clazz {
fun funName(param: List<String>) {}
fun funName(param: String) {}
fun funName(param: Map<String>) {}
fun funName(param: Map<String, String>>) {}
fun funName(param: Int) {}
}
""".trimIndent()
Expand All @@ -144,10 +144,10 @@ internal class JavadocIndexTest : AbstractJavadocTemplateMapTest() {
assertEquals(1, it.callable!!.params.size)
}

assertEquals("[kotlin.String]", indexElementDRIs[0].getParam(0))
assertEquals("kotlin.Int", indexElementDRIs[1].getParam(0))
assertEquals("kotlin.String", indexElementDRIs[2].getParam(0))
assertEquals("kotlin.collections.List[kotlin.String]", indexElementDRIs[3].getParam(0))
assertEquals("kotlin.Int", indexElementDRIs[0].getParam(0))
assertEquals("kotlin.String", indexElementDRIs[1].getParam(0))
assertEquals("kotlin.collections.List[kotlin.String]", indexElementDRIs[2].getParam(0))
assertEquals("kotlin.collections.Map[kotlin.String,kotlin.String]", indexElementDRIs[3].getParam(0))
}
}

Expand Down
Expand Up @@ -25,6 +25,7 @@ internal fun Project.classpathOf(sourceSet: KotlinSourceSet): FileCollection {
private fun Project.compileClasspathOf(compilation: KotlinCompilation): FileCollection {
if (compilation.target.isAndroidTarget()) {
// This is a workaround for https://youtrack.jetbrains.com/issue/KT-33893
@Suppress("DEPRECATION") // for compatibility
return compilation.compileKotlinTask.cast<KotlinCompile>().classpath
IgnatBeresnev marked this conversation as resolved.
Show resolved Hide resolved
}

Expand All @@ -34,5 +35,6 @@ private fun Project.compileClasspathOf(compilation: KotlinCompilation): FileColl
?: files()

return compilation.compileDependencyFiles + platformDependencyFiles +
@Suppress("DEPRECATION") // for compatibility
(compilation.compileKotlinTask.run { this as? KotlinCompile }?.classpath ?: files())
}
7 changes: 5 additions & 2 deletions runners/maven-plugin/build.gradle.kts
Expand Up @@ -13,9 +13,12 @@ dependencies {
implementation(kotlin("stdlib-jdk8"))
}

val mavenBuildDir = setupMaven.mavenBuildDir
val mavenBinDir = setupMaven.mavenBinDir

tasks.named<Delete>("clean") {
delete(setupMaven.mavenBuildDir)
delete(setupMaven.mavenBinDir)
delete(mavenBuildDir)
delete(mavenBinDir)
}

/**
Expand Down
3 changes: 2 additions & 1 deletion runners/maven-plugin/src/main/kotlin/DokkaMojo.kt
Expand Up @@ -17,6 +17,7 @@ import org.apache.maven.project.MavenProjectHelper
import org.apache.maven.repository.RepositorySystem
import org.codehaus.plexus.archiver.Archiver
import org.codehaus.plexus.archiver.jar.JarArchiver
import org.codehaus.plexus.archiver.util.DefaultFileSet
import org.codehaus.plexus.util.xml.Xpp3Dom
import org.jetbrains.dokka.*
import org.jetbrains.dokka.DokkaConfiguration.ExternalDocumentationLink
Expand Down Expand Up @@ -404,7 +405,7 @@ class DokkaJavadocJarMojo : AbstractDokkaMojo(listOf(javadocDependency)) {
val archiver = MavenArchiver()
archiver.archiver = jarArchiver
archiver.setOutputFile(javadocJar)
archiver.archiver.addDirectory(File(outputDir), arrayOf("**/**"), arrayOf())
archiver.archiver.addFileSet(DefaultFileSet().apply { directory = File(outputDir) })

archive.isAddMavenDescriptor = false
archiver.createArchive(session, mavenProject, archive)
Expand Down