Implement Kotlin Script support in UAST

#KT-18353 Fixed
This commit is contained in:
Vyacheslav Gerasimov
2017-09-04 15:31:31 +03:00
parent 89257e6397
commit b6c32edc43
11 changed files with 240 additions and 53 deletions
@@ -19,6 +19,8 @@ import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.addKotlinSourceRoot
import org.jetbrains.kotlin.resolve.jvm.extensions.AnalysisHandlerExtension
import org.jetbrains.kotlin.script.KotlinScriptDefinitionProvider
import org.jetbrains.kotlin.script.StandardScriptDefinition
import org.jetbrains.kotlin.test.ConfigurationKind
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.TestJdkKind
@@ -43,13 +45,14 @@ abstract class AbstractKotlinUastTest : AbstractUastTest() {
private var kotlinCoreEnvironment: KotlinCoreEnvironment? = null
override fun getVirtualFile(testName: String): VirtualFile {
val projectDir = TEST_KOTLIN_MODEL_DIR
val testFile = File(TEST_KOTLIN_MODEL_DIR, testName.substringBefore('/') + ".kt")
val testFile = TEST_KOTLIN_MODEL_DIR.listFiles { pathname -> pathname.nameWithoutExtension == testName }.first()
super.initializeEnvironment(testFile)
initializeKotlinEnvironment()
KotlinScriptDefinitionProvider.getInstance(project)?.addScriptDefinition(StandardScriptDefinition)
val trace = CliLightClassGenerationSupport.NoScopeRecordCliBindingTrace()
val environment = kotlinCoreEnvironment!!
@@ -60,7 +63,7 @@ abstract class AbstractKotlinUastTest : AbstractUastTest() {
val vfs = VirtualFileManager.getInstance().getFileSystem(URLUtil.FILE_PROTOCOL)
val ideaProject = project
ideaProject.baseDir = vfs.findFileByPath(projectDir.canonicalPath)
ideaProject.baseDir = vfs.findFileByPath(TEST_KOTLIN_MODEL_DIR.canonicalPath)
return vfs.findFileByPath(testFile.canonicalPath)!!
}
@@ -30,4 +30,8 @@ class SimpleKotlinRenderLogTest : AbstractKotlinRenderLogTest() {
@Test fun testPropertyDelegate() = doTest("PropertyDelegate")
@Test fun testPropertyWithAnnotation() = doTest("PropertyWithAnnotation")
@Test fun testInnerClasses() = doTest("InnerClasses")
@Test fun testSimpleScript() = doTest("SimpleScript")
}