Skip to content

Commit 4df20d4

Browse files
committed
WIP: Update ScriptDefinitionProvider
Updates the script (and script dependencies) provider to the most recent API. The issue that no declarators can be found for SCRIPT declarations persists however (this can be verified using the EditFunctionTest).
1 parent 844699d commit 4df20d4

File tree

6 files changed

+22
-12
lines changed

6 files changed

+22
-12
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
teamCityUrl=https://teamcity.jetbrains.com
22
teamCityUsername=guest
33
teamCityPassword=guest
4-
kotlinVersion=1.3.30
4+
kotlinVersion=1.3.31
55
kotlinBuildType=Kotlin_1330_CompilerAllPlugins
66
kotlinBuild=1.3.31-release-198
77
kotlinPluginBuild=1.3.31-release-IJ2019.1-1

server/build.gradle

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ configurations {
3131
}
3232

3333
dependencies {
34-
def kotlinTeamCity = "$kotlinBuildType:$kotlinBuild:kotlin-plugin-${kotlinPluginBuild}.zip!/Kotlin"
34+
def kotlinCompilerTC = "$kotlinBuildType:$kotlinBuild:kotlin-compiler-${kotlinVersion}.zip!/kotlinc"
35+
def kotlinPluginTC = "$kotlinBuildType:$kotlinBuild:kotlin-plugin-${kotlinPluginBuild}.zip!/Kotlin"
3536

3637
implementation project(':shared')
3738
implementation 'com.google.guava:guava:21.0'
@@ -43,8 +44,11 @@ dependencies {
4344

4445
implementation fileTree(dir: "$projectDir/lib-kotlin", include: ["*.jar"])
4546

46-
kotlinJVMLib tc("$kotlinTeamCity/lib/kotlin-plugin.jar")
47-
kotlinJVMLib tc("$kotlinTeamCity/lib/j2k.jar")
47+
kotlinJVMLib tc("$kotlinCompilerTC/lib/kotlin-scripting-impl.jar")
48+
// TODO: The dependency above will be renamed in Kotlin 1.3.50:
49+
// kotlinJVMLib tc("$kotlinCompilerTC/lib/kotlin-scripting-compiler-impl.jar")
50+
kotlinJVMLib tc("$kotlinPluginTC/lib/kotlin-plugin.jar")
51+
kotlinJVMLib tc("$kotlinPluginTC/lib/j2k.jar")
4852
}
4953

5054
applicationDistribution.into('bin') {

server/src/main/kotlin/org/javacs/kt/Compiler.kt

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import com.intellij.openapi.vfs.VirtualFileManager
77
import com.intellij.psi.PsiFileFactory
88
import com.intellij.mock.MockProject
99
import org.jetbrains.kotlin.scripting.legacy.CliScriptDefinitionProvider
10+
import org.jetbrains.kotlin.scripting.legacy.CliScriptDependenciesProvider
1011
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
1112
import org.jetbrains.kotlin.cli.jvm.compiler.CliBindingTrace
1213
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
@@ -30,6 +31,8 @@ import org.jetbrains.kotlin.resolve.lazy.declarations.FileBasedDeclarationProvid
3031
import org.jetbrains.kotlin.resolve.scopes.LexicalScope
3132
import org.jetbrains.kotlin.script.KotlinScriptDefinition
3233
import org.jetbrains.kotlin.script.ScriptDefinitionProvider
34+
import org.jetbrains.kotlin.script.ScriptDependenciesProvider
35+
import org.jetbrains.kotlin.script.StandardScriptDefinition
3336
import org.jetbrains.kotlin.types.TypeUtils
3437
import org.jetbrains.kotlin.types.expressions.ExpressionTypingServices
3538
import org.jetbrains.kotlin.util.KotlinFrontEndException
@@ -45,10 +48,11 @@ import org.javacs.kt.util.LoggingMessageCollector
4548
* Incrementally compiles files and expressions.
4649
* The basic strategy for compiling one file at-a-time is outlined in OneFilePerformance.
4750
*/
48-
class Compiler(classPath: Set<Path>) {
51+
class Compiler(classPath: Set<Path>, workspaceRoots: Set<Path>) {
4952
private val config = CompilerConfiguration().apply {
5053
put(CommonConfigurationKeys.MODULE_NAME, JvmAbi.DEFAULT_MODULE_NAME)
5154
put(CLIConfigurationKeys.MESSAGE_COLLECTOR_KEY, LoggingMessageCollector)
55+
put(JVMConfigurationKeys.SCRIPT_DEFINITIONS, listOf(StandardScriptDefinition))
5256
addJvmClasspathRoots(classPath.map { it.toFile() })
5357
}
5458
val environment: KotlinCoreEnvironment
@@ -62,6 +66,8 @@ class Compiler(classPath: Set<Path>) {
6266
)
6367
val project = environment.project
6468
if (project is MockProject) {
69+
project.registerService(ScriptDefinitionProvider::class.java, CliScriptDefinitionProvider())
70+
project.registerService(ScriptDependenciesProvider::class.java, CliScriptDependenciesProvider(project))
6571
project.registerService(NullableNotNullManager::class.java, KotlinNullableNotNullManager(project))
6672
}
6773
}
@@ -71,7 +77,7 @@ class Compiler(classPath: Set<Path>) {
7177
private val scripts = ScriptDefinitionProvider.getInstance(environment.project) as? CliScriptDefinitionProvider
7278

7379
init {
74-
scripts?.setScriptDefinitions(listOf(KotlinScriptDefinition(Any::class)))
80+
scripts?.setScriptDefinitions(listOf(StandardScriptDefinition))
7581
}
7682

7783
fun createFile(content: String, file: Path = Paths.get("dummy.kt")): KtFile {

server/src/main/kotlin/org/javacs/kt/CompilerClassPath.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import java.nio.file.Path
66
class CompilerClassPath {
77
private val workspaceRoots = mutableSetOf<Path>()
88
private val classPath = mutableSetOf<Path>()
9-
var compiler = Compiler(classPath)
9+
var compiler = Compiler(classPath, workspaceRoots)
1010
private set
1111

1212
private fun refresh() {
@@ -21,7 +21,7 @@ class CompilerClassPath {
2121

2222
classPath.removeAll(removed)
2323
classPath.addAll(added)
24-
compiler = Compiler(classPath)
24+
compiler = Compiler(classPath, workspaceRoots)
2525
}
2626
}
2727

server/src/test/kotlin/org/javacs/kt/CompiledFileTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class CompiledFileTest {
99
val compiledFile = compileFile()
1010

1111
fun compileFile(): CompiledFile {
12-
val compiler = Compiler(setOf())
12+
val compiler = Compiler(setOf(), setOf())
1313
val file = testResourcesRoot().resolve("compiledFile/CompiledFileExample.kt")
1414
val content = Files.readAllLines(file).joinToString("\n")
1515
val parse = compiler.createFile(content, file)
@@ -24,4 +24,4 @@ class CompiledFileTest {
2424

2525
assertThat(type.toString(), equalTo("Int"))
2626
}
27-
}
27+
}

server/src/test/kotlin/org/javacs/kt/CompilerTest.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import org.junit.Test
1111
import java.nio.file.Files
1212

1313
class CompilerTest {
14-
val compiler = Compiler(setOf())
14+
val compiler = Compiler(setOf(), setOf())
1515
val myTestResources = testResourcesRoot().resolve("compiler")
1616
val file = myTestResources.resolve("FileToEdit.kt")
1717
val editedText = """
@@ -69,4 +69,4 @@ private class FileToEdit {
6969

7070
assertThat(target.name, hasToString("intFunction"))
7171
}
72-
}
72+
}

0 commit comments

Comments
 (0)