/
KotlinCoreEnvironmentWrapper.kt
33 lines (27 loc) · 1.1 KB
/
KotlinCoreEnvironmentWrapper.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
package io.github.detekt.test.utils
import java.io.File
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.com.intellij.openapi.Disposable
import org.jetbrains.kotlin.com.intellij.openapi.util.Disposer
import org.jetbrains.kotlin.psi.KtPsiFactory
/**
* Make sure to always call [dispose] or use a [use] block when working with [KotlinCoreEnvironment]s.
*/
class KotlinCoreEnvironmentWrapper(
private var environment: KotlinCoreEnvironment?,
private val disposable: Disposable
) {
val env: KotlinCoreEnvironment
get() = checkNotNull(environment) { "Environment already disposed." }
fun dispose() {
Disposer.dispose(disposable)
environment = null
}
}
/**
* Create a {@link KotlinCoreEnvironmentWrapper} used for test.
*
* @param additionalRootPaths the optional JVM classpath roots list.
*/
fun createEnvironment(additionalRootPaths: List<File> = listOf()): KotlinCoreEnvironmentWrapper = KtTestCompiler.createEnvironment(additionalRootPaths)
fun createPsiFactory(): KtPsiFactory = KtPsiFactory(KtTestCompiler.project(), false)