diff options
author | Ilya Ryzhenkov <orangy@jetbrains.com> | 2014-07-11 17:11:35 +0400 |
---|---|---|
committer | Ilya Ryzhenkov <orangy@jetbrains.com> | 2014-07-11 17:11:35 +0400 |
commit | 044e1b86602662c78bb2ed12b9d645ab10b23429 (patch) | |
tree | 91ca7ece2011b71fa10d0b184ccfa234fbe3130d /src/AnalysesEnvironment.kt | |
parent | 9fec3e15c94969f98596ac04130af6e2d9368a89 (diff) | |
download | dokka-044e1b86602662c78bb2ed12b9d645ab10b23429.tar.gz dokka-044e1b86602662c78bb2ed12b9d645ab10b23429.tar.bz2 dokka-044e1b86602662c78bb2ed12b9d645ab10b23429.zip |
Setup test framework and empty DocumentationModel to kickstart test development.
Diffstat (limited to 'src/AnalysesEnvironment.kt')
-rw-r--r-- | src/AnalysesEnvironment.kt | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/src/AnalysesEnvironment.kt b/src/AnalysesEnvironment.kt new file mode 100644 index 00000000..3eae33ca --- /dev/null +++ b/src/AnalysesEnvironment.kt @@ -0,0 +1,71 @@ +package com.jetbrains.dokka + +import com.intellij.openapi.* +import org.jetbrains.jet.cli.common.messages.* +import org.jetbrains.jet.cli.common.* +import org.jetbrains.jet.cli.jvm.compiler.* +import java.io.* +import org.jetbrains.jet.cli.jvm.* +import org.jetbrains.jet.config.* +import com.intellij.openapi.util.* +import org.jetbrains.jet.lang.resolve.* +import org.jetbrains.jet.lang.psi.* +import kotlin.platform.* + +public class AnalysesEnvironment(val messageCollector: MessageCollector, body: AnalysesEnvironment.() -> Unit = {}) : Disposable { + val configuration = CompilerConfiguration(); + + { + configuration.put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, messageCollector) + body() + } + + private fun withContext<T>(processor: (JetCoreEnvironment, BindingContext) -> T): T { + val environment = JetCoreEnvironment.createForProduction(this, configuration) + val result = environment.analyze(messageCollector) + return processor(environment, result) + } + + public fun withContext<T>(processor: (BindingContext) -> T): T { + return withContext { environment, context -> processor(context) } + } + + public fun streamFiles<T>(processor: (BindingContext, JetFile) -> T): Stream<T> { + return withContext { environment, context -> + environment.getSourceFiles().stream().map { file -> processor(context, file) } + } + } + + public fun processFiles<T>(processor: (BindingContext, JetFile) -> T): List<T> { + return withContext { environment, context -> + environment.getSourceFiles().map { file -> processor(context, file) } + } + } + + public fun processFilesFlat<T>(processor: (BindingContext, JetFile) -> List<T>): List<T> { + return withContext { environment, context -> + environment.getSourceFiles().flatMap { file -> processor(context, file) } + } + } + + public val classpath: List<File> + get() = configuration.get(JVMConfigurationKeys.CLASSPATH_KEY) ?: listOf() + + public fun addClasspath(list: List<File>) { + configuration.addAll(JVMConfigurationKeys.CLASSPATH_KEY, list) + } + + public fun addClasspath(file: File) { + configuration.add(JVMConfigurationKeys.CLASSPATH_KEY, file) + } + + public val sources: List<String> + get() = configuration.get(CommonConfigurationKeys.SOURCE_ROOTS_KEY) ?: listOf() + public fun addSources(list: List<String>) { + configuration.addAll(CommonConfigurationKeys.SOURCE_ROOTS_KEY, list) + } + + public override fun dispose() { + Disposer.dispose(this) + } +}
\ No newline at end of file |