Skip to content

Commit 9170af3

Browse files
darthorimarintellij-monorepo-bot
authored andcommitted
[lsp] enable analysis inside dependency sources
now resolve only works to kotlin builtin declarations, a proper implementation will be implemented as a part of LSP-81 The current one is needed so the resolution of location targets in inlay hint (LSP-205) links works as it works by usual hover & definition requests LSP-81 LSP-205 GitOrigin-RevId: c57eb3ba2e56dd4569a81214d1d866b0956e19af
1 parent e38b314 commit 9170af3

File tree

7 files changed

+25
-3
lines changed

7 files changed

+25
-3
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
// Copyright 2000-2025 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
2+
package com.jetbrains.ls.api.features.utils
3+
4+
import com.jetbrains.lsp.protocol.TextDocumentIdentifier
5+
import com.jetbrains.lsp.protocol.URI
6+
7+
fun TextDocumentIdentifier.isSource(): Boolean {
8+
return uri.uri.isSource()
9+
}
10+
11+
fun URI.isSource(): Boolean {
12+
return scheme == URI.Schemas.FILE
13+
}

features-impl/common/src/com/jetbrains/ls/api/features/impl/common/completion/LSAbstractCompletionProvider.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ import com.jetbrains.ls.api.core.project
1515
import com.jetbrains.ls.api.core.util.findVirtualFile
1616
import com.jetbrains.ls.api.core.util.offsetByPosition
1717
import com.jetbrains.ls.api.core.withAnalysisContext
18-
import com.jetbrains.ls.api.core.withWriteAnalysisContext
1918
import com.jetbrains.ls.api.features.completion.CompletionItemData
2019
import com.jetbrains.ls.api.features.completion.LSCompletionItemKindProvider
2120
import com.jetbrains.ls.api.features.completion.LSCompletionProvider
21+
import com.jetbrains.ls.api.features.utils.isSource
2222
import com.jetbrains.lsp.protocol.*
2323
import kotlinx.serialization.json.JsonElement
2424
import kotlinx.serialization.json.encodeToJsonElement
@@ -28,6 +28,7 @@ abstract class LSAbstractCompletionProvider : LSCompletionProvider {
2828

2929
context(_: LSServer)
3030
override suspend fun provideCompletion(params: CompletionParams): CompletionList {
31+
if (!params.textDocument.isSource()) return CompletionList.EMPTY_COMPLETE
3132
return withAnalysisContext {
3233
invokeAndWaitIfNeeded {
3334
runWriteAction {

features-impl/common/src/com/jetbrains/ls/api/features/impl/common/diagnostics/LSSyntaxErrorDiagnosticProviderImpl.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import com.jetbrains.ls.api.core.util.toLspRange
1515
import com.jetbrains.ls.api.core.withAnalysisContext
1616
import com.jetbrains.ls.api.features.diagnostics.LSDiagnosticProvider
1717
import com.jetbrains.ls.api.features.language.LSLanguage
18+
import com.jetbrains.ls.api.features.utils.isSource
1819
import com.jetbrains.lsp.protocol.Diagnostic
1920
import com.jetbrains.lsp.protocol.DiagnosticSeverity
2021
import com.jetbrains.lsp.protocol.DocumentDiagnosticParams
@@ -27,6 +28,7 @@ class LSSyntaxErrorDiagnosticProviderImpl(
2728
) : LSDiagnosticProvider {
2829
context(_: LSServer)
2930
override fun getDiagnostics(params: DocumentDiagnosticParams): Flow<Diagnostic> = flow {
31+
if (!params.textDocument.isSource()) return@flow
3032
withAnalysisContext {
3133
runReadAction a@ {
3234
val file = params.textDocument.findVirtualFile() ?: return@a emptyList()

features-impl/common/src/com/jetbrains/ls/api/features/impl/common/diagnostics/inspections/LSInspectionDiagnosticProviderImpl.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import com.jetbrains.ls.api.core.util.findVirtualFile
2222
import com.jetbrains.ls.api.core.util.toLspRange
2323
import com.jetbrains.ls.api.features.diagnostics.LSDiagnosticProvider
2424
import com.jetbrains.ls.api.features.language.LSLanguage
25+
import com.jetbrains.ls.api.features.utils.isSource
2526
import com.jetbrains.lsp.protocol.*
2627
import kotlinx.coroutines.flow.Flow
2728
import kotlinx.coroutines.flow.flow
@@ -33,6 +34,7 @@ class LSInspectionDiagnosticProviderImpl(
3334
): LSDiagnosticProvider {
3435
context(_: LSServer)
3536
override fun getDiagnostics(params: DocumentDiagnosticParams): Flow<Diagnostic> = flow {
37+
if (!params.textDocument.isSource()) return@flow
3638
val onTheFly = false
3739
withAnalysisContext {
3840
runReadAction c@{

features-impl/kotlin/src/com/jetbrains/ls/api/features/impl/common/kotlin/completion/rekot/LSRekotBasedKotlinCompletionProviderImpl.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import com.jetbrains.ls.api.core.withAnalysisContext
1616
import com.jetbrains.ls.api.features.completion.LSCompletionProvider
1717
import com.jetbrains.ls.api.features.impl.common.kotlin.language.LSKotlinLanguage
1818
import com.jetbrains.ls.api.features.language.LSLanguage
19+
import com.jetbrains.ls.api.features.utils.isSource
1920
import com.jetbrains.lsp.protocol.*
2021
import kotlinx.serialization.json.JsonObject
2122
import kotlinx.serialization.json.JsonPrimitive
@@ -40,6 +41,7 @@ internal object LSRekotBasedKotlinCompletionProviderImpl : LSCompletionProvider
4041

4142
context(_: LSServer)
4243
override suspend fun provideCompletion(params: CompletionParams): CompletionList {
44+
if (!params.textDocument.isSource()) return CompletionList.EMPTY_COMPLETE
4345
return withAnalysisContext {
4446
runReadAction {
4547
val file = params.textDocument.findVirtualFile() ?: return@runReadAction EMPTY_COMPLETION_LIST

features-impl/kotlin/src/com/jetbrains/ls/api/features/impl/common/kotlin/diagnostics/compiler/LSKotlinCompilerDiagnosticsProvider.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import com.jetbrains.ls.api.core.withAnalysisContext
1515
import com.jetbrains.ls.api.features.diagnostics.LSDiagnosticProvider
1616
import com.jetbrains.ls.api.features.impl.common.kotlin.language.LSKotlinLanguage
1717
import com.jetbrains.ls.api.features.language.LSLanguage
18+
import com.jetbrains.ls.api.features.utils.isSource
1819
import com.jetbrains.lsp.protocol.Diagnostic
1920
import com.jetbrains.lsp.protocol.DocumentDiagnosticParams
2021
import com.jetbrains.lsp.protocol.LSP
@@ -33,6 +34,7 @@ internal object LSKotlinCompilerDiagnosticsProvider : LSDiagnosticProvider {
3334

3435
context(_: LSServer)
3536
override fun getDiagnostics(params: DocumentDiagnosticParams): Flow<Diagnostic> = flow {
37+
if (!params.textDocument.isSource()) return@flow
3638
val uri = params.textDocument.uri.uri
3739
withAnalysisContext {
3840
runReadAction {

kotlin-vscode/src/lspClient.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -164,8 +164,8 @@ async function createServerOptions(): Promise<ServerOptions | null> {
164164
async function createLspClient(): Promise<LanguageClient | null> {
165165
const clientOptions: LanguageClientOptions = {
166166
documentSelector: [
167-
{scheme: 'file', language: 'kotlin'},
168-
{scheme: 'file', language: 'java'},
167+
{scheme: 'file', language: 'kotlin'}, {scheme: 'jar', language: 'kotlin'},
168+
{scheme: 'file', language: 'java' }, {scheme: 'jar', language: 'java' }, {scheme: 'jrt', language: 'java'},
169169
],
170170
progressOnInitialization: true,
171171
};

0 commit comments

Comments
 (0)