aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Ogorodnik <Simon.Ogorodnik@jetbrains.com>2017-11-27 16:05:59 +0300
committerSimon Ogorodnik <Simon.Ogorodnik@jetbrains.com>2017-11-27 16:05:59 +0300
commit13c4cb93f55693f3bfa396ccad9549d8654ec3f9 (patch)
treed0af242a455f14d051251eeabb2b1dcc6d6db700
parentcc2a478ff0f1831be2333bf97712e1ffe9d764fe (diff)
downloaddokka-13c4cb93f55693f3bfa396ccad9549d8654ec3f9.tar.gz
dokka-13c4cb93f55693f3bfa396ccad9549d8654ec3f9.tar.bz2
dokka-13c4cb93f55693f3bfa396ccad9549d8654ec3f9.zip
Add language version arguments
-rw-r--r--core/src/main/kotlin/Analysis/AnalysisEnvironment.kt9
-rw-r--r--core/src/main/kotlin/DokkaBootstrapImpl.kt2
-rw-r--r--core/src/main/kotlin/Generation/DokkaGenerator.kt2
-rw-r--r--core/src/main/kotlin/Generation/configurationImpl.kt46
-rw-r--r--core/src/main/kotlin/Kotlin/DocumentationBuilder.kt2
-rw-r--r--core/src/test/kotlin/TestAPI.kt13
-rw-r--r--core/src/test/kotlin/format/KotlinWebSiteFormatTest.kt9
-rw-r--r--core/src/test/kotlin/format/KotlinWebSiteHtmlFormatTest.kt9
-rw-r--r--core/src/test/kotlin/format/MarkdownFormatTest.kt18
-rw-r--r--integration/src/main/kotlin/org/jetbrains/dokka/configuration.kt48
-rw-r--r--runners/ant/src/main/kotlin/ant/dokka.kt11
-rw-r--r--runners/cli/src/main/kotlin/cli/main.kt11
-rw-r--r--runners/gradle-plugin/src/main/kotlin/main.kt14
-rw-r--r--runners/maven-plugin/src/main/kotlin/DokkaMojo.kt10
14 files changed, 147 insertions, 57 deletions
diff --git a/core/src/main/kotlin/Analysis/AnalysisEnvironment.kt b/core/src/main/kotlin/Analysis/AnalysisEnvironment.kt
index 3eb235e5..003c6835 100644
--- a/core/src/main/kotlin/Analysis/AnalysisEnvironment.kt
+++ b/core/src/main/kotlin/Analysis/AnalysisEnvironment.kt
@@ -69,7 +69,6 @@ class AnalysisEnvironment(val messageCollector: MessageCollector) : Disposable {
val projectFileIndex = CoreProjectFileIndex(environment.project,
environment.configuration.getList(JVMConfigurationKeys.CONTENT_ROOTS))
- environment.configuration.put(CommonConfigurationKeys.LANGUAGE_VERSION_SETTINGS, LanguageVersionSettingsImpl.DEFAULT)
val moduleManager = object : CoreModuleManager(environment.project, this) {
override fun getModules(): Array<out Module> = arrayOf(projectFileIndex.module)
@@ -142,7 +141,7 @@ class AnalysisEnvironment(val messageCollector: MessageCollector) : Disposable {
},
CompilerEnvironment,
packagePartProviderFactory = { info, content ->
- JvmPackagePartProvider(LanguageVersionSettingsImpl.DEFAULT, content.moduleContentScope).apply {
+ JvmPackagePartProvider(configuration.languageVersionSettings, content.moduleContentScope).apply {
addRoots(javaRoots)
}
},
@@ -157,6 +156,12 @@ class AnalysisEnvironment(val messageCollector: MessageCollector) : Disposable {
return DokkaResolutionFacade(environment.project, moduleDescriptor, resolverForModule)
}
+ fun loadLanguageVersionSettings(languageVersionString: String?, apiVersionString: String?) {
+ val languageVersion = LanguageVersion.fromVersionString(languageVersionString) ?: LanguageVersion.LATEST_STABLE
+ val apiVersion = apiVersionString?.let { ApiVersion.parse(it) } ?: ApiVersion.createByLanguageVersion(languageVersion)
+ configuration.languageVersionSettings = LanguageVersionSettingsImpl(languageVersion, apiVersion)
+ }
+
/**
* Classpath for this environment.
*/
diff --git a/core/src/main/kotlin/DokkaBootstrapImpl.kt b/core/src/main/kotlin/DokkaBootstrapImpl.kt
index 0aea4422..126a0175 100644
--- a/core/src/main/kotlin/DokkaBootstrapImpl.kt
+++ b/core/src/main/kotlin/DokkaBootstrapImpl.kt
@@ -66,6 +66,8 @@ class DokkaBootstrapImpl : DokkaBootstrap {
perPackageOptions,
externalDocumentationLinks,
noStdlibLink,
+ languageVersion,
+ apiVersion,
cacheRoot,
suppressedFiles.map { File(it) }
)
diff --git a/core/src/main/kotlin/Generation/DokkaGenerator.kt b/core/src/main/kotlin/Generation/DokkaGenerator.kt
index 17b6b156..09e5cedf 100644
--- a/core/src/main/kotlin/Generation/DokkaGenerator.kt
+++ b/core/src/main/kotlin/Generation/DokkaGenerator.kt
@@ -94,6 +94,8 @@ class DokkaGenerator(val logger: DokkaLogger,
addSources(sourcePaths)
addSources(this@DokkaGenerator.samples)
+
+ loadLanguageVersionSettings(options.languageVersion, options.apiVersion)
}
return environment
diff --git a/core/src/main/kotlin/Generation/configurationImpl.kt b/core/src/main/kotlin/Generation/configurationImpl.kt
index befe7e72..34d4154e 100644
--- a/core/src/main/kotlin/Generation/configurationImpl.kt
+++ b/core/src/main/kotlin/Generation/configurationImpl.kt
@@ -35,24 +35,28 @@ data class PackageOptionsImpl(override val prefix: String,
override val skipDeprecated: Boolean = false,
override val suppress: Boolean = false) : DokkaConfiguration.PackageOptions
-data class DokkaConfigurationImpl(override val moduleName: String,
- override val classpath: List<String>,
- override val sourceRoots: List<SourceRootImpl>,
- override val samples: List<String>,
- override val includes: List<String>,
- override val outputDir: String,
- override val format: String,
- override val includeNonPublic: Boolean,
- override val includeRootPackage: Boolean,
- override val reportUndocumented: Boolean,
- override val skipEmptyPackages: Boolean,
- override val skipDeprecated: Boolean,
- override val jdkVersion: Int,
- override val generateIndexPages: Boolean,
- override val sourceLinks: List<SourceLinkDefinitionImpl>,
- override val impliedPlatforms: List<String>,
- override val perPackageOptions: List<PackageOptionsImpl>,
- override val externalDocumentationLinks: List<ExternalDocumentationLinkImpl>,
- override val noStdlibLink: Boolean,
- override val cacheRoot: String?,
- override val suppressedFiles: List<String>) : DokkaConfiguration \ No newline at end of file
+data class DokkaConfigurationImpl(
+ override val moduleName: String,
+ override val classpath: List<String>,
+ override val sourceRoots: List<SourceRootImpl>,
+ override val samples: List<String>,
+ override val includes: List<String>,
+ override val outputDir: String,
+ override val format: String,
+ override val includeNonPublic: Boolean,
+ override val includeRootPackage: Boolean,
+ override val reportUndocumented: Boolean,
+ override val skipEmptyPackages: Boolean,
+ override val skipDeprecated: Boolean,
+ override val jdkVersion: Int,
+ override val generateIndexPages: Boolean,
+ override val sourceLinks: List<SourceLinkDefinitionImpl>,
+ override val impliedPlatforms: List<String>,
+ override val perPackageOptions: List<PackageOptionsImpl>,
+ override val externalDocumentationLinks: List<ExternalDocumentationLinkImpl>,
+ override val noStdlibLink: Boolean,
+ override val cacheRoot: String?,
+ override val suppressedFiles: List<String>,
+ override val languageVersion: String?,
+ override val apiVersion: String?
+) : DokkaConfiguration \ No newline at end of file
diff --git a/core/src/main/kotlin/Kotlin/DocumentationBuilder.kt b/core/src/main/kotlin/Kotlin/DocumentationBuilder.kt
index 2998e314..61bf50d6 100644
--- a/core/src/main/kotlin/Kotlin/DocumentationBuilder.kt
+++ b/core/src/main/kotlin/Kotlin/DocumentationBuilder.kt
@@ -48,6 +48,8 @@ class DocumentationOptions(val outputDir: String,
perPackageOptions: List<PackageOptions> = emptyList(),
externalDocumentationLinks: List<ExternalDocumentationLink> = emptyList(),
noStdlibLink: Boolean,
+ val languageVersion: String?,
+ val apiVersion: String?,
cacheRoot: String? = null,
val suppressedFiles: List<File> = emptyList()) {
init {
diff --git a/core/src/test/kotlin/TestAPI.kt b/core/src/test/kotlin/TestAPI.kt
index 8bbeb2f2..ff8a5260 100644
--- a/core/src/test/kotlin/TestAPI.kt
+++ b/core/src/test/kotlin/TestAPI.kt
@@ -28,15 +28,20 @@ fun verifyModel(vararg roots: ContentRoot,
verifier: (DocumentationModule) -> Unit) {
val documentation = DocumentationModule("test")
- val options = DocumentationOptions("", format,
+ val options = DocumentationOptions(
+ "",
+ format,
includeNonPublic = includeNonPublic,
skipEmptyPackages = false,
includeRootPackage = true,
- sourceLinks = listOf<SourceLinkDefinition>(),
+ sourceLinks = listOf(),
perPackageOptions = perPackageOptions,
generateIndexPages = false,
noStdlibLink = true,
- cacheRoot = "default")
+ cacheRoot = "default",
+ languageVersion = null,
+ apiVersion = null
+ )
appendDocumentation(documentation, *roots,
withJdk = withJdk,
@@ -88,6 +93,8 @@ fun appendDocumentation(documentation: DocumentationModule,
addClasspath(File(kotlinStrictfpRoot))
}
addRoots(roots.toList())
+
+ loadLanguageVersionSettings(options.languageVersion, options.apiVersion)
}
val defaultPlatformsProvider = object : DefaultPlatformsProvider {
override fun getDefaultPlatforms(descriptor: DeclarationDescriptor) = defaultPlatforms
diff --git a/core/src/test/kotlin/format/KotlinWebSiteFormatTest.kt b/core/src/test/kotlin/format/KotlinWebSiteFormatTest.kt
index f4ca2982..af44b048 100644
--- a/core/src/test/kotlin/format/KotlinWebSiteFormatTest.kt
+++ b/core/src/test/kotlin/format/KotlinWebSiteFormatTest.kt
@@ -42,7 +42,14 @@ class KotlinWebSiteFormatTest {
private fun buildMultiplePlatforms(path: String): DocumentationModule {
val module = DocumentationModule("test")
- val options = DocumentationOptions("", "html", generateIndexPages = false, noStdlibLink = true)
+ val options = DocumentationOptions(
+ outputDir = "",
+ outputFormat = "html",
+ generateIndexPages = false,
+ noStdlibLink = true,
+ languageVersion = null,
+ apiVersion = null
+ )
appendDocumentation(module, contentRootFromPath("testdata/format/website/$path/jvm.kt"), defaultPlatforms = listOf("JVM"), options = options)
appendDocumentation(module, contentRootFromPath("testdata/format/website/$path/jre7.kt"), defaultPlatforms = listOf("JVM", "JRE7"), options = options)
appendDocumentation(module, contentRootFromPath("testdata/format/website/$path/js.kt"), defaultPlatforms = listOf("JS"), options = options)
diff --git a/core/src/test/kotlin/format/KotlinWebSiteHtmlFormatTest.kt b/core/src/test/kotlin/format/KotlinWebSiteHtmlFormatTest.kt
index b4b133f4..433c9c13 100644
--- a/core/src/test/kotlin/format/KotlinWebSiteHtmlFormatTest.kt
+++ b/core/src/test/kotlin/format/KotlinWebSiteHtmlFormatTest.kt
@@ -57,7 +57,14 @@ class KotlinWebSiteHtmlFormatTest {
private fun buildMultiplePlatforms(path: String): DocumentationModule {
val module = DocumentationModule("test")
- val options = DocumentationOptions("", "html", generateIndexPages = false, noStdlibLink = true)
+ val options = DocumentationOptions(
+ outputDir = "",
+ outputFormat = "kotlin-website-html",
+ generateIndexPages = false,
+ noStdlibLink = true,
+ languageVersion = null,
+ apiVersion = null
+ )
appendDocumentation(module, contentRootFromPath("testdata/format/website-html/$path/jvm.kt"), defaultPlatforms = listOf("JVM"), options = options)
appendDocumentation(module, contentRootFromPath("testdata/format/website-html/$path/jre7.kt"), defaultPlatforms = listOf("JVM", "JRE7"), options = options)
appendDocumentation(module, contentRootFromPath("testdata/format/website-html/$path/js.kt"), defaultPlatforms = listOf("JS"), options = options)
diff --git a/core/src/test/kotlin/format/MarkdownFormatTest.kt b/core/src/test/kotlin/format/MarkdownFormatTest.kt
index d2ab5b5c..2c5422c5 100644
--- a/core/src/test/kotlin/format/MarkdownFormatTest.kt
+++ b/core/src/test/kotlin/format/MarkdownFormatTest.kt
@@ -300,7 +300,14 @@ class MarkdownFormatTest {
@Test fun packagePlatformsWithExtExtensions() {
val path = "multiplatform/packagePlatformsWithExtExtensions"
val module = DocumentationModule("test")
- val options = DocumentationOptions("", "html", generateIndexPages = false, noStdlibLink = true)
+ val options = DocumentationOptions(
+ outputDir = "",
+ outputFormat = "html",
+ generateIndexPages = false,
+ noStdlibLink = true,
+ languageVersion = null,
+ apiVersion = null
+ )
appendDocumentation(module, contentRootFromPath("testdata/format/$path/jvm.kt"), defaultPlatforms = listOf("JVM"), withKotlinRuntime = true, options = options)
verifyMultiplatformIndex(module, path)
verifyMultiplatformPackage(module, path)
@@ -402,7 +409,14 @@ class MarkdownFormatTest {
private fun buildMultiplePlatforms(path: String): DocumentationModule {
val module = DocumentationModule("test")
- val options = DocumentationOptions("", "html", generateIndexPages = false, noStdlibLink = true)
+ val options = DocumentationOptions(
+ outputDir = "",
+ outputFormat = "html",
+ generateIndexPages = false,
+ noStdlibLink = true,
+ languageVersion = null,
+ apiVersion = null
+ )
appendDocumentation(module, contentRootFromPath("testdata/format/$path/jvm.kt"), defaultPlatforms = listOf("JVM"), options = options)
appendDocumentation(module, contentRootFromPath("testdata/format/$path/js.kt"), defaultPlatforms = listOf("JS"), options = options)
return module
diff --git a/integration/src/main/kotlin/org/jetbrains/dokka/configuration.kt b/integration/src/main/kotlin/org/jetbrains/dokka/configuration.kt
index fd6a4209..90e5b5fc 100644
--- a/integration/src/main/kotlin/org/jetbrains/dokka/configuration.kt
+++ b/integration/src/main/kotlin/org/jetbrains/dokka/configuration.kt
@@ -36,6 +36,8 @@ interface DokkaConfiguration {
val impliedPlatforms: List<String>
val perPackageOptions: List<PackageOptions>
val externalDocumentationLinks: List<DokkaConfiguration.ExternalDocumentationLink>
+ val languageVersion: String?
+ val apiVersion: String?
val noStdlibLink: Boolean
val cacheRoot: String?
val suppressedFiles: List<String>
@@ -79,27 +81,31 @@ interface DokkaConfiguration {
}
}
-data class SerializeOnlyDokkaConfiguration(override val moduleName: String,
- override val classpath: List<String>,
- override val sourceRoots: List<DokkaConfiguration.SourceRoot>,
- override val samples: List<String>,
- override val includes: List<String>,
- override val outputDir: String,
- override val format: String,
- override val includeNonPublic: Boolean,
- override val includeRootPackage: Boolean,
- override val reportUndocumented: Boolean,
- override val skipEmptyPackages: Boolean,
- override val skipDeprecated: Boolean,
- override val jdkVersion: Int,
- override val generateIndexPages: Boolean,
- override val sourceLinks: List<DokkaConfiguration.SourceLinkDefinition>,
- override val impliedPlatforms: List<String>,
- override val perPackageOptions: List<DokkaConfiguration.PackageOptions>,
- override val externalDocumentationLinks: List<DokkaConfiguration.ExternalDocumentationLink>,
- override val noStdlibLink: Boolean,
- override val cacheRoot: String?,
- override val suppressedFiles: List<String>) : DokkaConfiguration
+data class SerializeOnlyDokkaConfiguration(
+ override val moduleName: String,
+ override val classpath: List<String>,
+ override val sourceRoots: List<DokkaConfiguration.SourceRoot>,
+ override val samples: List<String>,
+ override val includes: List<String>,
+ override val outputDir: String,
+ override val format: String,
+ override val includeNonPublic: Boolean,
+ override val includeRootPackage: Boolean,
+ override val reportUndocumented: Boolean,
+ override val skipEmptyPackages: Boolean,
+ override val skipDeprecated: Boolean,
+ override val jdkVersion: Int,
+ override val generateIndexPages: Boolean,
+ override val sourceLinks: List<DokkaConfiguration.SourceLinkDefinition>,
+ override val impliedPlatforms: List<String>,
+ override val perPackageOptions: List<DokkaConfiguration.PackageOptions>,
+ override val externalDocumentationLinks: List<DokkaConfiguration.ExternalDocumentationLink>,
+ override val noStdlibLink: Boolean,
+ override val cacheRoot: String?,
+ override val suppressedFiles: List<String>,
+ override val languageVersion: String?,
+ override val apiVersion: String?
+) : DokkaConfiguration
data class ExternalDocumentationLinkImpl(@CustomSerializer(UrlSerializer::class) override val url: URL,
diff --git a/runners/ant/src/main/kotlin/ant/dokka.kt b/runners/ant/src/main/kotlin/ant/dokka.kt
index 2872f845..d1b6bef5 100644
--- a/runners/ant/src/main/kotlin/ant/dokka.kt
+++ b/runners/ant/src/main/kotlin/ant/dokka.kt
@@ -45,6 +45,9 @@ class DokkaAntTask: Task() {
var cacheRoot: String? = null
+ var languageVersion: String? = null
+ var apiVersion: String? = null
+
val compileClasspath: Path by lazy { Path(getProject()) }
val sourcePath: Path by lazy { Path(getProject()) }
val samplesPath: Path by lazy { Path(getProject()) }
@@ -118,7 +121,9 @@ class DokkaAntTask: Task() {
samplesPath.list().toList(),
includesPath.list().toList(),
moduleName!!,
- DocumentationOptions(outputDir!!, outputFormat,
+ DocumentationOptions(
+ outputDir!!,
+ outputFormat,
skipDeprecated = skipDeprecated,
sourceLinks = sourceLinks,
jdkVersion = jdkVersion,
@@ -126,7 +131,9 @@ class DokkaAntTask: Task() {
perPackageOptions = antPackageOptions,
externalDocumentationLinks = antExternalDocumentationLinks.map { it.build() },
noStdlibLink = noStdlibLink,
- cacheRoot = cacheRoot
+ cacheRoot = cacheRoot,
+ languageVersion = languageVersion,
+ apiVersion = apiVersion
)
)
generator.generate()
diff --git a/runners/cli/src/main/kotlin/cli/main.kt b/runners/cli/src/main/kotlin/cli/main.kt
index b6eb1564..fe945ed3 100644
--- a/runners/cli/src/main/kotlin/cli/main.kt
+++ b/runners/cli/src/main/kotlin/cli/main.kt
@@ -55,6 +55,13 @@ class DokkaArguments {
@set:Argument(value = "cacheRoot", description = "Path to cache folder, or 'default' to use ~/.cache/dokka, if not provided caching is disabled")
var cacheRoot: String? = null
+
+ @set:Argument(value = "languageVersion", description = "Language Version to pass to Kotlin Analysis")
+ var languageVersion: String? = null
+
+ @set:Argument(value = "apiVersion", description = "Kotlin Api Version to pass to Kotlin Analysis")
+ var apiVersion: String? = null
+
}
@@ -108,7 +115,9 @@ object MainKt {
jdkVersion = arguments.jdkVersion,
externalDocumentationLinks = parseLinks(arguments.links),
noStdlibLink = arguments.noStdlibLink,
- cacheRoot = arguments.cacheRoot
+ cacheRoot = arguments.cacheRoot,
+ languageVersion = arguments.languageVersion,
+ apiVersion = arguments.apiVersion
)
val generator = DokkaGenerator(
diff --git a/runners/gradle-plugin/src/main/kotlin/main.kt b/runners/gradle-plugin/src/main/kotlin/main.kt
index 623a627c..bdecc3f6 100644
--- a/runners/gradle-plugin/src/main/kotlin/main.kt
+++ b/runners/gradle-plugin/src/main/kotlin/main.kt
@@ -112,7 +112,15 @@ open class DokkaTask : DefaultTask() {
@Input var noStdlibLink: Boolean = false
- @Optional @Input var cacheRoot: String? = null
+ @Optional @Input
+ var cacheRoot: String? = null
+
+
+ @Optional @Input
+ var languageVersion: String? = null
+
+ @Optional @Input
+ var apiVersion: String? = null
@get:Input
internal val kotlinCompileBasedClasspathAndSourceRoots: ClasspathAndSourceRoots by lazy { extractClasspathAndSourceRootsFromKotlinTasks() }
@@ -281,7 +289,9 @@ open class DokkaTask : DefaultTask() {
externalDocumentationLinks,
noStdlibLink,
cacheRoot,
- collectSuppressedFiles(sourceRoots))
+ collectSuppressedFiles(sourceRoots),
+ languageVersion,
+ apiVersion)
bootstrapProxy.configure(
diff --git a/runners/maven-plugin/src/main/kotlin/DokkaMojo.kt b/runners/maven-plugin/src/main/kotlin/DokkaMojo.kt
index c0904396..09da90c6 100644
--- a/runners/maven-plugin/src/main/kotlin/DokkaMojo.kt
+++ b/runners/maven-plugin/src/main/kotlin/DokkaMojo.kt
@@ -107,6 +107,12 @@ abstract class AbstractDokkaMojo : AbstractMojo() {
@Parameter
var cacheRoot: String? = null
+ @Parameter
+ var languageVersion: String? = null
+
+ @Parameter
+ var apiVersion: String? = null
+
protected abstract fun getOutDir(): String
protected abstract fun getOutFormat(): String
@@ -133,7 +139,9 @@ abstract class AbstractDokkaMojo : AbstractMojo() {
perPackageOptions = perPackageOptions,
externalDocumentationLinks = externalDocumentationLinks.map { it.build() },
noStdlibLink = noStdlibLink,
- cacheRoot = cacheRoot
+ cacheRoot = cacheRoot,
+ languageVersion = languageVersion,
+ apiVersion = apiVersion
)
)