{"record":{"id":"68384ddadd02af2b","repo":"denoland/deno","slug":"unable-to-convert-signature-help-items","errorCode":null,"errorMessage":"Unable to convert signature help items: {:#}","messagePattern":"Unable to convert signature help items: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"cli/lsp/ts_server.rs","lineNumber":1125,"sourceCode":"            trigger_reason: None,\n          }\n        };\n        let signature_help = ts_server\n          .get_signature_help_items(\n            snapshot.clone(),\n            module,\n            module.line_index.offset_tsc(position)?,\n            options,\n            token,\n          )\n          .await?;\n        signature_help\n          .map(|signature_help| {\n            signature_help.into_signature_help(module, &snapshot, token)\n          })\n          .transpose()\n          .map_err(|err| {\n            anyhow!(\"Unable to convert signature help items: {:#}\", err)\n          })\n      }\n    }\n  }\n\n  pub async fn provide_will_rename_files(\n    &self,\n    file_renames: &[lsp::FileRename],\n    language_server: &language_server::Inner,\n    snapshot: Arc<StateSnapshot>,\n    token: &CancellationToken,\n  ) -> Result<Option<lsp::WorkspaceEdit>, AnyError> {\n    match self {\n      Self::Js(ts_server) => {\n        let mut changes_with_modules = IndexMap::new();\n        for rename in file_renames {\n          let Some(document) = snapshot\n            .document_modules","sourceCodeStart":1107,"sourceCodeEnd":1143,"githubUrl":"https://github.com/denoland/deno/blob/9ad36f7a2cce60488e6ec52283efb32efddaf93a/cli/lsp/ts_server.rs#L1107-L1143","documentation":"Signature help (parameter hints inside call parentheses) converts tsc's SignatureHelpItems through into_signature_help; this wraps a conversion failure. It is typically a span/range mapping failure for the active parameter or the call span against the module's current line index — commonly triggered when the document changes while typing a call.","triggerScenarios":"A textDocument/signatureHelp request while typing a call where converting the returned items fails — stale document positions from rapid keystrokes, or an unexpected item shape from the embedded tsc version.","commonSituations":"Fast typing inside function calls with parameter hints enabled; intermittent failures that vanish on the next keystroke's request.","solutions":["Keep typing or re-trigger hint display — the next request usually succeeds after positions resync.","Save the file if parameter hints stay broken for a call site.","Run \"Deno: Restart Language Server\" and update Deno if it persists."],"exampleFix":null,"handlingStrategy":"fallback","validationCode":null,"typeGuard":null,"tryCatchPattern":"// Signature help is optional UI: on conversion failure show nothing\n// rather than erroring the request.\nasync function signatureHelpSafe(client, params) {\n  try {\n    return await client.sendRequest('textDocument/signatureHelp', params);\n  } catch (err) {\n    if (String(err?.message).includes('signature help items')) {\n      return null; // hints re-appear on the next keystroke's request\n    }\n    throw err;\n  }\n}","preventionTips":["Expect occasional missed parameter hints during fast typing; the next request recovers","Save if hints stay broken for one call site","Restart the language server and update Deno if signature help fails persistently"],"tags":["lsp","signature-help","tsc","parameters"],"backgroundTag":"lsp-tsc-conversion-failed","analyzedSha":"9ad36f7a2cce60488e6ec52283efb32efddaf93a","analyzedAt":"2026-08-20T13:07:44.778Z","contentChangedAt":"2026-08-20T13:07:44.778Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}