From 6c99034367a2e4b7709019a055b8b8bc42132f71 Mon Sep 17 00:00:00 2001 From: Alex Hoppen Date: Mon, 17 Jul 2023 12:05:54 -0700 Subject: [PATCH] =?UTF-8?q?Don=E2=80=99t=20offer=20text=20edits=20from=20i?= =?UTF-8?q?nlay=20hints=20if=20they=20are=20syntactically=20invalid?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Don’t offer any text edits for inlay hints displayed in closure paramters or enum case items. Fixes #759 rdar://111559715 --- .../Swift/SwiftLanguageServer.swift | 10 ++++-- .../SourceKitLSP/Swift/VariableTypeInfo.swift | 34 +++++++++++++++++++ Tests/SourceKitLSPTests/InlayHintTests.swift | 17 ++++++---- 3 files changed, 52 insertions(+), 9 deletions(-) diff --git a/Sources/SourceKitLSP/Swift/SwiftLanguageServer.swift b/Sources/SourceKitLSP/Swift/SwiftLanguageServer.swift index f416f692e..9c174ffc3 100644 --- a/Sources/SourceKitLSP/Swift/SwiftLanguageServer.swift +++ b/Sources/SourceKitLSP/Swift/SwiftLanguageServer.swift @@ -1320,13 +1320,17 @@ extension SwiftLanguageServer { .map { info -> InlayHint in let position = info.range.upperBound let label = ": \(info.printedType)" + let textEdits: [TextEdit]? + if info.canBeFollowedByTypeAnnotation { + textEdits = [TextEdit(range: position.. InlayHint { - InlayHint( + private func makeInlayHint(position: Position, kind: InlayHintKind, label: String, hasEdit: Bool = true) -> InlayHint { + let textEdits: [TextEdit]? + if hasEdit { + textEdits = [TextEdit(range: position..