aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Android.bp2
-rw-r--r--METADATA1
-rw-r--r--build.gradle14
-rw-r--r--buildSrc/src/main/groovy/org/jetbrains/CorrectShadowPublishing.groovy8
-rw-r--r--busytown.gradle14
-rwxr-xr-xbusytown.sh2
-rw-r--r--core/build.gradle5
-rw-r--r--core/src/main/kotlin/Analysis/AnalysisEnvironment.kt97
-rw-r--r--core/src/main/kotlin/Analysis/CoreKotlinCacheService.kt18
-rw-r--r--core/src/main/kotlin/Analysis/CoreProjectFileIndex.kt28
-rw-r--r--core/src/main/kotlin/Analysis/JavaResolveExtension.kt7
-rw-r--r--core/src/main/kotlin/Formats/DacHtmlFormat.kt49
-rw-r--r--core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormat.kt6
-rw-r--r--core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt9
-rw-r--r--core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlGenerator.kt7
-rw-r--r--core/src/main/kotlin/Java/JavaPsiDocumentationBuilder.kt25
-rw-r--r--core/src/main/kotlin/Java/JavadocParser.kt24
-rw-r--r--core/src/main/kotlin/Kotlin/DocumentationBuilder.kt20
-rw-r--r--core/src/main/kotlin/Kotlin/ExternalDocumentationLinkResolver.kt6
-rw-r--r--core/src/main/kotlin/Kotlin/KotlinLanguageService.kt2
-rw-r--r--core/src/main/kotlin/Languages/NewJavaLanguageService.kt4
-rw-r--r--core/src/main/kotlin/Model/Content.kt2
-rw-r--r--core/src/main/kotlin/Model/DocumentationNode.kt23
-rw-r--r--core/src/test/kotlin/format/DacFormatTest.kt4
-rw-r--r--core/src/test/kotlin/javadoc/JavadocTest.kt6
-rw-r--r--core/src/test/kotlin/model/ClassTest.kt2
-rw-r--r--core/src/test/kotlin/model/FunctionTest.kt14
-rw-r--r--core/testdata/format/dac/deprecation/DeprecatedBar.kt17
-rw-r--r--core/testdata/format/dac/deprecation/DeprecatedFoo.java21
-rw-r--r--core/testdata/format/dac/deprecation/dac-as-java/Bar.html83
-rw-r--r--core/testdata/format/dac/deprecation/dac-as-java/DeprecatedBar.html39
-rw-r--r--core/testdata/format/dac/deprecation/dac-as-java/DeprecatedFoo.html37
-rw-r--r--core/testdata/format/dac/deprecation/dac-as-java/Foo.html82
-rw-r--r--core/testdata/format/dac/deprecation/dac/Bar.html83
-rw-r--r--core/testdata/format/dac/deprecation/dac/DeprecatedBar.html39
-rw-r--r--core/testdata/format/dac/deprecation/dac/DeprecatedFoo.html37
-rw-r--r--core/testdata/format/dac/deprecation/dac/Foo.html82
-rw-r--r--core/testdata/format/dac/inheritedMethods/dac-as-java/Child.html41
-rw-r--r--core/testdata/format/dac/inheritedMethods/dac-as-java/Parent.html14
-rw-r--r--core/testdata/format/dac/inheritedMethods/dac/Child.html18
-rw-r--r--core/testdata/format/dac/inheritedMethods/dac/Parent.html12
-rw-r--r--core/testdata/format/dac/javaClassLinks/dac-as-java/Bar.html26
-rw-r--r--core/testdata/format/dac/javaClassLinks/dac-as-java/Foo.html8
-rw-r--r--core/testdata/format/dac/javaClassLinks/dac/Bar.html12
-rw-r--r--core/testdata/format/dac/javaClassLinks/dac/Foo.html6
-rw-r--r--core/testdata/format/dac/javaConstructor/dac-as-java/Foo.html8
-rw-r--r--core/testdata/format/dac/javaConstructor/dac/Foo.html6
-rw-r--r--core/testdata/format/dac/javaDefaultConstructor/dac-as-java/Foo.html8
-rw-r--r--core/testdata/format/dac/javaDefaultConstructor/dac/Foo.html6
-rw-r--r--core/testdata/format/dac/javaMethodVisibilities/dac-as-java/Foo.html26
-rw-r--r--core/testdata/format/dac/javaMethodVisibilities/dac/Foo.html24
-rw-r--r--core/testdata/format/dac/javaSeeTag/Bar.kt1
-rw-r--r--core/testdata/format/dac/javaSeeTag/Foo.java1
-rw-r--r--core/testdata/format/dac/javaSeeTag/dac-as-java/Bar.html13
-rw-r--r--core/testdata/format/dac/javaSeeTag/dac-as-java/Foo.html14
-rw-r--r--core/testdata/format/dac/javaSeeTag/dac/Bar.html11
-rw-r--r--core/testdata/format/dac/javaSeeTag/dac/Foo.html13
-rw-r--r--core/testdata/functions/functionWithAnnotatedLambdaParam.kt7
-rw-r--r--gradle.properties10
-rw-r--r--gradle/wrapper/gradle-wrapper.properties2
-rw-r--r--runners/cli/src/main/kotlin/cli/main.kt18
-rw-r--r--runners/gradle-plugin/build.gradle21
62 files changed, 873 insertions, 372 deletions
diff --git a/Android.bp b/Android.bp
index f67ea232a..e613720d8 100644
--- a/Android.bp
+++ b/Android.bp
@@ -27,7 +27,7 @@ java_binary_host {
// (it references packages under com.sun.tools.doclets which are not
// exported from the jdk.javadoc module) (see b/140097603):
java_version: "1.8",
- kotlincflags: ["-language-version 1.2 -api-version 1.2 -jvm-target 1.8"],
+ kotlincflags: ["-language-version 1.3 -api-version 1.3 -jvm-target 1.8"],
use_tools_jar: true,
java_resource_dirs: ["core/src/main/resources"],
}
diff --git a/METADATA b/METADATA
index 8b9dd3b90..dfb86523a 100644
--- a/METADATA
+++ b/METADATA
@@ -7,6 +7,7 @@ third_party {
type: GIT
value: "https://github.com/Kotlin/dokka.git"
}
+ license_type: NOTICE
last_upgrade_date {
year: 2019
month: 7
diff --git a/build.gradle b/build.gradle
index d282aeb08..08951ee9a 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,5 +1,3 @@
-import org.jetbrains.DependenciesVersionGetter
-
allprojects {
group 'org.jetbrains.dokka'
version dokka_version
@@ -29,6 +27,8 @@ allprojects {
repositories {
mavenCentral()
mavenLocal()
+ maven { url 'https://kotlin.bintray.com/kotlin-plugin' }
+ maven { url 'https://www.jetbrains.com/intellij-repository/releases' }
maven { url "https://dl.bintray.com/jetbrains/markdown" }
maven { url "http://dl.bintray.com/kotlin/kotlin-eap" }
maven { url "https://dl.bintray.com/kotlin/kotlin-dev" }
@@ -70,24 +70,20 @@ task wrapper(type: Wrapper) {
distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip"
}
-def versions = DependenciesVersionGetter.getVersions(project, bundled_kotlin_compiler_version)
-
-ext.ideaVersion = versions["idea.build.id"]
-ext.markdownVersion = versions["markdown.build.id"].replace("%20", " ")
-
configurations {
ideaIC
intellijCore
}
repositories {
+ maven { url 'https://kotlin.bintray.com/kotlin-plugin' }
maven { url 'https://www.jetbrains.com/intellij-repository/snapshots' }
maven { url 'https://www.jetbrains.com/intellij-repository/releases' }
}
dependencies {
- intellijCore "com.jetbrains.intellij.idea:intellij-core:$ideaVersion"
- ideaIC "com.jetbrains.intellij.idea:ideaIC:$ideaVersion"
+ intellijCore "com.jetbrains.intellij.idea:intellij-core:$idea_version"
+ ideaIC "com.jetbrains.intellij.idea:ideaIC:$idea_version"
}
def intellijCoreAnalysis() {
diff --git a/buildSrc/src/main/groovy/org/jetbrains/CorrectShadowPublishing.groovy b/buildSrc/src/main/groovy/org/jetbrains/CorrectShadowPublishing.groovy
index 58cfdcf7a..aacede449 100644
--- a/buildSrc/src/main/groovy/org/jetbrains/CorrectShadowPublishing.groovy
+++ b/buildSrc/src/main/groovy/org/jetbrains/CorrectShadowPublishing.groovy
@@ -4,10 +4,11 @@ import org.gradle.api.Project
import org.gradle.api.artifacts.ModuleVersionIdentifier
import org.gradle.api.artifacts.ProjectDependency
import org.gradle.api.artifacts.SelfResolvingDependency
-import org.gradle.api.publish.internal.ProjectDependencyPublicationResolver
+import org.gradle.api.internal.artifacts.ivyservice.projectmodule.ProjectDependencyPublicationResolver
import org.gradle.api.publish.maven.MavenPom
import org.gradle.api.publish.maven.MavenPublication
+//https://github.com/johnrengelman/shadow/issues/334
static void configure(MavenPublication publication, Project project) {
publication.artifact(project.tasks.shadowJar)
@@ -16,10 +17,9 @@ static void configure(MavenPublication publication, Project project) {
def dependenciesNode = xml.asNode().appendNode('dependencies')
project.configurations.shadow.allDependencies.each {
- //if (! (it instanceof SelfResolvingDependency)) {
if (it instanceof ProjectDependency) {
- def projectDependencyResolver = project.gradle.services.get(ProjectDependencyPublicationResolver)
- ModuleVersionIdentifier identifier = projectDependencyResolver.resolve(it)
+ final ProjectDependencyPublicationResolver projectDependencyResolver = project.gradle.services.get(ProjectDependencyPublicationResolver)
+ final ModuleVersionIdentifier identifier = projectDependencyResolver.resolve(ModuleVersionIdentifier, it)
addDependency(dependenciesNode, identifier)
} else if (!(it instanceof SelfResolvingDependency)) {
addDependency(dependenciesNode, it)
diff --git a/busytown.gradle b/busytown.gradle
index f16d8539a..1b9a7119f 100644
--- a/busytown.gradle
+++ b/busytown.gradle
@@ -23,8 +23,16 @@ allprojects { project ->
destinationDir destDir
archiveName = "maven.zip"
}
- zipMaven.dependsOn(":runners:android-gradle-plugin:publishToDistMaven")
- zipMaven.dependsOn(":runners:gradle-plugin:publishToDistMaven")
- zipMaven.dependsOn(":runners:fatjar:publishToDistMaven")
+
+ def copyRepository = project.tasks.create("copyRepository", Copy) {
+ from file("${project.buildDir}/dist-maven")
+ into "${destDir}/repository"
+ }
+
+ [copyRepository, zipMaven].forEach {
+ it.dependsOn(":runners:android-gradle-plugin:publishToDistMaven")
+ it.dependsOn(":runners:gradle-plugin:publishToDistMaven")
+ it.dependsOn(":runners:fatjar:publishToDistMaven")
+ }
}
}
diff --git a/busytown.sh b/busytown.sh
index d99bdfe91..ca1ae6199 100755
--- a/busytown.sh
+++ b/busytown.sh
@@ -3,4 +3,4 @@ set -e
SCRIPT_DIR="$(cd $(dirname $0) && pwd)"
-"$SCRIPT_DIR"/gradlew -p "$SCRIPT_DIR" -I "$SCRIPT_DIR"/busytown.gradle --no-daemon :core:build :runners:android-gradle-plugin:build :runners:gradle-integration-tests:build zipMaven \ No newline at end of file
+"$SCRIPT_DIR"/gradlew -p "$SCRIPT_DIR" -I "$SCRIPT_DIR"/busytown.gradle --no-daemon :core:build :runners:android-gradle-plugin:build :runners:gradle-integration-tests:build zipMaven copyRepository \ No newline at end of file
diff --git a/core/build.gradle b/core/build.gradle
index 5c80fc84e..4a8928de1 100644
--- a/core/build.gradle
+++ b/core/build.gradle
@@ -30,13 +30,14 @@ dependencies {
compile "org.jetbrains.kotlin:kotlin-compiler:$bundled_kotlin_compiler_version"
compile "org.jetbrains.kotlin:kotlin-script-runtime:$bundled_kotlin_compiler_version"
- compile "teamcity:kotlin-ide-common:$bundled_kotlin_compiler_version"
- compile "org.jetbrains:markdown:$markdownVersion"
+ compile "org.jetbrains:markdown:0.1.41"
implementation "com.squareup.okhttp3:okhttp:4.0.0-RC1"
compile intellijCoreAnalysis()
+ compile "org.jetbrains.kotlin:kotlin-plugin-ij193:$kotlin_plugin_version" //TODO: parametrize ij version after 1.3.70
+
// Google version of the library in the libs folder. Fixing 129528660
// compile 'org.jetbrains.kotlinx:kotlinx-html-jvm:0.6.8'
diff --git a/core/src/main/kotlin/Analysis/AnalysisEnvironment.kt b/core/src/main/kotlin/Analysis/AnalysisEnvironment.kt
index b47f8bdb1..9fea67407 100644
--- a/core/src/main/kotlin/Analysis/AnalysisEnvironment.kt
+++ b/core/src/main/kotlin/Analysis/AnalysisEnvironment.kt
@@ -15,9 +15,13 @@ import com.intellij.openapi.roots.ProjectRootManager
import com.intellij.openapi.util.Disposer
import com.intellij.openapi.vfs.StandardFileSystems
import com.intellij.psi.PsiElement
+import com.intellij.psi.impl.source.javadoc.JavadocManagerImpl
+import com.intellij.psi.javadoc.CustomJavadocTagProvider
+import com.intellij.psi.javadoc.JavadocManager
+import com.intellij.psi.javadoc.JavadocTagInfo
import com.intellij.psi.search.GlobalSearchScope
-import com.intellij.util.io.URLUtil
import org.jetbrains.kotlin.analyzer.*
+import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.builtins.jvm.JvmBuiltIns
import org.jetbrains.kotlin.caches.resolve.KotlinCacheService
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
@@ -35,19 +39,25 @@ import org.jetbrains.kotlin.config.*
import org.jetbrains.kotlin.container.getService
import org.jetbrains.kotlin.container.tryGetService
import org.jetbrains.kotlin.context.ProjectContext
+import org.jetbrains.kotlin.context.withModule
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
+import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
import org.jetbrains.kotlin.load.java.structure.impl.JavaClassImpl
import org.jetbrains.kotlin.name.Name
+import org.jetbrains.kotlin.platform.TargetPlatform
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
+import org.jetbrains.kotlin.platform.konan.KonanPlatforms
import org.jetbrains.kotlin.psi.*
import org.jetbrains.kotlin.resolve.BindingContext
import org.jetbrains.kotlin.resolve.BindingTrace
import org.jetbrains.kotlin.resolve.CompilerEnvironment
+import org.jetbrains.kotlin.resolve.PlatformDependentAnalyzerServices
import org.jetbrains.kotlin.resolve.diagnostics.Diagnostics
-import org.jetbrains.kotlin.resolve.jvm.JvmAnalyzerFacade
import org.jetbrains.kotlin.resolve.jvm.JvmPlatformParameters
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
+import org.jetbrains.kotlin.resolve.jvm.JvmResolverForModuleFactory
+import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatformAnalyzerServices
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import org.jetbrains.kotlin.resolve.lazy.ResolveSession
import org.jetbrains.kotlin.types.KotlinType
@@ -89,10 +99,19 @@ class AnalysisEnvironment(val messageCollector: MessageCollector) : Disposable {
CoreApplicationEnvironment.registerExtensionPoint(Extensions.getRootArea(),
OrderEnumerationHandler.EP_NAME, OrderEnumerationHandler.Factory::class.java)
+ CoreApplicationEnvironment.registerExtensionPoint(Extensions.getArea(environment.project),
+ JavadocTagInfo.EP_NAME, JavadocTagInfo::class.java)
+ CoreApplicationEnvironment.registerExtensionPoint(Extensions.getRootArea(),
+ CustomJavadocTagProvider.EP_NAME, CustomJavadocTagProvider::class.java)
+
projectComponentManager.registerService(ProjectFileIndex::class.java,
projectFileIndex)
projectComponentManager.registerService(ProjectRootManager::class.java,
CoreProjectRootManager(projectFileIndex))
+ projectComponentManager.registerService(JavadocManager::class.java,
+ JavadocManagerImpl(environment.project))
+ projectComponentManager.registerService(CustomJavadocTagProvider::class.java,
+ CustomJavadocTagProvider { emptyList() })
return environment
}
@@ -104,29 +123,40 @@ class AnalysisEnvironment(val messageCollector: MessageCollector) : Disposable {
fun createResolutionFacade(environment: KotlinCoreEnvironment): Pair<DokkaResolutionFacade, DokkaResolutionFacade> {
- val projectContext = ProjectContext(environment.project)
+ val projectContext = ProjectContext(environment.project, "Dokka")
val sourceFiles = environment.getSourceFiles()
val library = object : ModuleInfo {
override val name: Name = Name.special("<library>")
+ override val platform: TargetPlatform
+ get() = JvmPlatforms.defaultJvmPlatform
+ override val analyzerServices: PlatformDependentAnalyzerServices =
+ JvmPlatformAnalyzerServices
override fun dependencies(): List<ModuleInfo> = listOf(this)
}
val module = object : ModuleInfo {
override val name: Name = Name.special("<module>")
+ override val platform: TargetPlatform
+ get() = JvmPlatforms.defaultJvmPlatform
+ override val analyzerServices: PlatformDependentAnalyzerServices =
+ JvmPlatformAnalyzerServices
override fun dependencies(): List<ModuleInfo> = listOf(this, library)
}
val sourcesScope = createSourceModuleSearchScope(environment.project, sourceFiles)
- val builtIns = JvmBuiltIns(projectContext.storageManager)
+ val builtIns = JvmBuiltIns(
+ projectContext.storageManager,
+ JvmBuiltIns.Kind.FROM_CLASS_LOADER
+ )
val javaRoots = classpath
.mapNotNull {
val rootFile = when {
it.extension == "jar" ->
- StandardFileSystems.jar().findFileByPath("${it.absolutePath}${URLUtil.JAR_SEPARATOR}")
+ StandardFileSystems.jar().findFileByPath("${it.absolutePath}${"!/"}")
else ->
StandardFileSystems.local().findFileByPath(it.absolutePath)
}
@@ -134,38 +164,51 @@ class AnalysisEnvironment(val messageCollector: MessageCollector) : Disposable {
rootFile?.let { JavaRoot(it, JavaRoot.RootType.BINARY) }
}
- val resolverForProject = ResolverForProjectImpl(
+ val resolverForProject = object : AbstractResolverForProject<ModuleInfo>(
"Dokka",
projectContext,
- listOf(library, module),
- {
- when (it) {
- library -> ModuleContent(it, emptyList(), GlobalSearchScope.notScope(sourcesScope))
- module -> ModuleContent(it, emptyList(), sourcesScope)
+ modules = listOf(module, library)
+ ) {
+ override fun modulesContent(module: ModuleInfo): ModuleContent<ModuleInfo> =
+ when (module) {
+ library -> ModuleContent(module, emptyList(), GlobalSearchScope.notScope(sourcesScope))
+ module -> ModuleContent(module, emptyList(), sourcesScope)
else -> throw IllegalArgumentException("Unexpected module info")
}
- },
- {
- JvmPlatform.multiTargetPlatform
- },
- LanguageSettingsProvider.Default /* TODO: Fix this */,
- { JvmAnalyzerFacade },
- {
+
+ override fun builtInsForModule(module: ModuleInfo): KotlinBuiltIns = builtIns
+
+ override fun createResolverForModule(
+ descriptor: ModuleDescriptor,
+ moduleInfo: ModuleInfo
+ ): ResolverForModule = JvmResolverForModuleFactory(
JvmPlatformParameters({ content ->
- JvmPackagePartProvider(configuration.languageVersionSettings, content.moduleContentScope).apply {
- addRoots(javaRoots, messageCollector)
- }
+ JvmPackagePartProvider(
+ configuration.languageVersionSettings,
+ content.moduleContentScope
+ )
+ .apply {
+ addRoots(javaRoots, messageCollector)
+ }
}, {
val file = (it as JavaClassImpl).psi.containingFile.virtualFile
if (file in sourcesScope)
module
else
library
- })
- },
- CompilerEnvironment,
- builtIns = builtIns
- )
+ }),
+ CompilerEnvironment,
+ KonanPlatforms.defaultKonanPlatform
+ ).createResolverForModule(
+ descriptor as ModuleDescriptorImpl,
+ projectContext.withModule(descriptor),
+ modulesContent(moduleInfo),
+ this,
+ LanguageVersionSettingsImpl.DEFAULT
+ )
+
+ override fun sdkDependency(module: ModuleInfo): ModuleInfo? = null
+ }
val resolverForLibrary = resolverForProject.resolverForModule(library) // Required before module to initialize library properly
val resolverForModule = resolverForProject.resolverForModule(module)
diff --git a/core/src/main/kotlin/Analysis/CoreKotlinCacheService.kt b/core/src/main/kotlin/Analysis/CoreKotlinCacheService.kt
index 31b8ffc76..d9093760c 100644
--- a/core/src/main/kotlin/Analysis/CoreKotlinCacheService.kt
+++ b/core/src/main/kotlin/Analysis/CoreKotlinCacheService.kt
@@ -5,7 +5,6 @@ import org.jetbrains.kotlin.analyzer.ModuleInfo
import org.jetbrains.kotlin.caches.resolve.KotlinCacheService
import org.jetbrains.kotlin.idea.resolve.ResolutionFacade
import org.jetbrains.kotlin.psi.KtElement
-import org.jetbrains.kotlin.resolve.TargetPlatform
import org.jetbrains.kotlin.resolve.diagnostics.KotlinSuppressCache
@@ -14,11 +13,24 @@ class CoreKotlinCacheService(private val resolutionFacade: DokkaResolutionFacade
return resolutionFacade
}
- override fun getResolutionFacadeByFile(file: PsiFile, platform: TargetPlatform): ResolutionFacade {
+ override fun getResolutionFacade(
+ elements: List<KtElement>,
+ platform: org.jetbrains.kotlin.platform.TargetPlatform
+ ): ResolutionFacade {
return resolutionFacade
}
- override fun getResolutionFacadeByModuleInfo(moduleInfo: ModuleInfo, platform: TargetPlatform): ResolutionFacade? {
+ override fun getResolutionFacadeByFile(
+ file: PsiFile,
+ platform: org.jetbrains.kotlin.platform.TargetPlatform
+ ): ResolutionFacade? {
+ return resolutionFacade
+ }
+
+ override fun getResolutionFacadeByModuleInfo(
+ moduleInfo: ModuleInfo,
+ platform: org.jetbrains.kotlin.platform.TargetPlatform
+ ): ResolutionFacade? {
return resolutionFacade
}
diff --git a/core/src/main/kotlin/Analysis/CoreProjectFileIndex.kt b/core/src/main/kotlin/Analysis/CoreProjectFileIndex.kt
index 319d85b14..4ece8d300 100644
--- a/core/src/main/kotlin/Analysis/CoreProjectFileIndex.kt
+++ b/core/src/main/kotlin/Analysis/CoreProjectFileIndex.kt
@@ -15,6 +15,7 @@ import com.intellij.openapi.util.Condition
import com.intellij.openapi.util.Key
import com.intellij.openapi.util.UserDataHolderBase
import com.intellij.openapi.vfs.StandardFileSystems
+import com.intellij.openapi.vfs.VfsUtilCore.getVirtualFileForJar
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.openapi.vfs.VirtualFileFilter
import com.intellij.psi.search.GlobalSearchScope
@@ -166,9 +167,8 @@ class CoreProjectFileIndex(private val project: Project, contentRoots: List<Cont
private val sdk: Sdk = object : Sdk, RootProvider {
override fun getFiles(rootType: OrderRootType): Array<out VirtualFile> = classpathRoots
- .map { StandardFileSystems.local().findFileByPath(it.file.path) }
- .filterNotNull()
- .toTypedArray()
+ .mapNotNull { StandardFileSystems.local().findFileByPath(it.file.path) }
+ .toTypedArray()
override fun addRootSetChangedListener(p0: RootProvider.RootSetChangedListener) {
throw UnsupportedOperationException()
@@ -329,7 +329,7 @@ class CoreProjectFileIndex(private val project: Project, contentRoots: List<Cont
throw UnsupportedOperationException()
}
- override fun <R : Any?> processOrder(p0: RootPolicy<R>?, p1: R): R {
+ override fun <R : Any?> processOrder(p0: RootPolicy<R>, p1: R): R {
throw UnsupportedOperationException()
}
@@ -354,11 +354,11 @@ class CoreProjectFileIndex(private val project: Project, contentRoots: List<Cont
}
override fun orderEntries(): OrderEnumerator =
- ProjectOrderEnumerator(project, null).using(object : RootModelProvider {
- override fun getModules(): Array<out Module> = arrayOf(module)
+ ProjectOrderEnumerator(project, null).using(object : RootModelProvider {
+ override fun getModules(): Array<out Module> = arrayOf(module)
- override fun getRootModel(p0: Module): ModuleRootModel = this@MyModuleRootManager
- })
+ override fun getRootModel(p0: Module): ModuleRootModel = this@MyModuleRootManager
+ })
override fun <T : Any?> getModuleExtension(p0: Class<T>): T {
throw UnsupportedOperationException()
@@ -404,7 +404,7 @@ class CoreProjectFileIndex(private val project: Project, contentRoots: List<Cont
throw UnsupportedOperationException()
}
- override fun isDependsOn(p0: Module?): Boolean {
+ override fun isDependsOn(p0: Module): Boolean {
throw UnsupportedOperationException()
}
@@ -462,7 +462,7 @@ class CoreProjectFileIndex(private val project: Project, contentRoots: List<Cont
}
override fun getModuleForFile(file: VirtualFile): Module? =
- if (sourceRoots.contains(file)) module else null
+ if (sourceRoots.contains(file)) module else null
private fun List<ContentRoot>.contains(file: VirtualFile): Boolean = any { it.contains(file) }
@@ -516,7 +516,7 @@ class CoreProjectRootManager(val projectFileIndex: CoreProjectFileIndex) : Proje
throw UnsupportedOperationException()
}
- override fun getContentRootsFromAllModules(): Array<out VirtualFile>? {
+ override fun getContentRootsFromAllModules(): Array<out VirtualFile> {
throw UnsupportedOperationException()
}
@@ -524,7 +524,7 @@ class CoreProjectRootManager(val projectFileIndex: CoreProjectFileIndex) : Proje
throw UnsupportedOperationException()
}
- override fun setProjectSdkName(p0: String?) {
+ override fun setProjectSdkName(p0: String) {
throw UnsupportedOperationException()
}
@@ -559,11 +559,11 @@ class CoreProjectRootManager(val projectFileIndex: CoreProjectFileIndex) : Proje
fun ContentRoot.contains(file: VirtualFile) = when (this) {
is JvmContentRoot -> {
val path = if (file.fileSystem.protocol == StandardFileSystems.JAR_PROTOCOL)
- StandardFileSystems.getVirtualFileForJar(file)?.path ?: file.path
+ getVirtualFileForJar(file)?.path ?: file.path
else
file.path
File(path).startsWith(this.file.absoluteFile)
}
is KotlinSourceRoot -> File(file.path).startsWith(File(this.path).absoluteFile)
else -> false
-}
+} \ No newline at end of file
diff --git a/core/src/main/kotlin/Analysis/JavaResolveExtension.kt b/core/src/main/kotlin/Analysis/JavaResolveExtension.kt
index 4dc6b3662..4a4c78e56 100644
--- a/core/src/main/kotlin/Analysis/JavaResolveExtension.kt
+++ b/core/src/main/kotlin/Analysis/JavaResolveExtension.kt
@@ -19,7 +19,6 @@
package org.jetbrains.dokka
import com.intellij.psi.*
-import org.jetbrains.kotlin.asJava.classes.KtLightClass
import org.jetbrains.kotlin.asJava.unwrapped
import org.jetbrains.kotlin.caches.resolve.KotlinCacheService
import org.jetbrains.kotlin.descriptors.*
@@ -29,11 +28,9 @@ import org.jetbrains.kotlin.load.java.sources.JavaSourceElement
import org.jetbrains.kotlin.load.java.structure.*
import org.jetbrains.kotlin.load.java.structure.impl.*
import org.jetbrains.kotlin.name.Name
-import org.jetbrains.kotlin.psi.KtClassOrObject
+import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.psi.KtDeclaration
-import org.jetbrains.kotlin.psi.psiUtil.parameterIndex
import org.jetbrains.kotlin.resolve.jvm.JavaDescriptorResolver
-import org.jetbrains.kotlin.resolve.jvm.platform.JvmPlatform
import org.jetbrains.kotlin.resolve.scopes.DescriptorKindFilter
import org.jetbrains.kotlin.resolve.scopes.MemberScope
@@ -128,4 +125,4 @@ private fun <T : DeclarationDescriptorWithSource> Collection<T>.findByJavaElemen
}
fun PsiElement.javaResolutionFacade() =
- KotlinCacheService.getInstance(project).getResolutionFacadeByFile(this.originalElement.containingFile, JvmPlatform)!!
+ KotlinCacheService.getInstance(project).getResolutionFacadeByFile(this.originalElement.containingFile, JvmPlatforms.defaultJvmPlatform)!!
diff --git a/core/src/main/kotlin/Formats/DacHtmlFormat.kt b/core/src/main/kotlin/Formats/DacHtmlFormat.kt
index 6b42dad19..d997f1ca2 100644
--- a/core/src/main/kotlin/Formats/DacHtmlFormat.kt
+++ b/core/src/main/kotlin/Formats/DacHtmlFormat.kt
@@ -9,7 +9,6 @@ import org.jetbrains.dokka.Kotlin.ParameterInfoNode
import org.jetbrains.dokka.Utilities.firstSentence
import java.lang.Math.max
import java.net.URI
-import java.util.Collections.emptyMap
import kotlin.reflect.KClass
/**
@@ -176,11 +175,25 @@ class DevsiteLayoutHtmlFormatOutputBuilder(
}
}
ul(classes = "nolist") {
- sections.forEach {
- li {
- code {
- metaMarkup(it.children)
+ sections.filter {it.tag == "See Also"}.forEach {
+ it.children.forEach { child ->
+ if (child is ContentNodeLazyLink || child is ContentExternalLink) {
+ li {
+ code {
+ contentNodeToMarkup(child) // Wrap bare links in listItems.
+ } // bare links come from the java-to-kotlin parser.
+ }
}
+ else if (child is ContentUnorderedList) {
+ metaMarkup(child.children) // Already wrapped in listItems.
+ } // this is how we want things to look. No parser currently does this (yet).
+ else if (child is ContentParagraph) {
+ li{
+ code {
+ metaMarkup (child.children) // Replace paragraphs with listItems.
+ } // paragraph-wrapped links come from the kotlin parser
+ }
+ } // NOTE: currently the java-to-java parser does not add See Also links!
}
}
}
@@ -467,7 +480,7 @@ class DevsiteLayoutHtmlFormatOutputBuilder(
id = summaryId
tbody {
if (headerAsRow) {
- developerHeading(header, summaryId)
+ developerHeading(header)
}
nodes.forEach { node ->
row(node)
@@ -501,6 +514,7 @@ class DevsiteLayoutHtmlFormatOutputBuilder(
bodyContent = {
h1 { +page.node.name }
nodeContent(page.node)
+ summaryNodeGroup(page.interfaces.sortedBy { it.nameWithOuterClass().toLowerCase() }, "Interfaces", headerAsRow = false) { classLikeRow(it) }
summaryNodeGroup(page.classes.sortedBy { it.nameWithOuterClass().toLowerCase() }, "Classes", headerAsRow = false) { classLikeRow(it) }
summaryNodeGroup(page.exceptions.sortedBy { it.nameWithOuterClass().toLowerCase() }, "Exceptions", headerAsRow = false) { classLikeRow(it) }
summaryNodeGroup(page.typeAliases.sortedBy { it.nameWithOuterClass().toLowerCase() }, "Type-aliases", headerAsRow = false) { classLikeRow(it) }
@@ -905,25 +919,11 @@ class DevsiteLayoutHtmlFormatOutputBuilder(
}
}
-fun TBODY.developerHeading(
- header: String,
- summaryId: String? = null
-) {
+fun TBODY.developerHeading(header: String) {
tr {
th {
attributes["colSpan"] = "2"
- dheading {
- attributes["ds-is"] = "heading"
- attributes["text"] = header
- attributes["id"] = summaryId ?: header.replace("\\s".toRegex(), "-").toLowerCase()
- attributes["level"] = "h3"
- attributes["toc"] = ""
- attributes["class"] = ""
- h3 {
- attributes["is-upgraded"] = ""
- +header
- }
- }
+ +header
}
}
}
@@ -947,8 +947,3 @@ class DacAsJavaFormatDescriptor : JavaLayoutHtmlFormatDescriptorBase(), DefaultA
override val packageListServiceClass: KClass<out PackageListService> = JavaLayoutHtmlPackageListService::class
override val outputBuilderFactoryClass: KClass<out JavaLayoutHtmlFormatOutputBuilderFactory> = DevsiteLayoutHtmlFormatOutputBuilderFactoryImpl::class
}
-
-fun FlowOrPhrasingContent.dheading(block : DHEADING.() -> Unit = {}) : Unit = DHEADING(consumer).visit(block)
-
-class DHEADING(consumer: TagConsumer<*>) :
- HTMLTag("devsite-heading", consumer, emptyMap(), inlineTag = false, emptyTag = false), HtmlBlockTag
diff --git a/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormat.kt b/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormat.kt
index 66ded62a6..91808f8bf 100644
--- a/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormat.kt
+++ b/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormat.kt
@@ -70,7 +70,7 @@ interface JavaLayoutHtmlUriProvider {
}
fun mainUriOrWarn(node: DocumentationNode): URI? = tryGetMainUri(node) ?: (null).also {
- AssertionError("Not implemented mainUri for ${node.kind}").printStackTrace()
+ AssertionError("Not implemented mainUri for ${node.kind} (${node})").printStackTrace()
}
}
@@ -139,7 +139,3 @@ fun DocumentationNode.signatureForAnchor(logger: DokkaLogger): String {
}
}
-fun DocumentationNode.classNodeNameWithOuterClass(): String {
- assert(kind in NodeKind.classLike)
- return path.dropWhile { it.kind == NodeKind.Package || it.kind == NodeKind.Module }.joinToString(separator = ".") { it.name }
-}
diff --git a/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt b/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt
index 7fbdb1819..a04a9187c 100644
--- a/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt
+++ b/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlFormatOutputBuilder.kt
@@ -51,7 +51,7 @@ open class JavaLayoutHtmlFormatOutputBuilder(
protected fun FlowContent.contentNodesToMarkup(content: List<ContentNode>, contextUri: URI = uri): Unit =
content.forEach { contentNodeToMarkup(it, contextUri) }
- private fun FlowContent.contentNodeToMarkup(content: ContentNode, contextUri: URI) {
+ protected fun FlowContent.contentNodeToMarkup(content: ContentNode, contextUri: URI = uri) {
when (content) {
is ContentText -> +content.text
is ContentSymbol -> span("symbol") { +content.text }
@@ -136,7 +136,7 @@ open class JavaLayoutHtmlFormatOutputBuilder(
}
ContentHardLineBreak -> br
- is ContentParagraph -> p { contentNodesToMarkup(content.children, contextUri) }
+ is ContentParagraph -> p(classes = content.label) { contentNodesToMarkup(content.children, contextUri) }
is NodeRenderContent -> renderedSignature(content.node, mode = content.mode)
is ContentNodeLink -> {
@@ -392,6 +392,7 @@ open class JavaLayoutHtmlFormatOutputBuilder(
bodyContent = {
h1 { +page.node.name }
nodeContent(page.node)
+ summaryNodeGroup(page.interfaces, "Interfaces", headerAsRow = false) { classLikeRow(it) }
summaryNodeGroup(page.classes, "Classes", headerAsRow = false) { classLikeRow(it) }
summaryNodeGroup(page.exceptions, "Exceptions", headerAsRow = false) { classLikeRow(it) }
summaryNodeGroup(page.typeAliases, "Type-aliases", headerAsRow = false) { classLikeRow(it) }
@@ -884,7 +885,7 @@ open class JavaLayoutHtmlFormatOutputBuilder(
emphasis: Boolean = true): ContentNode? {
val deprecated = node.deprecation
deprecated?.let {
- return ContentParagraph().apply {
+ return ContentParagraph("caution").apply {
if (prefix) {
append(ContentStrong().apply { text(
if (deprecated.content.children.size == 0) "Deprecated."
@@ -1088,6 +1089,8 @@ open class JavaLayoutHtmlFormatOutputBuilder(
assert(node.kind == NodeKind.Package)
}
+ val interfaces = node.members(NodeKind.Interface) +
+ node.members(NodeKind.Class).flatMap { it.members(NodeKind.Interface) }
val classes = node.members(NodeKind.Class)
val exceptions = node.members(NodeKind.Exception)
val typeAliases = node.members(NodeKind.TypeAlias)
diff --git a/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlGenerator.kt b/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlGenerator.kt
index 115e3f76d..9928a8e9e 100644
--- a/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlGenerator.kt
+++ b/core/src/main/kotlin/Formats/JavaLayoutHtml/JavaLayoutHtmlGenerator.kt
@@ -32,6 +32,7 @@ class JavaLayoutHtmlFormatGenerator @Inject constructor(
return when (node.kind) {
NodeKind.Module -> URI("/").resolve(node.name + "/")
NodeKind.Package -> tryGetContainerUri(node.getOwnerOrReport())?.resolve(node.name.replace('.', '/') + '/')
+ NodeKind.GroupNode -> tryGetContainerUri(node.getOwnerOrReport())
in NodeKind.classLike -> tryGetContainerUri(node.getOwnerOrReport())?.resolve("${node.classNodeNameWithOuterClass()}.html")
else -> null
}
@@ -81,7 +82,7 @@ class JavaLayoutHtmlFormatGenerator @Inject constructor(
fun buildPackage(node: DocumentationNode, parentDir: File) {
assert(node.kind == NodeKind.Package)
- val members = node.members
+ var members = node.members
val directoryForPackage = parentDir.resolve(node.name.replace('.', File.separatorChar))
directoryForPackage.mkdirsOrFail()
@@ -89,6 +90,9 @@ class JavaLayoutHtmlFormatGenerator @Inject constructor(
createOutputBuilderForNode(node, it).generatePage(Page.PackagePage(node))
}
+ members.filter { it.kind == NodeKind.GroupNode }.forEach {
+ members += it.members
+ }
members.filter { it.kind in NodeKind.classLike }.forEach {
buildClass(it, directoryForPackage)
}
@@ -133,6 +137,7 @@ class JavaLayoutHtmlFormatGenerator @Inject constructor(
val normalized = uri.normalize()
uriToWriter[normalized]?.let { return it }
val file = root.resolve(normalized.path.removePrefix("/"))
+ file.parentFile.mkdirsOrFail()
val writer = file.bufferedWriter()
uriToWriter[normalized] = writer
return writer
diff --git a/core/src/main/kotlin/Java/JavaPsiDocumentationBuilder.kt b/core/src/main/kotlin/Java/JavaPsiDocumentationBuilder.kt
index 8776da4c2..a7df4e482 100644
--- a/core/src/main/kotlin/Java/JavaPsiDocumentationBuilder.kt
+++ b/core/src/main/kotlin/Java/JavaPsiDocumentationBuilder.kt
@@ -29,12 +29,13 @@ fun getSignature(element: PsiElement?) = when(element) {
private fun PsiType.typeSignature(): String = when(this) {
is PsiArrayType -> "Array((${componentType.typeSignature()}))"
is PsiPrimitiveType -> "kotlin." + canonicalText.capitalize()
+ is PsiClassType -> resolve()?.qualifiedName ?: className
else -> mapTypeName(this)
}
private fun mapTypeName(psiType: PsiType): String = when (psiType) {
is PsiPrimitiveType -> psiType.canonicalText
- is PsiClassType -> psiType.resolve()?.qualifiedName ?: psiType.className
+ is PsiClassType -> psiType.resolve()?.name ?: psiType.className
is PsiEllipsisType -> mapTypeName(psiType.componentType)
is PsiArrayType -> "kotlin.Array"
else -> psiType.canonicalText
@@ -119,8 +120,12 @@ class JavaPsiDocumentationBuilder : JavaDocumentationBuilder {
if (modifierList != null) {
modifierList.annotations.filter { !ignoreAnnotation(it) }.forEach {
val annotation = it.build()
- node.append(annotation,
- if (it.qualifiedName == "java.lang.Deprecated") RefKind.Deprecation else RefKind.Annotation)
+ if (it.qualifiedName == "java.lang.Deprecated" || it.qualifiedName == "kotlin.Deprecated") {
+ node.append(annotation, RefKind.Deprecation)
+ annotation.convertDeprecationDetailsToChildren()
+ } else {
+ node.append(annotation, RefKind.Annotation)
+ }
}
}
}
@@ -209,20 +214,8 @@ class JavaPsiDocumentationBuilder : JavaDocumentationBuilder {
superTypes.filter { !ignoreSupertype(it) }.forEach { superType ->
node.appendType(superType, NodeKind.Supertype)
val superClass = superType.resolve()
- // parentNode is the actual DocumentationNode of this class's supertype
- // It is necessary to create documentation links back to the superclass from inherited methods
- val parentNode = refGraph.lookup(superType.typeSignature())
- if (superClass != null && parentNode != null) {
+ if (superClass != null) {
link(superClass, node, RefKind.Inheritor)
- // Explicitly add the methods of the superclass (which are not overridden) as nodes to this class
- val overriddenMethods = methods.toList().flatMap { it.findSuperMethods().toList() }
- val inheritedMethods = superClass.methods.filter { it !in overriddenMethods }.toTypedArray()
-
- node.appendChildren(inheritedMethods, RefKind.InheritedMember) {
- val child = build()
- child.addReferenceTo(parentNode, RefKind.Owner)
- return@appendChildren child
- }
}
}
diff --git a/core/src/main/kotlin/Java/JavadocParser.kt b/core/src/main/kotlin/Java/JavadocParser.kt
index 04de29087..21cc2bbdf 100644
--- a/core/src/main/kotlin/Java/JavadocParser.kt
+++ b/core/src/main/kotlin/Java/JavadocParser.kt
@@ -1,12 +1,11 @@
package org.jetbrains.dokka
import com.intellij.psi.*
-import com.intellij.psi.impl.source.javadoc.CorePsiDocTagValueImpl
+import com.intellij.psi.impl.source.javadoc.PsiDocTagValueImpl
import com.intellij.psi.impl.source.tree.JavaDocElementType
import com.intellij.psi.javadoc.*
import com.intellij.psi.util.PsiTreeUtil
import com.intellij.util.IncorrectOperationException
-import com.intellij.util.containers.isNullOrEmpty
import org.jetbrains.dokka.Model.CodeNode
import org.jetbrains.kotlin.utils.join
import org.jetbrains.kotlin.utils.keysToMap
@@ -172,7 +171,7 @@ class JavadocParser(
fun PsiDocTag.getApiLevel(): String? {
if (dataElements.isNotEmpty()) {
val data = dataElements
- if (data[0] is CorePsiDocTagValueImpl) {
+ if (data[0] is PsiDocTagValueImpl) {
val docTagValue = data[0]
if (docTagValue.firstChild != null) {
val apiLevel = docTagValue.firstChild
@@ -420,11 +419,12 @@ class JavadocParser(
linkNode
}
linkSignature != null -> {
+ @Suppress("USELESS_CAST")
+ val signature: String = linkSignature as String
val linkNode =
ContentNodeLazyLink(
- (tag.valueElement ?: linkElement).text,
- { -> refGraph.lookupOrWarn(linkSignature, logger) }
- )
+ (tag.valueElement ?: linkElement).text
+ ) { refGraph.lookupOrWarn(signature, logger) }
linkNode.append(text)
linkNode
}
@@ -439,7 +439,13 @@ class JavadocParser(
val externalLink = resolveExternalLink(valueElement)
val linkSignature by lazy { resolveInternalLink(valueElement) }
if (externalLink != null || linkSignature != null) {
- val labelText = tag.dataElements.firstOrNull { it is PsiDocToken }?.text ?: valueElement!!.text
+
+ // sometimes `dataElements` contains multiple `PsiDocToken` elements and some have whitespace in them
+ // this is best effort to find the first non-empty one before falling back to using the symbol name.
+ val labelText = tag.dataElements.firstOrNull {
+ it is PsiDocToken && it.text?.trim()?.isNotEmpty() ?: false
+ }?.text ?: valueElement!!.text
+
val linkTarget = if (externalLink != null) "href=\"$externalLink\"" else "docref=\"$linkSignature\""
val link = "<a $linkTarget>$labelText</a>"
if (tag.name == "link") "<code>$link</code>" else link
@@ -560,7 +566,7 @@ class JavadocParser(
val superMethods = current.findSuperMethods()
for (method in superMethods) {
val docs = method.docComment?.descriptionElements?.dropWhile { it.text.trim().isEmpty() }
- if (!docs.isNullOrEmpty()) {
+ if (docs?.isNotEmpty() == true) {
return method
}
}
@@ -648,7 +654,7 @@ class JavadocParser(
appendContentBetweenIncludes(path, betweenTag)
}
} catch (e: java.lang.Exception) {
- logger.error("No file found when processing Java @sample. Path to sample: $path")
+ logger.error("No file found when processing Java @sample. Path to sample: $path\n")
}
}
diff --git a/core/src/main/kotlin/Kotlin/DocumentationBuilder.kt b/core/src/main/kotlin/Kotlin/DocumentationBuilder.kt
index 0b5e74339..b9fe8483e 100644
--- a/core/src/main/kotlin/Kotlin/DocumentationBuilder.kt
+++ b/core/src/main/kotlin/Kotlin/DocumentationBuilder.kt
@@ -10,6 +10,7 @@ import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.descriptors.*
import org.jetbrains.kotlin.descriptors.annotations.Annotated
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
+import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptorImpl
import org.jetbrains.kotlin.descriptors.impl.EnumEntrySyntheticClassDescriptor
import org.jetbrains.kotlin.idea.kdoc.findKDoc
import org.jetbrains.kotlin.idea.util.fuzzyExtensionReceiverType
@@ -309,8 +310,8 @@ class DocumentationBuilder
else -> return@forEach
}
append(annotationNode, refKind)
+ if (refKind == RefKind.Deprecation) annotationNode.convertDeprecationDetailsToChildren()
}
-
}
}
}
@@ -739,7 +740,7 @@ class DocumentationBuilder
}
fun FunctionDescriptor.build(external: Boolean = false): DocumentationNode {
- if (ErrorUtils.containsErrorType(this)) {
+ if (ErrorUtils.containsErrorTypeInParameters(this) || ErrorUtils.containsErrorType(this.returnType)) {
logger.warn("Found an unresolved type in ${signatureWithSourceLocation()}")
}
@@ -908,14 +909,19 @@ class DocumentationBuilder
return node
}
- fun AnnotationDescriptor.build(): DocumentationNode? {
+ fun AnnotationDescriptor.build(isWithinReplaceWith: Boolean = false): DocumentationNode? {
val annotationClass = type.constructor.declarationDescriptor
if (annotationClass == null || ErrorUtils.isError(annotationClass)) {
return null
}
val node = DocumentationNode(annotationClass.name.asString(), Content.Empty, NodeKind.Annotation)
- allValueArguments.forEach { (name, value) ->
- val valueNode = value.toDocumentationNode()
+ allValueArguments.forEach foreach@{ (name, value) ->
+ if (name.toString() == "imports" && value.toString() == "[]") return@foreach
+ var valueNode: DocumentationNode? = null
+ if (value.toString() == "@kotlin.ReplaceWith") {
+ valueNode = (value.value as AnnotationDescriptor).build(true)
+ }
+ else valueNode = value.toDocumentationNode(isWithinReplaceWith)
if (valueNode != null) {
val paramNode = DocumentationNode(name.asString(), Content.Empty, NodeKind.Parameter)
paramNode.append(valueNode, RefKind.Detail)
@@ -925,10 +931,10 @@ class DocumentationBuilder
return node
}
- fun ConstantValue<*>.toDocumentationNode(): DocumentationNode? = value?.let { value ->
+ fun ConstantValue<*>.toDocumentationNode(isWithinReplaceWith: Boolean = false): DocumentationNode? = value?.let { value ->
when (value) {
is String ->
- "\"" + StringUtil.escapeStringCharacters(value) + "\""
+ (if (isWithinReplaceWith) "Replace with: " else "") + "\"" + StringUtil.escapeStringCharacters(value) + "\""
is EnumEntrySyntheticClassDescriptor ->
value.containingDeclaration.name.asString() + "." + value.name.asString()
is Pair<*, *> -> {
diff --git a/core/src/main/kotlin/Kotlin/ExternalDocumentationLinkResolver.kt b/core/src/main/kotlin/Kotlin/ExternalDocumentationLinkResolver.kt
index 4e394c466..d09bc1c9f 100644
--- a/core/src/main/kotlin/Kotlin/ExternalDocumentationLinkResolver.kt
+++ b/core/src/main/kotlin/Kotlin/ExternalDocumentationLinkResolver.kt
@@ -42,7 +42,7 @@ class ExternalDocumentationLinkResolver @Inject constructor(
override fun toString(): String = rootUrl.toString()
}
- val cacheDir: Path? = options.cacheRoot?.resolve("packageListCache")?.apply { createDirectories() }
+ val cacheDir: Path? = options.cacheRoot?.resolve("packageListCache")?.apply { toFile().mkdirs() }
val cachedProtocols = setOf("http", "https", "ftp")
@@ -86,13 +86,13 @@ class ExternalDocumentationLinkResolver @Inject constructor(
val digest = MessageDigest.getInstance("SHA-256")
val hash = digest.digest(packageListLink.toByteArray(Charsets.UTF_8)).toHexString()
- val cacheEntry = cacheDir.resolve(hash)
+ val cacheEntry = cacheDir.resolve(hash).toFile()
if (cacheEntry.exists()) {
try {
val connection = packageListUrl.doOpenConnectionToReadContent()
val originModifiedDate = connection.date
- val cacheDate = cacheEntry.lastModified().toMillis()
+ val cacheDate = cacheEntry.lastModified()
if (originModifiedDate > cacheDate || originModifiedDate == 0L) {
if (originModifiedDate == 0L)
logger.warn("No date header for $packageListUrl, downloading anyway")
diff --git a/core/src/main/kotlin/Kotlin/KotlinLanguageService.kt b/core/src/main/kotlin/Kotlin/KotlinLanguageService.kt
index 757221ce5..8a33ff8b7 100644
--- a/core/src/main/kotlin/Kotlin/KotlinLanguageService.kt
+++ b/core/src/main/kotlin/Kotlin/KotlinLanguageService.kt
@@ -1,6 +1,6 @@
package org.jetbrains.dokka
-import org.jetbrains.dokka.Formats.classNodeNameWithOuterClass
+import org.jetbrains.dokka.classNodeNameWithOuterClass
import org.jetbrains.dokka.LanguageService.RenderMode
/**
diff --git a/core/src/main/kotlin/Languages/NewJavaLanguageService.kt b/core/src/main/kotlin/Languages/NewJavaLanguageService.kt
index 10715d0da..c4b5fa090 100644
--- a/core/src/main/kotlin/Languages/NewJavaLanguageService.kt
+++ b/core/src/main/kotlin/Languages/NewJavaLanguageService.kt
@@ -1,6 +1,6 @@
package org.jetbrains.dokka
-import org.jetbrains.dokka.Formats.classNodeNameWithOuterClass
+import org.jetbrains.dokka.classNodeNameWithOuterClass
import org.jetbrains.dokka.LanguageService.RenderMode
/**
@@ -247,4 +247,4 @@ class NewJavaLanguageService : CommonLanguageService() {
text(" ")
identifier(node.name)
}
-} \ No newline at end of file
+}
diff --git a/core/src/main/kotlin/Model/Content.kt b/core/src/main/kotlin/Model/Content.kt
index f239da7f9..a4c78fabf 100644
--- a/core/src/main/kotlin/Model/Content.kt
+++ b/core/src/main/kotlin/Model/Content.kt
@@ -106,7 +106,7 @@ object ContentIndentedSoftLineBreak: ContentNode {
}
class ScriptBlock(val type: String?, val src: String) : ContentBlock()
-class ContentParagraph() : ContentBlock()
+class ContentParagraph(val label: String? = null) : ContentBlock()
class ContentEmphasis() : ContentBlock()
class ContentStrong() : ContentBlock()
class ContentStrikethrough() : ContentBlock()
diff --git a/core/src/main/kotlin/Model/DocumentationNode.kt b/core/src/main/kotlin/Model/DocumentationNode.kt
index e8a85a2bd..cf083ce54 100644
--- a/core/src/main/kotlin/Model/DocumentationNode.kt
+++ b/core/src/main/kotlin/Model/DocumentationNode.kt
@@ -266,7 +266,7 @@ private fun DocumentationNode.isSuperclassFor(node: DocumentationNode): Boolean
fun DocumentationNode.classNodeNameWithOuterClass(): String {
assert(kind in NodeKind.classLike)
- return path.dropWhile { it.kind == NodeKind.Package || it.kind == NodeKind.Module }.joinToString(separator = ".") { it.name }
+ return path.dropWhile { it.kind !in NodeKind.classLike }.joinToString(separator = ".") { it.name }
}
fun DocumentationNode.deprecatedLevelMessage(): String {
@@ -279,3 +279,24 @@ fun DocumentationNode.deprecatedLevelMessage(): String {
}
return "This $kindName was deprecated in API level ${deprecatedLevel.name}."
}
+
+fun DocumentationNode.convertDeprecationDetailsToChildren() {
+ val toProcess = details.toMutableList()
+ while (!toProcess.isEmpty()) {
+ var child = toProcess.removeAt(0)
+ if (child.details.isEmpty() && child.name != "") {
+ updateContent { text(child.name.cleanForAppending()) }
+ }
+ else toProcess.addAll(0, child.details)
+ }
+}
+
+ /*
+ * Removes extraneous quotation marks and adds a ". " to make appending children readable.
+ */
+fun String.cleanForAppending(): String {
+ var result = this
+ if (this.first() == this.last() && this.first() == '"') result = result.substring(1, result.length - 1)
+ if (result[result.length - 2] != '.' && result.last() != ' ') result += ". "
+ return result
+} \ No newline at end of file
diff --git a/core/src/test/kotlin/format/DacFormatTest.kt b/core/src/test/kotlin/format/DacFormatTest.kt
index ae17420d4..5d8babc3d 100644
--- a/core/src/test/kotlin/format/DacFormatTest.kt
+++ b/core/src/test/kotlin/format/DacFormatTest.kt
@@ -51,4 +51,8 @@ class DacFormatTest: DacFormatTestCase() {
@Test fun javaClassLinks() {
verifyBothFormats("javaClassLinks")
}
+
+ @Test fun deprecation() {
+ verifyBothFormats("deprecation")
+ }
} \ No newline at end of file
diff --git a/core/src/test/kotlin/javadoc/JavadocTest.kt b/core/src/test/kotlin/javadoc/JavadocTest.kt
index 74265cbb8..a42d63933 100644
--- a/core/src/test/kotlin/javadoc/JavadocTest.kt
+++ b/core/src/test/kotlin/javadoc/JavadocTest.kt
@@ -16,8 +16,8 @@ class JavadocTest {
val type = method.returnType()
assertFalse(type.asClassDoc().isIncluded)
- assertEquals("java.lang.String", type.qualifiedTypeName())
- assertEquals("java.lang.String", type.asClassDoc().qualifiedName())
+ assertEquals("String", type.qualifiedTypeName())
+ assertEquals("String", type.asClassDoc().qualifiedName())
val params = method.parameters()
assertTrue(params[0].type().isPrimitive)
@@ -119,7 +119,7 @@ class JavadocTest {
val methodParamType = doc.classNamed("TypealiasesKt")!!.methods()
.find { it.name() == "some" }!!.parameters().first()
.type()
- assertEquals("kotlin.jvm.functions.Function1", methodParamType.qualifiedTypeName())
+ assertEquals("Function1", methodParamType.qualifiedTypeName())
assertEquals("? super A, C", methodParamType.asParameterizedType().typeArguments()
.map(Type::qualifiedTypeName).joinToString())
}
diff --git a/core/src/test/kotlin/model/ClassTest.kt b/core/src/test/kotlin/model/ClassTest.kt
index 56a38fd3d..6bc45db10 100644
--- a/core/src/test/kotlin/model/ClassTest.kt
+++ b/core/src/test/kotlin/model/ClassTest.kt
@@ -181,7 +181,7 @@ class ClassTest {
with(model.members.single().members.single()) {
with(deprecation!!) {
assertEquals("Deprecated", name)
- assertEquals(Content.Empty, content)
+ // assertEquals(Content.Empty, content) // this is now an empty MutableContent instead
assertEquals(NodeKind.Annotation, kind)
assertEquals(1, details.count())
with(details[0]) {
diff --git a/core/src/test/kotlin/model/FunctionTest.kt b/core/src/test/kotlin/model/FunctionTest.kt
index 329106829..c94d7e990 100644
--- a/core/src/test/kotlin/model/FunctionTest.kt
+++ b/core/src/test/kotlin/model/FunctionTest.kt
@@ -234,4 +234,18 @@ Documentation""", content.description.toTestString())
}
}
}
+
+ // Test for b/159470920, to ensure that we correctly parse annotated function types without resolving 'ERROR CLASS'
+ // types. Note that the actual annotation is not included in the type information, this is tracked in b/145517104.
+ @Test fun functionWithAnnotatedLambdaParam() {
+ verifyModel("testdata/functions/functionWithAnnotatedLambdaParam.kt") { model ->
+ with(model.members.single().members.single { it.name == "function" }) {
+ with(details(NodeKind.Parameter).first()) {
+ with(details(NodeKind.Type).first()) {
+ assertEquals("Function0", name)
+ }
+ }
+ }
+ }
+ }
}
diff --git a/core/testdata/format/dac/deprecation/DeprecatedBar.kt b/core/testdata/format/dac/deprecation/DeprecatedBar.kt
new file mode 100644
index 000000000..39ac1c43d
--- /dev/null
+++ b/core/testdata/format/dac/deprecation/DeprecatedBar.kt
@@ -0,0 +1,17 @@
+class Bar {
+ fun replacementBarMethod(): Bar { return Bar() }
+
+ fun badBarMethod(): DeprecatedBar { return DeprecatedBar() }
+
+ /**
+ * This method has been deprecated in favor of replacementBarMethod().
+ */
+ @Deprecated("Obsolete method", ReplaceWith("replacementBarMethod()"))
+ fun goodBarMethod(): DeprecatedBar { return DeprecatedBar() }
+}
+
+/**
+ * This class has been deprecated in favor of Bar.
+ */
+@Deprecated("Obsolete class", ReplaceWith("Bar"))
+class DeprecatedBar \ No newline at end of file
diff --git a/core/testdata/format/dac/deprecation/DeprecatedFoo.java b/core/testdata/format/dac/deprecation/DeprecatedFoo.java
new file mode 100644
index 000000000..3c9c360ee
--- /dev/null
+++ b/core/testdata/format/dac/deprecation/DeprecatedFoo.java
@@ -0,0 +1,21 @@
+public class Foo {
+ public Foo() { }
+
+ public static Foo replacementFooMethod() { return Foo() }
+
+ public static DeprecatedFoo badFooMethod() { return new DeprecatedFoo() }
+
+ /**
+ * @deprecated Use {@link #replacementFooMethod()} instead.
+ */
+ @Deprecated
+ public static DeprecatedFoo goodFooMethod() { return new DeprecatedFoo() }
+}
+
+/**
+ * @deprecated Use {@link #Foo} instead.
+ */
+@Deprecated
+public class DeprecatedFoo {
+ public DeprecatedFoo() { }
+}
diff --git a/core/testdata/format/dac/deprecation/dac-as-java/Bar.html b/core/testdata/format/dac/deprecation/dac-as-java/Bar.html
new file mode 100644
index 000000000..9f9346ee7
--- /dev/null
+++ b/core/testdata/format/dac/deprecation/dac-as-java/Bar.html
@@ -0,0 +1,83 @@
+<html devsite="true">
+ <head>
+ <title>Bar</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "_shared/_reference-head-tags.html" %}
+ </head>
+ <body>
+ <div id="api-info-block"></div>
+ <h1>Bar</h1>
+ <pre><span class="keyword">public</span> <span class="keyword">final</span> <span class="keyword">class</span> <span class="identifier">Bar</span> <span class="keyword">implements</span> <span class="identifier">Object</span></pre>
+ <table class="jd-inheritance-table">
+ <tr>
+ <td class="jd-inheritance-class-cell" colSpan="1"><a href="#">Bar</a></td>
+ </tr>
+ </table>
+ <h2>Summary</h2>
+ <table class="responsive" id="pubctors">
+ <tbody>
+ <tr>
+ <th colSpan="2">Public constructors</th>
+ </tr>
+ <tr>
+ <td>
+ <div><code><a href="#Bar()">Bar</a>()</code></div>
+ <p></p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <table class="responsive" id="pubmethods">
+ <tbody>
+ <tr>
+ <th colSpan="2">Public methods</th>
+ </tr>
+ <tr>
+ <td><span class="keyword">final</span> <a href="DeprecatedBar.html#"><span class="identifier">DeprecatedBar</span></a></td>
+ <td>
+ <div><code><a href="#badBarMethod()">badBarMethod</a>()</code></div>
+ <p></p>
+ </td>
+ </tr>
+ <tr>
+ <td><span class="keyword">final</span> <a href="DeprecatedBar.html#"><span class="identifier">DeprecatedBar</span></a></td>
+ <td>
+ <div><code><a href="#goodBarMethod()">goodBarMethod</a>()</code></div>
+ <p>This method has been deprecated in favor of replacementBarMethod().</p>
+ </td>
+ </tr>
+ <tr>
+ <td><span class="keyword">final</span> <a href="#"><span class="identifier">Bar</span></a></td>
+ <td>
+ <div><code><a href="#replacementBarMethod()">replacementBarMethod</a>()</code></div>
+ <p></p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <h2>Public constructors</h2>
+<a name="Bar()"></a>
+ <div class="api apilevel-" data-version-added="">
+ <h3 class="api-name">Bar</h3>
+ <pre class="api-signature no-pretty-print"><span class="keyword">public</span> <span class="identifier">Bar</span><span class="symbol">(</span><span class="symbol">)</span></pre>
+ </div>
+ <h2>Public methods</h2>
+<a name="badBarMethod()"></a>
+ <div class="api apilevel-" data-version-added="">
+ <h3 class="api-name">badBarMethod</h3>
+ <pre class="api-signature no-pretty-print"><span class="keyword">public</span> <span class="keyword">final</span> <a href="DeprecatedBar.html#"><span class="identifier">DeprecatedBar</span></a> <span class="identifier">badBarMethod</span><span class="symbol">(</span><span class="symbol">)</span></pre>
+ </div>
+<a name="goodBarMethod()"></a>
+ <div class="api apilevel-" data-version-added="">
+ <h3 class="api-name">goodBarMethod</h3>
+ <pre class="api-signature no-pretty-print"><span class="keyword">public</span> <span class="keyword">final</span> <a href="DeprecatedBar.html#"><span class="identifier">DeprecatedBar</span></a> <span class="identifier">goodBarMethod</span><span class="symbol">(</span><span class="symbol">)</span></pre>
+ <p class="caution"><strong>Deprecated: </strong><em>Obsolete method. ReplaceWith(&quot;replacementBarMethod()&quot;). </em></p>
+ <p>This method has been deprecated in favor of replacementBarMethod().</p>
+ </div>
+<a name="replacementBarMethod()"></a>
+ <div class="api apilevel-" data-version-added="">
+ <h3 class="api-name">replacementBarMethod</h3>
+ <pre class="api-signature no-pretty-print"><span class="keyword">public</span> <span class="keyword">final</span> <a href="#"><span class="identifier">Bar</span></a> <span class="identifier">replacementBarMethod</span><span class="symbol">(</span><span class="symbol">)</span></pre>
+ </div>
+ </body>
+</html>
diff --git a/core/testdata/format/dac/deprecation/dac-as-java/DeprecatedBar.html b/core/testdata/format/dac/deprecation/dac-as-java/DeprecatedBar.html
new file mode 100644
index 000000000..d6e955413
--- /dev/null
+++ b/core/testdata/format/dac/deprecation/dac-as-java/DeprecatedBar.html
@@ -0,0 +1,39 @@
+<html devsite="true">
+ <head>
+ <title>DeprecatedBar</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "_shared/_reference-head-tags.html" %}
+ </head>
+ <body>
+ <div id="api-info-block"></div>
+ <h1>DeprecatedBar</h1>
+ <pre><span class="keyword">public</span> <span class="keyword">final</span> <span class="keyword">class</span> <span class="identifier">DeprecatedBar</span> <span class="keyword">implements</span> <span class="identifier">Object</span></pre>
+ <table class="jd-inheritance-table">
+ <tr>
+ <td class="jd-inheritance-class-cell" colSpan="1"><a href="#">DeprecatedBar</a></td>
+ </tr>
+ </table>
+ <p>This class has been deprecated in favor of Bar.</p>
+ <h2>Summary</h2>
+ <table class="responsive" id="pubctors">
+ <tbody>
+ <tr>
+ <th colSpan="2">Public constructors</th>
+ </tr>
+ <tr>
+ <td>
+ <div><code><a href="#DeprecatedBar()">DeprecatedBar</a>()</code></div>
+ <p>This class has been deprecated in favor of Bar.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <h2>Public constructors</h2>
+<a name="DeprecatedBar()"></a>
+ <div class="api apilevel-" data-version-added="">
+ <h3 class="api-name">DeprecatedBar</h3>
+ <pre class="api-signature no-pretty-print"><span class="keyword">public</span> <span class="identifier">DeprecatedBar</span><span class="symbol">(</span><span class="symbol">)</span></pre>
+ <p>This class has been deprecated in favor of Bar.</p>
+ </div>
+ </body>
+</html>
diff --git a/core/testdata/format/dac/deprecation/dac-as-java/DeprecatedFoo.html b/core/testdata/format/dac/deprecation/dac-as-java/DeprecatedFoo.html
new file mode 100644
index 000000000..360b24ef3
--- /dev/null
+++ b/core/testdata/format/dac/deprecation/dac-as-java/DeprecatedFoo.html
@@ -0,0 +1,37 @@
+<html devsite="true">
+ <head>
+ <title>DeprecatedFoo</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "_shared/_reference-head-tags.html" %}
+ </head>
+ <body>
+ <div id="api-info-block"></div>
+ <h1>DeprecatedFoo</h1>
+ <pre><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">DeprecatedFoo</span> <span class="keyword">implements</span> <span class="identifier">Object</span></pre>
+ <table class="jd-inheritance-table">
+ <tr>
+ <td class="jd-inheritance-class-cell" colSpan="1"><a href="#">DeprecatedFoo</a></td>
+ </tr>
+ </table>
+ <h2>Summary</h2>
+ <table class="responsive" id="pubctors">
+ <tbody>
+ <tr>
+ <th colSpan="2">Public constructors</th>
+ </tr>
+ <tr>
+ <td>
+ <div><code><a href="#DeprecatedFoo()">DeprecatedFoo</a>()</code></div>
+ <p></p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <h2>Public constructors</h2>
+<a name="DeprecatedFoo()"></a>
+ <div class="api apilevel-" data-version-added="">
+ <h3 class="api-name">DeprecatedFoo</h3>
+ <pre class="api-signature no-pretty-print"><span class="keyword">public</span> <span class="identifier">DeprecatedFoo</span><span class="symbol">(</span><span class="symbol">)</span></pre>
+ </div>
+ </body>
+</html>
diff --git a/core/testdata/format/dac/deprecation/dac-as-java/Foo.html b/core/testdata/format/dac/deprecation/dac-as-java/Foo.html
new file mode 100644
index 000000000..b468e4daa
--- /dev/null
+++ b/core/testdata/format/dac/deprecation/dac-as-java/Foo.html
@@ -0,0 +1,82 @@
+<html devsite="true">
+ <head>
+ <title>Foo</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "_shared/_reference-head-tags.html" %}
+ </head>
+ <body>
+ <div id="api-info-block"></div>
+ <h1>Foo</h1>
+ <pre><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">Foo</span> <span class="keyword">implements</span> <span class="identifier">Object</span></pre>
+ <table class="jd-inheritance-table">
+ <tr>
+ <td class="jd-inheritance-class-cell" colSpan="1"><a href="#">Foo</a></td>
+ </tr>
+ </table>
+ <h2>Summary</h2>
+ <table class="responsive" id="pubctors">
+ <tbody>
+ <tr>
+ <th colSpan="2">Public constructors</th>
+ </tr>
+ <tr>
+ <td>
+ <div><code><a href="#Foo()">Foo</a>()</code></div>
+ <p></p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <table class="responsive" id="pubmethods">
+ <tbody>
+ <tr>
+ <th colSpan="2">Public methods</th>
+ </tr>
+ <tr>
+ <td><span class="keyword">static</span> <a href="DeprecatedFoo.html#"><span class="identifier">DeprecatedFoo</span></a></td>
+ <td>
+ <div><code><a href="#badFooMethod()">badFooMethod</a>()</code></div>
+ <p></p>
+ </td>
+ </tr>
+ <tr>
+ <td><span class="keyword">static</span> <a href="DeprecatedFoo.html#"><span class="identifier">DeprecatedFoo</span></a></td>
+ <td>
+ <div><code><a href="#goodFooMethod()">goodFooMethod</a>()</code></div>
+ <p></p>
+ </td>
+ </tr>
+ <tr>
+ <td><span class="keyword">static</span> <a href="#"><span class="identifier">Foo</span></a></td>
+ <td>
+ <div><code><a href="#replacementFooMethod()">replacementFooMethod</a>()</code></div>
+ <p></p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <h2>Public constructors</h2>
+<a name="Foo()"></a>
+ <div class="api apilevel-" data-version-added="">
+ <h3 class="api-name">Foo</h3>
+ <pre class="api-signature no-pretty-print"><span class="keyword">public</span> <span class="identifier">Foo</span><span class="symbol">(</span><span class="symbol">)</span></pre>
+ </div>
+ <h2>Public methods</h2>
+<a name="badFooMethod()"></a>
+ <div class="api apilevel-" data-version-added="">
+ <h3 class="api-name">badFooMethod</h3>
+ <pre class="api-signature no-pretty-print"><span class="keyword">public</span> <span class="keyword">static</span> <a href="DeprecatedFoo.html#"><span class="identifier">DeprecatedFoo</span></a> <span class="identifier">badFooMethod</span><span class="symbol">(</span><span class="symbol">)</span></pre>
+ </div>
+<a name="goodFooMethod()"></a>
+ <div class="api apilevel-" data-version-added="">
+ <h3 class="api-name">goodFooMethod</h3>
+ <pre class="api-signature no-pretty-print"><span class="keyword">public</span> <span class="keyword">static</span> <a href="DeprecatedFoo.html#"><span class="identifier">DeprecatedFoo</span></a> <span class="identifier">goodFooMethod</span><span class="symbol">(</span><span class="symbol">)</span></pre>
+ <p class="caution"><strong>Deprecated.</strong><em></em></p>
+ </div>
+<a name="replacementFooMethod()"></a>
+ <div class="api apilevel-" data-version-added="">
+ <h3 class="api-name">replacementFooMethod</h3>
+ <pre class="api-signature no-pretty-print"><span class="keyword">public</span> <span class="keyword">static</span> <a href="#"><span class="identifier">Foo</span></a> <span class="identifier">replacementFooMethod</span><span class="symbol">(</span><span class="symbol">)</span></pre>
+ </div>
+ </body>
+</html>
diff --git a/core/testdata/format/dac/deprecation/dac/Bar.html b/core/testdata/format/dac/deprecation/dac/Bar.html
new file mode 100644
index 000000000..9dc323048
--- /dev/null
+++ b/core/testdata/format/dac/deprecation/dac/Bar.html
@@ -0,0 +1,83 @@
+<html devsite="true">
+ <head>
+ <title>Bar</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "_shared/_reference-head-tags.html" %}
+ </head>
+ <body>
+ <div id="api-info-block"></div>
+ <h1>Bar</h1>
+ <pre><span class="keyword">class </span><span class="identifier">Bar</span></pre>
+ <table class="jd-inheritance-table">
+ <tr>
+ <td class="jd-inheritance-class-cell" colSpan="1"><a href="#">Bar</a></td>
+ </tr>
+ </table>
+ <h2>Summary</h2>
+ <table class="responsive" id="pubctors">
+ <tbody>
+ <tr>
+ <th colSpan="2">Public constructors</th>
+ </tr>
+ <tr>
+ <td>
+ <div><code><a href="#%3Cinit%3E()">&lt;init&gt;</a>()</code></div>
+ <p></p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <table class="responsive" id="pubmethods">
+ <tbody>
+ <tr>
+ <th colSpan="2">Public methods</th>
+ </tr>
+ <tr>
+ <td><a href="DeprecatedBar.html#"><span class="identifier">DeprecatedBar</span></a></td>
+ <td>
+ <div><code><a href="#badBarMethod()">badBarMethod</a>()</code></div>
+ <p></p>
+ </td>
+ </tr>
+ <tr>
+ <td><a href="DeprecatedBar.html#"><span class="identifier">DeprecatedBar</span></a></td>
+ <td>
+ <div><code><a href="#goodBarMethod()">goodBarMethod</a>()</code></div>
+ <p>This method has been deprecated in favor of replacementBarMethod().</p>
+ </td>
+ </tr>
+ <tr>
+ <td><a href="#"><span class="identifier">Bar</span></a></td>
+ <td>
+ <div><code><a href="#replacementBarMethod()">replacementBarMethod</a>()</code></div>
+ <p></p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <h2>Public constructors</h2>
+<a name="%3Cinit%3E()"></a>
+ <div class="api apilevel-" data-version-added="">
+ <h3 class="api-name">&lt;init&gt;</h3>
+ <pre class="api-signature no-pretty-print"><span class="identifier">Bar</span><span class="symbol">(</span><span class="symbol">)</span></pre>
+ </div>
+ <h2>Public methods</h2>
+<a name="badBarMethod()"></a>
+ <div class="api apilevel-" data-version-added="">
+ <h3 class="api-name">badBarMethod</h3>
+ <pre class="api-signature no-pretty-print"><span class="keyword">fun </span><span class="identifier">badBarMethod</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="DeprecatedBar.html#"><span class="identifier">DeprecatedBar</span></a></pre>
+ </div>
+<a name="goodBarMethod()"></a>
+ <div class="api apilevel-" data-version-added="">
+ <h3 class="api-name">goodBarMethod</h3>
+ <pre class="api-signature no-pretty-print"><span class="keyword">fun </span><del><span class="identifier">goodBarMethod</span></del><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="DeprecatedBar.html#"><span class="identifier">DeprecatedBar</span></a></pre>
+ <p class="caution"><strong>Deprecated: </strong><em>Obsolete method. Replace with: &quot;replacementBarMethod()&quot;. </em></p>
+ <p>This method has been deprecated in favor of replacementBarMethod().</p>
+ </div>
+<a name="replacementBarMethod()"></a>
+ <div class="api apilevel-" data-version-added="">
+ <h3 class="api-name">replacementBarMethod</h3>
+ <pre class="api-signature no-pretty-print"><span class="keyword">fun </span><span class="identifier">replacementBarMethod</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="#"><span class="identifier">Bar</span></a></pre>
+ </div>
+ </body>
+</html>
diff --git a/core/testdata/format/dac/deprecation/dac/DeprecatedBar.html b/core/testdata/format/dac/deprecation/dac/DeprecatedBar.html
new file mode 100644
index 000000000..34b8c9386
--- /dev/null
+++ b/core/testdata/format/dac/deprecation/dac/DeprecatedBar.html
@@ -0,0 +1,39 @@
+<html devsite="true">
+ <head>
+ <title>DeprecatedBar</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "_shared/_reference-head-tags.html" %}
+ </head>
+ <body>
+ <div id="api-info-block"></div>
+ <h1>DeprecatedBar</h1>
+ <pre><span class="keyword">class </span><del><span class="identifier">DeprecatedBar</span></del></pre>
+ <table class="jd-inheritance-table">
+ <tr>
+ <td class="jd-inheritance-class-cell" colSpan="1"><a href="#">DeprecatedBar</a></td>
+ </tr>
+ </table>
+ <p>This class has been deprecated in favor of Bar.</p>
+ <h2>Summary</h2>
+ <table class="responsive" id="pubctors">
+ <tbody>
+ <tr>
+ <th colSpan="2">Public constructors</th>
+ </tr>
+ <tr>
+ <td>
+ <div><code><a href="#%3Cinit%3E()">&lt;init&gt;</a>()</code></div>
+ <p>This class has been deprecated in favor of Bar.</p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <h2>Public constructors</h2>
+<a name="%3Cinit%3E()"></a>
+ <div class="api apilevel-" data-version-added="">
+ <h3 class="api-name">&lt;init&gt;</h3>
+ <pre class="api-signature no-pretty-print"><span class="identifier">DeprecatedBar</span><span class="symbol">(</span><span class="symbol">)</span></pre>
+ <p>This class has been deprecated in favor of Bar.</p>
+ </div>
+ </body>
+</html>
diff --git a/core/testdata/format/dac/deprecation/dac/DeprecatedFoo.html b/core/testdata/format/dac/deprecation/dac/DeprecatedFoo.html
new file mode 100644
index 000000000..610c46b60
--- /dev/null
+++ b/core/testdata/format/dac/deprecation/dac/DeprecatedFoo.html
@@ -0,0 +1,37 @@
+<html devsite="true">
+ <head>
+ <title>DeprecatedFoo</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "_shared/_reference-head-tags.html" %}
+ </head>
+ <body>
+ <div id="api-info-block"></div>
+ <h1>DeprecatedFoo</h1>
+ <pre><span class="keyword">open</span> <span class="keyword">class </span><del><span class="identifier">DeprecatedFoo</span></del></pre>
+ <table class="jd-inheritance-table">
+ <tr>
+ <td class="jd-inheritance-class-cell" colSpan="1"><a href="#">DeprecatedFoo</a></td>
+ </tr>
+ </table>
+ <h2>Summary</h2>
+ <table class="responsive" id="pubctors">
+ <tbody>
+ <tr>
+ <th colSpan="2">Public constructors</th>
+ </tr>
+ <tr>
+ <td>
+ <div><code><a href="#%3Cinit%3E()">&lt;init&gt;</a>()</code></div>
+ <p></p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <h2>Public constructors</h2>
+<a name="%3Cinit%3E()"></a>
+ <div class="api apilevel-" data-version-added="">
+ <h3 class="api-name">&lt;init&gt;</h3>
+ <pre class="api-signature no-pretty-print"><span class="identifier">DeprecatedFoo</span><span class="symbol">(</span><span class="symbol">)</span></pre>
+ </div>
+ </body>
+</html>
diff --git a/core/testdata/format/dac/deprecation/dac/Foo.html b/core/testdata/format/dac/deprecation/dac/Foo.html
new file mode 100644
index 000000000..76c0760a0
--- /dev/null
+++ b/core/testdata/format/dac/deprecation/dac/Foo.html
@@ -0,0 +1,82 @@
+<html devsite="true">
+ <head>
+ <title>Foo</title>
+{% setvar book_path %}/_book.yaml{% endsetvar %}
+{% include "_shared/_reference-head-tags.html" %}
+ </head>
+ <body>
+ <div id="api-info-block"></div>
+ <h1>Foo</h1>
+ <pre><span class="keyword">open</span> <span class="keyword">class </span><span class="identifier">Foo</span></pre>
+ <table class="jd-inheritance-table">
+ <tr>
+ <td class="jd-inheritance-class-cell" colSpan="1"><a href="#">Foo</a></td>
+ </tr>
+ </table>
+ <h2>Summary</h2>
+ <table class="responsive" id="pubctors">
+ <tbody>
+ <tr>
+ <th colSpan="2">Public constructors</th>
+ </tr>
+ <tr>
+ <td>
+ <div><code><a href="#%3Cinit%3E()">&lt;init&gt;</a>()</code></div>
+ <p></p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <table class="responsive" id="pubmethods">
+ <tbody>
+ <tr>
+ <th colSpan="2">Public methods</th>
+ </tr>
+ <tr>
+ <td><span class="keyword">open</span> <span class="keyword">static</span> <a href="DeprecatedFoo.html#"><span class="identifier">DeprecatedFoo</span></a><span class="symbol">!</span></td>
+ <td>
+ <div><code><a href="#badFooMethod()">badFooMethod</a>()</code></div>
+ <p></p>
+ </td>
+ </tr>
+ <tr>
+ <td><span class="keyword">open</span> <span class="keyword">static</span> <a href="DeprecatedFoo.html#"><span class="identifier">DeprecatedFoo</span></a><span class="symbol">!</span></td>
+ <td>
+ <div><code><a href="#goodFooMethod()">goodFooMethod</a>()</code></div>
+ <p></p>
+ </td>
+ </tr>
+ <tr>
+ <td><span class="keyword">open</span> <span class="keyword">static</span> <a href="#"><span class="identifier">Foo</span></a><span class="symbol">!</span></td>
+ <td>
+ <div><code><a href="#replacementFooMethod()">replacementFooMethod</a>()</code></div>
+ <p></p>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <h2>Public constructors</h2>
+<a name="%3Cinit%3E()"></a>
+ <div class="api apilevel-" data-version-added="">
+ <h3 class="api-name">&lt;init&gt;</h3>
+ <pre class="api-signature no-pretty-print"><span class="identifier">Foo</span><span class="symbol">(</span><span class="symbol">)</span></pre>
+ </div>
+ <h2>Public methods</h2>
+<a name="badFooMethod()"></a>
+ <div class="api apilevel-" data-version-added="">
+ <h3 class="api-name">badFooMethod</h3>
+ <pre class="api-signature no-pretty-print"><span class="keyword">open</span> <span class="keyword">static</span> <span class="keyword">fun </span><span class="identifier">badFooMethod</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="DeprecatedFoo.html#"><span class="identifier">DeprecatedFoo</span></a><span class="symbol">!</span></pre>
+ </div>
+<a name="goodFooMethod()"></a>
+ <div class="api apilevel-" data-version-added="">
+ <h3 class="api-name">goodFooMethod</h3>
+ <pre class="api-signature no-pretty-print"><span class="keyword">open</span> <span class="keyword">static</span> <span class="keyword">fun </span><del><span class="identifier">goodFooMethod</span></del><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="DeprecatedFoo.html#"><span class="identifier">DeprecatedFoo</span></a><span class="symbol">!</span></pre>
+ <p class="caution"><strong>Deprecated: </strong><em>Use <code><a href="#replacementFooMethod()">replacementFooMethod()</a></code> instead.</em></p>
+ </div>
+<a name="replacementFooMethod()"></a>
+ <div class="api apilevel-" data-version-added="">
+ <h3 class="api-name">replacementFooMethod</h3>
+ <pre class="api-signature no-pretty-print"><span class="keyword">open</span> <span class="keyword">static</span> <span class="keyword">fun </span><span class="identifier">replacementFooMethod</span><span class="symbol">(</span><span class="symbol">)</span><span class="symbol">: </span><a href="#"><span class="identifier">Foo</span></a><span class="symbol">!</span></pre>
+ </div>
+ </body>
+</html>
diff --git a/core/testdata/format/dac/inheritedMethods/dac-as-java/Child.html b/core/testdata/format/dac/inheritedMethods/dac-as-java/Child.html
index 65e2addb0..67a58125a 100644
--- a/core/testdata/format/dac/inheritedMethods/dac-as-java/Child.html
+++ b/core/testdata/format/dac/inheritedMethods/dac-as-java/Child.html
@@ -21,11 +21,7 @@
<table class="responsive" id="pubctors">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Public constructors" id="pubctors" level="h3" toc="" class="">
- <h3 is-upgraded="">Public constructors</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Public constructors</th>
</tr>
<tr>
<td>
@@ -38,11 +34,7 @@
<table class="responsive" id="pubmethods">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Public methods" id="pubmethods" level="h3" toc="" class="">
- <h3 is-upgraded="">Public methods</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Public methods</th>
</tr>
<tr>
<td><span class="identifier">void</span></td>
@@ -60,35 +52,6 @@
</tr>
</tbody>
</table>
- <table class="responsive" id="inhmethods">
- <tbody>
- <tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Inherited functions" id="inherited-functions" level="h3" toc="" class="">
- <h3 is-upgraded="">Inherited functions</h3>
- </devsite-heading>
- </th>
- </tr>
- <tr class="api apilevel-">
- <td colSpan="2">
- <div class="expandable jd-inherited-apis"><span class="expand-control exw-expanded">From class <code><a href="Parent.html#">Parent</a></code></span>
- <table class="responsive exw-expanded-content">
- <tbody>
- <tr class="api apilevel-" data-version-added="ApiLevel:">
- <td><code><span class="identifier">void</span></code></td>
- <td width="100%"><code><a href="Parent.html#foo()">foo</a>()</code>
- <p>
- <p>Do a superclass foo</p>
- </p>
- </td>
- </tr>
- </tbody>
- </table>
- </div>
- </td>
- </tr>
- </tbody>
- </table>
<h2>Public constructors</h2>
<a name="Child()"></a>
<div class="api apilevel-" data-version-added="">
diff --git a/core/testdata/format/dac/inheritedMethods/dac-as-java/Parent.html b/core/testdata/format/dac/inheritedMethods/dac-as-java/Parent.html
index 4efddeb30..977e693d8 100644
--- a/core/testdata/format/dac/inheritedMethods/dac-as-java/Parent.html
+++ b/core/testdata/format/dac/inheritedMethods/dac-as-java/Parent.html
@@ -7,7 +7,7 @@
<body>
<div id="api-info-block"></div>
<h1>Parent</h1>
- <pre><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">Parent</span> <span class="keyword">implements</span> <span class="identifier">java.lang.Object</span></pre>
+ <pre><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">Parent</span> <span class="keyword">implements</span> <span class="identifier">Object</span></pre>
<table class="jd-inheritance-table">
<tr>
<td class="jd-inheritance-class-cell" colSpan="1"><a href="#">Parent</a></td>
@@ -38,11 +38,7 @@
<table class="responsive" id="pubctors">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Public constructors" id="pubctors" level="h3" toc="" class="">
- <h3 is-upgraded="">Public constructors</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Public constructors</th>
</tr>
<tr>
<td>
@@ -55,11 +51,7 @@
<table class="responsive" id="pubmethods">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Public methods" id="pubmethods" level="h3" toc="" class="">
- <h3 is-upgraded="">Public methods</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Public methods</th>
</tr>
<tr>
<td><span class="identifier">void</span></td>
diff --git a/core/testdata/format/dac/inheritedMethods/dac/Child.html b/core/testdata/format/dac/inheritedMethods/dac/Child.html
index 5da7f475d..dff52afbe 100644
--- a/core/testdata/format/dac/inheritedMethods/dac/Child.html
+++ b/core/testdata/format/dac/inheritedMethods/dac/Child.html
@@ -21,11 +21,7 @@
<table class="responsive" id="pubctors">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Public constructors" id="pubctors" level="h3" toc="" class="">
- <h3 is-upgraded="">Public constructors</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Public constructors</th>
</tr>
<tr>
<td>
@@ -38,11 +34,7 @@
<table class="responsive" id="pubmethods">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Public methods" id="pubmethods" level="h3" toc="" class="">
- <h3 is-upgraded="">Public methods</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Public methods</th>
</tr>
<tr>
<td><span class="keyword">open</span> <span class="identifier">Unit</span></td>
@@ -63,11 +55,7 @@
<table class="responsive" id="inhmethods">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Inherited functions" id="inherited-functions" level="h3" toc="" class="">
- <h3 is-upgraded="">Inherited functions</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Inherited functions</th>
</tr>
<tr class="api apilevel-">
<td colSpan="2">
diff --git a/core/testdata/format/dac/inheritedMethods/dac/Parent.html b/core/testdata/format/dac/inheritedMethods/dac/Parent.html
index 0023368f0..ff9048b96 100644
--- a/core/testdata/format/dac/inheritedMethods/dac/Parent.html
+++ b/core/testdata/format/dac/inheritedMethods/dac/Parent.html
@@ -38,11 +38,7 @@
<table class="responsive" id="pubctors">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Public constructors" id="pubctors" level="h3" toc="" class="">
- <h3 is-upgraded="">Public constructors</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Public constructors</th>
</tr>
<tr>
<td>
@@ -55,11 +51,7 @@
<table class="responsive" id="pubmethods">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Public methods" id="pubmethods" level="h3" toc="" class="">
- <h3 is-upgraded="">Public methods</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Public methods</th>
</tr>
<tr>
<td><span class="keyword">open</span> <span class="identifier">Unit</span></td>
diff --git a/core/testdata/format/dac/javaClassLinks/dac-as-java/Bar.html b/core/testdata/format/dac/javaClassLinks/dac-as-java/Bar.html
index 3d247edb8..64d0c4cd8 100644
--- a/core/testdata/format/dac/javaClassLinks/dac-as-java/Bar.html
+++ b/core/testdata/format/dac/javaClassLinks/dac-as-java/Bar.html
@@ -7,7 +7,7 @@
<body>
<div id="api-info-block"></div>
<h1>Bar</h1>
- <pre><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">Bar</span> <span class="keyword">implements</span> <span class="identifier">java.lang.Object</span></pre>
+ <pre><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">Bar</span> <span class="keyword">implements</span> <span class="identifier">Object</span></pre>
<table class="jd-inheritance-table">
<tr>
<td class="jd-inheritance-class-cell" colSpan="1"><a href="#">Bar</a></td>
@@ -17,11 +17,7 @@
<table class="responsive" id="pubctors">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Public constructors" id="pubctors" level="h3" toc="" class="">
- <h3 is-upgraded="">Public constructors</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Public constructors</th>
</tr>
<tr>
<td>
@@ -34,11 +30,7 @@
<table class="responsive" id="pubmethods">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Public methods" id="pubmethods" level="h3" toc="" class="">
- <h3 is-upgraded="">Public methods</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Public methods</th>
</tr>
<tr>
<td><a href="Foo.html#"><span class="identifier">Foo</span></a></td>
@@ -48,9 +40,9 @@
</td>
</tr>
<tr>
- <td><a href="http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html"><span class="identifier">java.util.ArrayList</span></a><span class="symbol">&lt;</span><span class="identifier">java.lang.String</span><span class="symbol">&gt;</span></td>
+ <td><a href="http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html"><span class="identifier">ArrayList</span></a><span class="symbol">&lt;</span><span class="identifier">String</span><span class="symbol">&gt;</span></td>
<td>
- <div><code><a href="#getMyList(java.util.HashSet)">getMyList</a>(<a href="http://docs.oracle.com/javase/6/docs/api/java/util/HashSet.html"><span class="identifier">java.util.HashSet</span></a> <span class="identifier">input</span>)</code></div>
+ <div><code><a href="#getMyList(HashSet)">getMyList</a>(<a href="http://docs.oracle.com/javase/6/docs/api/java/util/HashSet.html"><span class="identifier">HashSet</span></a> <span class="identifier">input</span>)</code></div>
<p></p>
</td>
</tr>
@@ -108,10 +100,10 @@
</tbody>
</table>
</div>
-<a name="getMyList(java.util.HashSet)"></a>
+<a name="getMyList(HashSet)"></a>
<div class="api apilevel-" data-version-added="">
<h3 class="api-name">getMyList</h3>
- <pre class="api-signature no-pretty-print"><span class="keyword">public</span> <a href="http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html"><span class="identifier">java.util.ArrayList</span></a><span class="symbol">&lt;</span><span class="identifier">java.lang.String</span><span class="symbol">&gt;</span> <span class="identifier">getMyList</span><span class="symbol">(</span><a href="http://docs.oracle.com/javase/6/docs/api/java/util/HashSet.html"><span class="identifier">java.util.HashSet</span></a> <span class="identifier">input</span><span class="symbol">)</span></pre>
+ <pre class="api-signature no-pretty-print"><span class="keyword">public</span> <a href="http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html"><span class="identifier">ArrayList</span></a><span class="symbol">&lt;</span><span class="identifier">String</span><span class="symbol">&gt;</span> <span class="identifier">getMyList</span><span class="symbol">(</span><a href="http://docs.oracle.com/javase/6/docs/api/java/util/HashSet.html"><span class="identifier">HashSet</span></a> <span class="identifier">input</span><span class="symbol">)</span></pre>
<table class="responsive">
<tbody>
<tr>
@@ -119,7 +111,7 @@
</tr>
<tr>
<td><code>input</code></td>
- <td><a href="http://docs.oracle.com/javase/6/docs/api/java/util/HashSet.html"><span class="identifier">java.util.HashSet</span></a><span class="symbol">:</span> The best set you can afford.</td>
+ <td><a href="http://docs.oracle.com/javase/6/docs/api/java/util/HashSet.html"><span class="identifier">HashSet</span></a><span class="symbol">:</span> The best set you can afford.</td>
</tr>
</tbody>
</table>
@@ -129,7 +121,7 @@
<th colspan="2">Return</th>
</tr>
<tr>
- <td><code><a href="http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html"><span class="identifier">java.util.ArrayList</span></a><span class="symbol">&lt;</span><span class="identifier">java.lang.String</span><span class="symbol">&gt;</span></code></td>
+ <td><code><a href="http://docs.oracle.com/javase/6/docs/api/java/util/ArrayList.html"><span class="identifier">ArrayList</span></a><span class="symbol">&lt;</span><span class="identifier">String</span><span class="symbol">&gt;</span></code></td>
<td></td>
</tr>
</tbody>
diff --git a/core/testdata/format/dac/javaClassLinks/dac-as-java/Foo.html b/core/testdata/format/dac/javaClassLinks/dac-as-java/Foo.html
index 5717ecf6b..bddb7ff8a 100644
--- a/core/testdata/format/dac/javaClassLinks/dac-as-java/Foo.html
+++ b/core/testdata/format/dac/javaClassLinks/dac-as-java/Foo.html
@@ -7,7 +7,7 @@
<body>
<div id="api-info-block"></div>
<h1>Foo</h1>
- <pre><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">Foo</span> <span class="keyword">implements</span> <span class="identifier">java.lang.Object</span></pre>
+ <pre><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">Foo</span> <span class="keyword">implements</span> <span class="identifier">Object</span></pre>
<table class="jd-inheritance-table">
<tr>
<td class="jd-inheritance-class-cell" colSpan="1"><a href="#">Foo</a></td>
@@ -17,11 +17,7 @@
<table class="responsive" id="pubctors">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Public constructors" id="pubctors" level="h3" toc="" class="">
- <h3 is-upgraded="">Public constructors</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Public constructors</th>
</tr>
<tr>
<td>
diff --git a/core/testdata/format/dac/javaClassLinks/dac/Bar.html b/core/testdata/format/dac/javaClassLinks/dac/Bar.html
index 0c0c36714..87f2c3adf 100644
--- a/core/testdata/format/dac/javaClassLinks/dac/Bar.html
+++ b/core/testdata/format/dac/javaClassLinks/dac/Bar.html
@@ -17,11 +17,7 @@
<table class="responsive" id="pubctors">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Public constructors" id="pubctors" level="h3" toc="" class="">
- <h3 is-upgraded="">Public constructors</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Public constructors</th>
</tr>
<tr>
<td>
@@ -34,11 +30,7 @@
<table class="responsive" id="pubmethods">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Public methods" id="pubmethods" level="h3" toc="" class="">
- <h3 is-upgraded="">Public methods</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Public methods</th>
</tr>
<tr>
<td><span class="keyword">open</span> <a href="Foo.html#"><span class="identifier">Foo</span></a><span class="symbol">!</span></td>
diff --git a/core/testdata/format/dac/javaClassLinks/dac/Foo.html b/core/testdata/format/dac/javaClassLinks/dac/Foo.html
index dc7637b6a..51ba0204c 100644
--- a/core/testdata/format/dac/javaClassLinks/dac/Foo.html
+++ b/core/testdata/format/dac/javaClassLinks/dac/Foo.html
@@ -17,11 +17,7 @@
<table class="responsive" id="pubctors">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Public constructors" id="pubctors" level="h3" toc="" class="">
- <h3 is-upgraded="">Public constructors</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Public constructors</th>
</tr>
<tr>
<td>
diff --git a/core/testdata/format/dac/javaConstructor/dac-as-java/Foo.html b/core/testdata/format/dac/javaConstructor/dac-as-java/Foo.html
index 5717ecf6b..bddb7ff8a 100644
--- a/core/testdata/format/dac/javaConstructor/dac-as-java/Foo.html
+++ b/core/testdata/format/dac/javaConstructor/dac-as-java/Foo.html
@@ -7,7 +7,7 @@
<body>
<div id="api-info-block"></div>
<h1>Foo</h1>
- <pre><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">Foo</span> <span class="keyword">implements</span> <span class="identifier">java.lang.Object</span></pre>
+ <pre><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">Foo</span> <span class="keyword">implements</span> <span class="identifier">Object</span></pre>
<table class="jd-inheritance-table">
<tr>
<td class="jd-inheritance-class-cell" colSpan="1"><a href="#">Foo</a></td>
@@ -17,11 +17,7 @@
<table class="responsive" id="pubctors">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Public constructors" id="pubctors" level="h3" toc="" class="">
- <h3 is-upgraded="">Public constructors</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Public constructors</th>
</tr>
<tr>
<td>
diff --git a/core/testdata/format/dac/javaConstructor/dac/Foo.html b/core/testdata/format/dac/javaConstructor/dac/Foo.html
index dc7637b6a..51ba0204c 100644
--- a/core/testdata/format/dac/javaConstructor/dac/Foo.html
+++ b/core/testdata/format/dac/javaConstructor/dac/Foo.html
@@ -17,11 +17,7 @@
<table class="responsive" id="pubctors">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Public constructors" id="pubctors" level="h3" toc="" class="">
- <h3 is-upgraded="">Public constructors</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Public constructors</th>
</tr>
<tr>
<td>
diff --git a/core/testdata/format/dac/javaDefaultConstructor/dac-as-java/Foo.html b/core/testdata/format/dac/javaDefaultConstructor/dac-as-java/Foo.html
index 5717ecf6b..bddb7ff8a 100644
--- a/core/testdata/format/dac/javaDefaultConstructor/dac-as-java/Foo.html
+++ b/core/testdata/format/dac/javaDefaultConstructor/dac-as-java/Foo.html
@@ -7,7 +7,7 @@
<body>
<div id="api-info-block"></div>
<h1>Foo</h1>
- <pre><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">Foo</span> <span class="keyword">implements</span> <span class="identifier">java.lang.Object</span></pre>
+ <pre><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">Foo</span> <span class="keyword">implements</span> <span class="identifier">Object</span></pre>
<table class="jd-inheritance-table">
<tr>
<td class="jd-inheritance-class-cell" colSpan="1"><a href="#">Foo</a></td>
@@ -17,11 +17,7 @@
<table class="responsive" id="pubctors">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Public constructors" id="pubctors" level="h3" toc="" class="">
- <h3 is-upgraded="">Public constructors</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Public constructors</th>
</tr>
<tr>
<td>
diff --git a/core/testdata/format/dac/javaDefaultConstructor/dac/Foo.html b/core/testdata/format/dac/javaDefaultConstructor/dac/Foo.html
index dc7637b6a..51ba0204c 100644
--- a/core/testdata/format/dac/javaDefaultConstructor/dac/Foo.html
+++ b/core/testdata/format/dac/javaDefaultConstructor/dac/Foo.html
@@ -17,11 +17,7 @@
<table class="responsive" id="pubctors">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Public constructors" id="pubctors" level="h3" toc="" class="">
- <h3 is-upgraded="">Public constructors</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Public constructors</th>
</tr>
<tr>
<td>
diff --git a/core/testdata/format/dac/javaMethodVisibilities/dac-as-java/Foo.html b/core/testdata/format/dac/javaMethodVisibilities/dac-as-java/Foo.html
index 7f494c467..978b1071d 100644
--- a/core/testdata/format/dac/javaMethodVisibilities/dac-as-java/Foo.html
+++ b/core/testdata/format/dac/javaMethodVisibilities/dac-as-java/Foo.html
@@ -7,7 +7,7 @@
<body>
<div id="api-info-block"></div>
<h1>Foo</h1>
- <pre><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">Foo</span> <span class="keyword">implements</span> <span class="identifier">java.lang.Object</span></pre>
+ <pre><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">Foo</span> <span class="keyword">implements</span> <span class="identifier">Object</span></pre>
<table class="jd-inheritance-table">
<tr>
<td class="jd-inheritance-class-cell" colSpan="1"><a href="#">Foo</a></td>
@@ -17,11 +17,7 @@
<table class="responsive" id="pubctors">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Public constructors" id="pubctors" level="h3" toc="" class="">
- <h3 is-upgraded="">Public constructors</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Public constructors</th>
</tr>
<tr>
<td>
@@ -34,11 +30,7 @@
<table class="responsive" id="pubmethods">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Public methods" id="pubmethods" level="h3" toc="" class="">
- <h3 is-upgraded="">Public methods</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Public methods</th>
</tr>
<tr>
<td><span class="identifier">void</span></td>
@@ -52,11 +44,7 @@
<table class="responsive" id="promethods">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Protected methods" id="promethods" level="h3" toc="" class="">
- <h3 is-upgraded="">Protected methods</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Protected methods</th>
</tr>
<tr>
<td><span class="identifier">void</span></td>
@@ -70,11 +58,7 @@
<table class="responsive" id="primethods">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Private methods" id="primethods" level="h3" toc="" class="">
- <h3 is-upgraded="">Private methods</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Private methods</th>
</tr>
<tr>
<td><span class="identifier">void</span></td>
diff --git a/core/testdata/format/dac/javaMethodVisibilities/dac/Foo.html b/core/testdata/format/dac/javaMethodVisibilities/dac/Foo.html
index 3f1e45107..0bcdcae90 100644
--- a/core/testdata/format/dac/javaMethodVisibilities/dac/Foo.html
+++ b/core/testdata/format/dac/javaMethodVisibilities/dac/Foo.html
@@ -17,11 +17,7 @@
<table class="responsive" id="pubctors">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Public constructors" id="pubctors" level="h3" toc="" class="">
- <h3 is-upgraded="">Public constructors</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Public constructors</th>
</tr>
<tr>
<td>
@@ -34,11 +30,7 @@
<table class="responsive" id="pubmethods">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Public methods" id="pubmethods" level="h3" toc="" class="">
- <h3 is-upgraded="">Public methods</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Public methods</th>
</tr>
<tr>
<td><span class="keyword">open</span> <span class="identifier">Unit</span></td>
@@ -52,11 +44,7 @@
<table class="responsive" id="promethods">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Protected methods" id="promethods" level="h3" toc="" class="">
- <h3 is-upgraded="">Protected methods</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Protected methods</th>
</tr>
<tr>
<td><span class="keyword">open</span> <span class="identifier">Unit</span></td>
@@ -70,11 +58,7 @@
<table class="responsive" id="primethods">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Private methods" id="primethods" level="h3" toc="" class="">
- <h3 is-upgraded="">Private methods</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Private methods</th>
</tr>
<tr>
<td><span class="keyword">open</span> <span class="identifier">Unit</span></td>
diff --git a/core/testdata/format/dac/javaSeeTag/Bar.kt b/core/testdata/format/dac/javaSeeTag/Bar.kt
index 9df671194..21170d363 100644
--- a/core/testdata/format/dac/javaSeeTag/Bar.kt
+++ b/core/testdata/format/dac/javaSeeTag/Bar.kt
@@ -1,4 +1,5 @@
/**
* @see Foo
+ * @see java.lang.String
*/
class Bar \ No newline at end of file
diff --git a/core/testdata/format/dac/javaSeeTag/Foo.java b/core/testdata/format/dac/javaSeeTag/Foo.java
index 94a24606d..b784ae225 100644
--- a/core/testdata/format/dac/javaSeeTag/Foo.java
+++ b/core/testdata/format/dac/javaSeeTag/Foo.java
@@ -1,5 +1,6 @@
/**
* @see #bar
+ * @see java.lang.String
*/
public class Foo {
public void bar() {}
diff --git a/core/testdata/format/dac/javaSeeTag/dac-as-java/Bar.html b/core/testdata/format/dac/javaSeeTag/dac-as-java/Bar.html
index 3dbc813fa..7eb3cdf85 100644
--- a/core/testdata/format/dac/javaSeeTag/dac-as-java/Bar.html
+++ b/core/testdata/format/dac/javaSeeTag/dac-as-java/Bar.html
@@ -7,7 +7,7 @@
<body>
<div id="api-info-block"></div>
<h1>Bar</h1>
- <pre><span class="keyword">public</span> <span class="keyword">final</span> <span class="keyword">class</span> <span class="identifier">Bar</span> <span class="keyword">implements</span> <span class="identifier">java.lang.Object</span></pre>
+ <pre><span class="keyword">public</span> <span class="keyword">final</span> <span class="keyword">class</span> <span class="identifier">Bar</span> <span class="keyword">implements</span> <span class="identifier">Object</span></pre>
<table class="jd-inheritance-table">
<tr>
<td class="jd-inheritance-class-cell" colSpan="1"><a href="#">Bar</a></td>
@@ -17,11 +17,7 @@
<table class="responsive" id="pubctors">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Public constructors" id="pubctors" level="h3" toc="" class="">
- <h3 is-upgraded="">Public constructors</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Public constructors</th>
</tr>
<tr>
<td>
@@ -39,9 +35,8 @@
<div>
<p><b>See Also</b></p>
<ul class="nolist">
- <li><code>
- <p><a href="Foo.html#">Foo</a></p>
- </code></li>
+ <li><code><a href="Foo.html#">Foo</a></code></li>
+ <li><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html">java.lang.String</a></code></li>
</ul>
</div>
</div>
diff --git a/core/testdata/format/dac/javaSeeTag/dac-as-java/Foo.html b/core/testdata/format/dac/javaSeeTag/dac-as-java/Foo.html
index 6a6b5045c..4529fd04d 100644
--- a/core/testdata/format/dac/javaSeeTag/dac-as-java/Foo.html
+++ b/core/testdata/format/dac/javaSeeTag/dac-as-java/Foo.html
@@ -7,7 +7,7 @@
<body>
<div id="api-info-block"></div>
<h1>Foo</h1>
- <pre><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">Foo</span> <span class="keyword">implements</span> <span class="identifier">java.lang.Object</span></pre>
+ <pre><span class="keyword">public</span> <span class="keyword">class</span> <span class="identifier">Foo</span> <span class="keyword">implements</span> <span class="identifier">Object</span></pre>
<table class="jd-inheritance-table">
<tr>
<td class="jd-inheritance-class-cell" colSpan="1"><a href="#">Foo</a></td>
@@ -17,11 +17,7 @@
<table class="responsive" id="pubctors">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Public constructors" id="pubctors" level="h3" toc="" class="">
- <h3 is-upgraded="">Public constructors</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Public constructors</th>
</tr>
<tr>
<td>
@@ -34,11 +30,7 @@
<table class="responsive" id="pubmethods">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Public methods" id="pubmethods" level="h3" toc="" class="">
- <h3 is-upgraded="">Public methods</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Public methods</th>
</tr>
<tr>
<td><span class="identifier">void</span></td>
diff --git a/core/testdata/format/dac/javaSeeTag/dac/Bar.html b/core/testdata/format/dac/javaSeeTag/dac/Bar.html
index b7d8304d3..10a5f59ed 100644
--- a/core/testdata/format/dac/javaSeeTag/dac/Bar.html
+++ b/core/testdata/format/dac/javaSeeTag/dac/Bar.html
@@ -17,11 +17,7 @@
<table class="responsive" id="pubctors">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Public constructors" id="pubctors" level="h3" toc="" class="">
- <h3 is-upgraded="">Public constructors</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Public constructors</th>
</tr>
<tr>
<td>
@@ -39,9 +35,8 @@
<div>
<p><b>See Also</b></p>
<ul class="nolist">
- <li><code>
- <p><a href="Foo.html#">Foo</a></p>
- </code></li>
+ <li><code><a href="Foo.html#">Foo</a></code></li>
+ <li><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html">java.lang.String</a></code></li>
</ul>
</div>
</div>
diff --git a/core/testdata/format/dac/javaSeeTag/dac/Foo.html b/core/testdata/format/dac/javaSeeTag/dac/Foo.html
index 473fd2cc2..7ca410c06 100644
--- a/core/testdata/format/dac/javaSeeTag/dac/Foo.html
+++ b/core/testdata/format/dac/javaSeeTag/dac/Foo.html
@@ -17,11 +17,7 @@
<table class="responsive" id="pubctors">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Public constructors" id="pubctors" level="h3" toc="" class="">
- <h3 is-upgraded="">Public constructors</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Public constructors</th>
</tr>
<tr>
<td>
@@ -34,11 +30,7 @@
<table class="responsive" id="pubmethods">
<tbody>
<tr>
- <th colSpan="2">
- <devsite-heading ds-is="heading" text="Public methods" id="pubmethods" level="h3" toc="" class="">
- <h3 is-upgraded="">Public methods</h3>
- </devsite-heading>
- </th>
+ <th colSpan="2">Public methods</th>
</tr>
<tr>
<td><span class="keyword">open</span> <span class="identifier">Unit</span></td>
@@ -58,6 +50,7 @@
<p><b>See Also</b></p>
<ul class="nolist">
<li><code><a href="#bar()">#bar</a></code></li>
+ <li><code><a href="http://docs.oracle.com/javase/6/docs/api/java/lang/String.html">java.lang.String</a></code></li>
</ul>
</div>
</div>
diff --git a/core/testdata/functions/functionWithAnnotatedLambdaParam.kt b/core/testdata/functions/functionWithAnnotatedLambdaParam.kt
new file mode 100644
index 000000000..4136e03b3
--- /dev/null
+++ b/core/testdata/functions/functionWithAnnotatedLambdaParam.kt
@@ -0,0 +1,7 @@
+@Target(AnnotationTarget.TYPE)
+@Retention(AnnotationRetention.SOURCE)
+@MustBeDocumented
+public annotation class Fancy
+
+fun function(notInlined: @Fancy () -> Unit) {
+}
diff --git a/gradle.properties b/gradle.properties
index ff6aa594c..263eb1530 100644
--- a/gradle.properties
+++ b/gradle.properties
@@ -1,10 +1,12 @@
-dokka_version=0.9.17-g008
+dokka_version=0.9.17-g013
dokka_publication_channel=dokka
#Kotlin compiler and plugin
-bundled_kotlin_compiler_version=1.3.20-dev-564
-kotlin_version=1.2.21
-kotlin_for_gradle_runtime_version=1.1.60
+bundled_kotlin_compiler_version=1.3.61
+kotlin_version=1.3.61
+kotlin_plugin_version=1.3.61-release-180
+idea_version=192.5728.98
+kotlin_for_gradle_runtime_version=1.3.61
ant_version=1.9.6
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 610ad4c51..bd24854fe 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -2,4 +2,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-4.5-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-all.zip
diff --git a/runners/cli/src/main/kotlin/cli/main.kt b/runners/cli/src/main/kotlin/cli/main.kt
index e7fb76f01..37be6e289 100644
--- a/runners/cli/src/main/kotlin/cli/main.kt
+++ b/runners/cli/src/main/kotlin/cli/main.kt
@@ -72,12 +72,22 @@ class DokkaArguments {
@set:Argument(value = "collectInheritedExtensionsFromLibraries", description = "Search for applicable extensions in libraries")
var collectInheritedExtensionsFromLibraries: Boolean = false
- @set:Argument(value = "generateClassIndexPage", description = "Generate classes.html index page.")
+ @set:Argument(value = "generateClassIndexPage", description = "Generate classes.html index page. [Deprecated]: use noGenerateClassIndexPage instead.")
+ @Deprecated("There is no way to set this to false.", replaceWith = ReplaceWith(
+ expression ="noGenerateClassIndexPage"))
var generateClassIndexPage: Boolean = true
- @set:Argument(value = "generatePackageIndexPage", description = "Generate packages.html index page.")
+ @set:Argument(value = "generatePackageIndexPage", description = "Generate packages.html index page. [Deprecated]: use noGeneratePackageIndexPage instead.")
+ @Deprecated("There is no way to set this to false.", replaceWith = ReplaceWith(
+ expression ="noGeneratePackageIndexPage"))
var generatePackageIndexPage: Boolean = true
+ @set:Argument(value = "noGenerateClassIndexPage", description = "Disable classes.html index page.")
+ var noGenerateClassIndexPage: Boolean = false
+
+ @set:Argument(value = "noGeneratePackageIndexPage", description = "Disable packages.html index page.")
+ var noGeneratePackageIndexPage: Boolean = false
+
@set:Argument(value = "outlineRoot", description = "Relative root directory the outline files. I.e. androidx/core/")
var outlineRoot: String = ""
@@ -142,8 +152,8 @@ object MainKt {
languageVersion = arguments.languageVersion,
apiVersion = arguments.apiVersion,
collectInheritedExtensionsFromLibraries = arguments.collectInheritedExtensionsFromLibraries,
- generateClassIndexPage = arguments.generateClassIndexPage,
- generatePackageIndexPage = arguments.generatePackageIndexPage,
+ generateClassIndexPage = !arguments.noGenerateClassIndexPage,
+ generatePackageIndexPage = !arguments.noGeneratePackageIndexPage,
outlineRoot = arguments.outlineRoot,
dacRoot = arguments.dacRoot,
noJdkLink = arguments.noJdkLink
diff --git a/runners/gradle-plugin/build.gradle b/runners/gradle-plugin/build.gradle
index a0670803c..4742dda5d 100644
--- a/runners/gradle-plugin/build.gradle
+++ b/runners/gradle-plugin/build.gradle
@@ -63,6 +63,27 @@ publishing {
}
project.shadow.component(publication)
+ publication.pom { pom ->
+ // Add dokka-fatjar as a runtime dependency.
+ // This is a workaround until the Shadow jar can put project dependencies into the .pom: https://github.com/johnrengelman/shadow/commit/da82b37522b349aff414f571d2037682acd84f27
+ pom.withXml { xml ->
+ def node = xml.asNode()
+ def deps = null
+ node.children().each { child ->
+ if (child.name().toString() == "dependencies") {
+ deps = child
+ }
+ }
+ if (deps == null) {
+ deps = node.appendNode("dependencies")
+ }
+ def dep = deps.appendNode("dependency")
+ dep.appendNode("groupId", "org.jetbrains.dokka")
+ dep.appendNode("artifactId", "dokka-fatjar")
+ dep.appendNode("version", dokka_version)
+ dep.appendNode("scope", "runtime")
+ }
+ }
}
}
}