org.jetbrains.kotlin.cli.common.arguments.K2MetadataCompilerArguments.kt Maven / Gradle / Ivy
/*
* Copyright 2010-2016 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jetbrains.kotlin.cli.common.arguments
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
import org.jetbrains.kotlin.config.AnalysisFlag
import org.jetbrains.kotlin.config.AnalysisFlags
import org.jetbrains.kotlin.config.LanguageFeature
import org.jetbrains.kotlin.config.LanguageVersion
class K2MetadataCompilerArguments : CommonCompilerArguments() {
companion object {
@JvmStatic private val serialVersionUID = 0L
}
@Argument(value = "-d", valueDescription = "", description = "Destination for generated .kotlin_metadata files")
var destination: String? = null
set(value) {
checkFrozen()
field = if (value.isNullOrEmpty()) null else value
}
@Argument(
value = "-classpath",
shortName = "-cp",
valueDescription = "",
description = "Paths where to find library .kotlin_metadata files"
)
var classpath: String? = null
set(value) {
checkFrozen()
field = if (value.isNullOrEmpty()) null else value
}
@Argument(value = "-module-name", valueDescription = "", description = "Name of the generated .kotlin_module file")
var moduleName: String? = null
set(value) {
checkFrozen()
field = if (value.isNullOrEmpty()) null else value
}
@Argument(
value = "-Xjps",
description = "Enable in JPS"
)
var enabledInJps = false
set(value) {
checkFrozen()
field = value
}
@Argument(
value = "-Xfriend-paths",
valueDescription = "",
description = "Paths to output directories for friend modules (whose internals should be visible)"
)
var friendPaths: Array? = null
set(value) {
checkFrozen()
field = value
}
@Argument(
value = "-Xrefines-paths",
valueDescription = "",
description = "Paths to output directories for refined modules (whose expects this module can actualize)"
)
var refinesPaths: Array? = null
set(value) {
checkFrozen()
field = value
}
override fun copyOf(): Freezable = copyK2MetadataCompilerArguments(this, K2MetadataCompilerArguments())
override fun configureAnalysisFlags(collector: MessageCollector, languageVersion: LanguageVersion): MutableMap, Any> =
super.configureAnalysisFlags(collector, languageVersion).also {
it[AnalysisFlags.metadataCompilation] = true
}
override fun configureExtraLanguageFeatures(map: HashMap) {
map[LanguageFeature.MultiPlatformProjects] = LanguageFeature.State.ENABLED
}
}