Skip to content

Commit 31997f6

Browse files
committed
Use .kts for in-memory script source files
1 parent 566fd6f commit 31997f6

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.psi.psiUtil.parentsWithSelf
1515
import org.jetbrains.kotlin.resolve.BindingContext
1616
import org.jetbrains.kotlin.resolve.scopes.LexicalScope
1717
import org.jetbrains.kotlin.types.KotlinType
18-
import java.nio.file.Path
18+
import java.nio.file.Paths
1919

2020
class CompiledFile(
2121
val content: String,
@@ -24,6 +24,7 @@ class CompiledFile(
2424
val container: ComponentProvider,
2525
val sourcePath: Collection<KtFile>,
2626
val classPath: CompilerClassPath,
27+
val isScript: Boolean = false,
2728
val kind: CompilationKind = CompilationKind.DEFAULT
2829
) {
2930
/**
@@ -122,7 +123,7 @@ class CompiledFile(
122123
}
123124

124125
val padOffset = " ".repeat(offset)
125-
val recompile = classPath.compiler.createFile(padOffset + surroundingContent)
126+
val recompile = classPath.compiler.createFile(padOffset + surroundingContent, Paths.get(if (isScript) "dummy.virtual.kts" else "dummy.virtual.kt"))
126127
return recompile.findElementAt(cursor)?.findParent<KtElement>()
127128
}
128129

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ class SourcePath(
2626
var compiledContainer: ComponentProvider? = null,
2727
val isTemporary: Boolean = false // A temporary source file will not be returned by .all()
2828
) {
29+
val isScript: Boolean = uri.toString().endsWith(".kts")
2930
val kind: CompilationKind =
3031
if (path?.fileName?.toString()?.endsWith(".gradle.kts") ?: false) CompilationKind.BUILD_SCRIPT
3132
else CompilationKind.DEFAULT
@@ -71,7 +72,7 @@ class SourcePath(
7172
parseIfChanged().compileIfNull().doPrepareCompiledFile()
7273

7374
private fun doPrepareCompiledFile(): CompiledFile =
74-
CompiledFile(content, compiledFile!!, compiledContext!!, compiledContainer!!, allIncludingThis(), cp, kind)
75+
CompiledFile(content, compiledFile!!, compiledContext!!, compiledContainer!!, allIncludingThis(), cp, isScript, kind)
7576

7677
private fun allIncludingThis(): Collection<KtFile> = parseIfChanged().let {
7778
if (isTemporary) (all().asSequence() + sequenceOf(parsed!!)).toList()

0 commit comments

Comments
 (0)