umple-lsp-server 0.4.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +35 -0
  3. package/completions.scm +9 -3
  4. package/definitions.scm +5 -0
  5. package/highlights.scm +487 -0
  6. package/out/codeActions.d.ts +31 -0
  7. package/out/codeActions.js +361 -0
  8. package/out/codeActions.js.map +1 -0
  9. package/out/completionAnalysis.d.ts +9 -1
  10. package/out/completionAnalysis.js +1211 -64
  11. package/out/completionAnalysis.js.map +1 -1
  12. package/out/completionBuilder.d.ts +1 -1
  13. package/out/completionBuilder.js +463 -319
  14. package/out/completionBuilder.js.map +1 -1
  15. package/out/completionTriggers.d.ts +20 -0
  16. package/out/completionTriggers.js +69 -0
  17. package/out/completionTriggers.js.map +1 -0
  18. package/out/diagnosticSources.d.ts +3 -0
  19. package/out/diagnosticSources.js +11 -0
  20. package/out/diagnosticSources.js.map +1 -0
  21. package/out/diagramNavigation.js +3 -3
  22. package/out/diagramNavigation.js.map +1 -1
  23. package/out/documentSymbolBuilder.js +2 -37
  24. package/out/documentSymbolBuilder.js.map +1 -1
  25. package/out/formatter.d.ts +13 -1
  26. package/out/formatter.js +303 -10
  27. package/out/formatter.js.map +1 -1
  28. package/out/hoverBuilder.js +90 -23
  29. package/out/hoverBuilder.js.map +1 -1
  30. package/out/inlayHints.d.ts +21 -0
  31. package/out/inlayHints.js +98 -0
  32. package/out/inlayHints.js.map +1 -0
  33. package/out/referenceSearch.d.ts +1 -1
  34. package/out/referenceSearch.js +134 -7
  35. package/out/referenceSearch.js.map +1 -1
  36. package/out/resolver.js +82 -3
  37. package/out/resolver.js.map +1 -1
  38. package/out/semanticTokens.d.ts +32 -0
  39. package/out/semanticTokens.js +228 -0
  40. package/out/semanticTokens.js.map +1 -0
  41. package/out/server.js +216 -36
  42. package/out/server.js.map +1 -1
  43. package/out/snippets.d.ts +39 -0
  44. package/out/snippets.js +328 -0
  45. package/out/snippets.js.map +1 -0
  46. package/out/symbolIndex.d.ts +50 -0
  47. package/out/symbolIndex.js +170 -7
  48. package/out/symbolIndex.js.map +1 -1
  49. package/out/symbolPresentation.d.ts +3 -0
  50. package/out/symbolPresentation.js +45 -0
  51. package/out/symbolPresentation.js.map +1 -0
  52. package/out/symbolTypes.d.ts +1 -0
  53. package/out/tokenAnalysis.js +77 -4
  54. package/out/tokenAnalysis.js.map +1 -1
  55. package/out/tokenTypes.d.ts +8 -1
  56. package/out/tokenTypes.js +2 -0
  57. package/out/tokenTypes.js.map +1 -1
  58. package/out/treeUtils.js +17 -4
  59. package/out/treeUtils.js.map +1 -1
  60. package/out/workspaceSymbolBuilder.d.ts +3 -0
  61. package/out/workspaceSymbolBuilder.js +117 -0
  62. package/out/workspaceSymbolBuilder.js.map +1 -0
  63. package/package.json +5 -2
  64. package/references.scm +31 -3
  65. package/tree-sitter-umple.wasm +0 -0
  66. package/out/bin.d.ts +0 -2
  67. package/out/bin.js +0 -5
  68. package/out/bin.js.map +0 -1
  69. package/out/log.d.ts +0 -7
  70. package/out/log.js +0 -22
  71. package/out/log.js.map +0 -1
  72. package/out/tsconfig.tsbuildinfo +0 -1
package/out/formatter.js CHANGED
@@ -10,7 +10,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
10
10
  exports.expandCompactStates = expandCompactStates;
11
11
  exports.computeIndentEdits = computeIndentEdits;
12
12
  exports.fixTransitionSpacing = fixTransitionSpacing;
13
+ exports.fixStructuralCommaSpacing = fixStructuralCommaSpacing;
13
14
  exports.fixAssociationSpacing = fixAssociationSpacing;
15
+ exports.fixDeclarationAssignmentSpacing = fixDeclarationAssignmentSpacing;
14
16
  exports.normalizeTopLevelBlankLines = normalizeTopLevelBlankLines;
15
17
  exports.reindentEmbeddedCode = reindentEmbeddedCode;
16
18
  exports.getCodeContentRanges = getCodeContentRanges;
@@ -21,7 +23,7 @@ const TreeSitter = require("web-tree-sitter");
21
23
  // ── Phase 0: Compact block expansion ────────────────────────────────────────
22
24
  /** Allowed child types inside a state body for expansion eligibility. */
23
25
  const EXPANSION_ALLOWED_CHILDREN = new Set([
24
- "transition", "standalone_transition",
26
+ "transition", "standalone_transition", "state_to_state_transition",
25
27
  "{", "}", ";", "identifier",
26
28
  ]);
27
29
  /** Node types that disqualify a state from expansion if found as descendants. */
@@ -55,7 +57,7 @@ function isEligibleForExpansion(stateNode) {
55
57
  const child = stateNode.child(i);
56
58
  const type = child.type;
57
59
  if (EXPANSION_ALLOWED_CHILDREN.has(type)) {
58
- if (type === "transition" || type === "standalone_transition") {
60
+ if (type === "transition" || type === "standalone_transition" || type === "state_to_state_transition") {
59
61
  hasTransition = true;
60
62
  }
61
63
  continue;
@@ -121,7 +123,7 @@ function expandCompactStates(text, tree) {
121
123
  const transitionTexts = [];
122
124
  for (let i = 0; i < stateNode.childCount; i++) {
123
125
  const child = stateNode.child(i);
124
- if (child.type === "transition" || child.type === "standalone_transition") {
126
+ if (child.type === "transition" || child.type === "standalone_transition" || child.type === "state_to_state_transition") {
125
127
  transitionTexts.push(child.text);
126
128
  }
127
129
  }
@@ -154,6 +156,7 @@ function computeIndentEdits(text, options, tree) {
154
156
  const lines = text.split("\n");
155
157
  const edits = [];
156
158
  const unit = options.insertSpaces ? " ".repeat(options.tabSize) : "\t";
159
+ const multilineListIndents = computeMultilineListIndentMap(lines, options, tree);
157
160
  for (let i = 0; i < lines.length; i++) {
158
161
  const line = lines[i];
159
162
  const trimmed = line.trim();
@@ -177,7 +180,7 @@ function computeIndentEdits(text, options, tree) {
177
180
  }
178
181
  depth = Math.max(0, depth - leadingCloses);
179
182
  // Compute expected indent
180
- const expected = unit.repeat(depth);
183
+ const expected = multilineListIndents.get(i) ?? unit.repeat(depth);
181
184
  const currentIndent = line.substring(0, firstNonWs);
182
185
  // Only emit edit if indent differs
183
186
  if (currentIndent !== expected) {
@@ -186,11 +189,155 @@ function computeIndentEdits(text, options, tree) {
186
189
  }
187
190
  return edits;
188
191
  }
192
+ function computeMultilineListIndentMap(lines, options, tree) {
193
+ const overrides = new Map();
194
+ const setOverride = (row, indent, node, priority) => {
195
+ if (row < 0 || row >= lines.length)
196
+ return;
197
+ if (lines[row].trim().length === 0)
198
+ return;
199
+ const spanRows = node.endPosition.row - node.startPosition.row;
200
+ const existing = overrides.get(row);
201
+ if (!existing ||
202
+ spanRows < existing.spanRows ||
203
+ (spanRows === existing.spanRows && priority > existing.priority)) {
204
+ overrides.set(row, { indent, spanRows, priority });
205
+ }
206
+ };
207
+ const getBaseIndentColumns = (row) => {
208
+ const existing = overrides.get(row);
209
+ if (existing) {
210
+ return measureIndentColumns(existing.indent, options.tabSize);
211
+ }
212
+ return computeExpectedStructuralIndentColumns(lines, options, tree, row);
213
+ };
214
+ const visit = (node) => {
215
+ if (MULTILINE_LIST_NODES.has(node.type)) {
216
+ addMultilineListIndentOverrides(node, lines, options, getBaseIndentColumns, setOverride);
217
+ }
218
+ addParamListClosingIndentOverride(node, lines, options, getBaseIndentColumns, setOverride);
219
+ for (let i = 0; i < node.childCount; i++) {
220
+ visit(node.child(i));
221
+ }
222
+ };
223
+ visit(tree.rootNode);
224
+ return new Map(Array.from(overrides, ([row, value]) => [row, value.indent]));
225
+ }
226
+ function addMultilineListIndentOverrides(node, lines, options, getBaseIndentColumns, setOverride) {
227
+ const startRow = node.startPosition.row;
228
+ const endRow = node.endPosition.row;
229
+ if (startRow === endRow)
230
+ return;
231
+ if (!hasDirectCommaChild(node))
232
+ return;
233
+ const baseRow = getMultilineListBaseRow(node);
234
+ if (baseRow === null)
235
+ return;
236
+ const baseColumns = getBaseIndentColumns(baseRow);
237
+ const baseIndent = buildIndent(baseColumns, options);
238
+ const itemIndent = buildIndent(baseColumns + options.tabSize, options);
239
+ const closingDelimiter = getMultilineListClosingDelimiter(node.type);
240
+ for (let row = Math.max(startRow, baseRow + 1); row <= endRow; row++) {
241
+ const trimmed = lines[row]?.trimStart() ?? "";
242
+ if (!trimmed)
243
+ continue;
244
+ if (closingDelimiter && trimmed.startsWith(closingDelimiter)) {
245
+ setOverride(row, baseIndent, node, 40);
246
+ }
247
+ else {
248
+ setOverride(row, itemIndent, node, 20);
249
+ }
250
+ }
251
+ }
252
+ function addParamListClosingIndentOverride(node, lines, options, getBaseIndentColumns, setOverride) {
253
+ if (!hasDirectChildOfType(node, "param_list"))
254
+ return;
255
+ const openParen = firstDirectChildOfType(node, "(");
256
+ const closeParen = lastDirectChildOfType(node, ")");
257
+ if (!openParen || !closeParen)
258
+ return;
259
+ if (openParen.startPosition.row === closeParen.startPosition.row)
260
+ return;
261
+ const closeRow = closeParen.startPosition.row;
262
+ const trimmed = lines[closeRow]?.trimStart() ?? "";
263
+ if (!trimmed.startsWith(")"))
264
+ return;
265
+ const baseColumns = getBaseIndentColumns(openParen.startPosition.row);
266
+ setOverride(closeRow, buildIndent(baseColumns, options), node, 50);
267
+ }
268
+ function computeExpectedStructuralIndentColumns(lines, options, tree, row) {
269
+ const line = lines[row] ?? "";
270
+ if (!line.trim())
271
+ return getLineIndentColumns(line, options.tabSize);
272
+ const firstNonWs = line.length - line.trimStart().length;
273
+ let depth = (0, formatRules_1.computeStructuralDepth)(tree, row, firstNonWs);
274
+ const trimmed = line.trim();
275
+ let leadingCloses = 0;
276
+ for (const ch of trimmed) {
277
+ if (ch === "}")
278
+ leadingCloses++;
279
+ else
280
+ break;
281
+ }
282
+ depth = Math.max(0, depth - leadingCloses);
283
+ return depth * options.tabSize;
284
+ }
285
+ function hasDirectCommaChild(node) {
286
+ return hasDirectChildOfType(node, ",");
287
+ }
288
+ function hasDirectChildOfType(node, type) {
289
+ return firstDirectChildOfType(node, type) !== null;
290
+ }
291
+ function firstDirectChildOfType(node, type) {
292
+ for (let i = 0; i < node.childCount; i++) {
293
+ const child = node.child(i);
294
+ if (child?.type === type)
295
+ return child;
296
+ }
297
+ return null;
298
+ }
299
+ function lastDirectChildOfType(node, type) {
300
+ for (let i = node.childCount - 1; i >= 0; i--) {
301
+ const child = node.child(i);
302
+ if (child?.type === type)
303
+ return child;
304
+ }
305
+ return null;
306
+ }
307
+ function getMultilineListBaseRow(node) {
308
+ if (node.type === "param_list") {
309
+ const openParen = node.parent ? firstDirectChildOfType(node.parent, "(") : null;
310
+ return openParen?.startPosition.row ?? node.startPosition.row;
311
+ }
312
+ const opener = node.type === "template_list"
313
+ ? firstDirectChildOfType(node, "(")
314
+ : node.type === "type_name" || node.type === "trait_parameters"
315
+ ? firstDirectChildOfType(node, "<")
316
+ : node.type === "key_definition" || node.type === "enumerated_attribute"
317
+ ? firstDirectChildOfType(node, "{")
318
+ : null;
319
+ return opener?.startPosition.row ?? node.startPosition.row;
320
+ }
321
+ function getMultilineListClosingDelimiter(nodeType) {
322
+ if (nodeType === "type_name" || nodeType === "trait_parameters")
323
+ return ">";
324
+ if (nodeType === "template_list")
325
+ return ")";
326
+ if (nodeType === "key_definition" || nodeType === "enumerated_attribute")
327
+ return "}";
328
+ if (nodeType === "trace_statement")
329
+ return "}";
330
+ return null;
331
+ }
332
+ function getLineIndentColumns(line, tabSize) {
333
+ const indentChars = line.length - line.trimStart().length;
334
+ return measureIndentColumns(line.substring(0, indentChars), tabSize);
335
+ }
189
336
  // ── Phase 2: Targeted fixups ────────────────────────────────────────────────
190
337
  /** Node types that contain a `->` arrow whose surrounding whitespace should be normalized. */
191
- const ARROW_NODES = new Set(["transition", "standalone_transition"]);
338
+ const ARROW_NODES = new Set(["transition", "standalone_transition", "state_to_state_transition"]);
192
339
  /**
193
- * Normalize whitespace around `->` in transition and standalone_transition nodes.
340
+ * Normalize whitespace around `->` in transition and standalone/state-to-state transition nodes.
194
341
  * Only handles single-line nodes. Leaves event, guard, action, and target text verbatim.
195
342
  */
196
343
  function fixTransitionSpacing(text, tree) {
@@ -222,11 +369,11 @@ function fixTransitionSpacing(text, tree) {
222
369
  // Don't walk past line indentation — that belongs to computeIndentEdits().
223
370
  const indentEnd = line.search(/\S/);
224
371
  let wsStart = arrowCol;
225
- while (wsStart > 0 && wsStart > indentEnd && line[wsStart - 1] === " ") {
372
+ while (wsStart > 0 && wsStart > indentEnd && isHorizontalWhitespace(line[wsStart - 1])) {
226
373
  wsStart--;
227
374
  }
228
375
  let wsEnd = arrowEndCol;
229
- while (wsEnd < line.length && line[wsEnd] === " ") {
376
+ while (wsEnd < line.length && isHorizontalWhitespace(line[wsEnd])) {
230
377
  wsEnd++;
231
378
  }
232
379
  const currentRegion = line.substring(wsStart, wsEnd);
@@ -246,6 +393,101 @@ function fixTransitionSpacing(text, tree) {
246
393
  }
247
394
  /** Node types that contain an `arrow` child whose surrounding whitespace should be normalized. */
248
395
  const ASSOC_NODES = new Set(["association_inline", "association_member"]);
396
+ const DECLARATION_ASSIGNMENT_NODES = new Set([
397
+ "attribute_declaration",
398
+ "const_declaration",
399
+ ]);
400
+ const STRUCTURAL_EQUALS_NODES = new Set([
401
+ "tracer_directive",
402
+ ]);
403
+ const STRUCTURAL_COMMA_NODES = new Set([
404
+ "use_statement",
405
+ "isa_type_list",
406
+ "filter_value",
407
+ "filter_combined_value",
408
+ "filter_namespace_stmt",
409
+ "param_list",
410
+ "type_name",
411
+ "type_list",
412
+ "trait_parameters",
413
+ "enum_definition",
414
+ "method_signature",
415
+ "method_declaration",
416
+ "abstract_method_declaration",
417
+ "before_after",
418
+ "toplevel_code_injection",
419
+ "code_langs",
420
+ "key_definition",
421
+ "enumerated_attribute",
422
+ "req_implementation",
423
+ "trace_statement",
424
+ "template_list",
425
+ "tracer_directive",
426
+ ]);
427
+ const MULTILINE_LIST_NODES = new Set([
428
+ "use_statement",
429
+ "isa_type_list",
430
+ "filter_value",
431
+ "filter_combined_value",
432
+ "filter_namespace_stmt",
433
+ "param_list",
434
+ "type_name",
435
+ "type_list",
436
+ "trait_parameters",
437
+ "code_langs",
438
+ "key_definition",
439
+ "enumerated_attribute",
440
+ "req_implementation",
441
+ "trace_statement",
442
+ "template_list",
443
+ ]);
444
+ function isHorizontalWhitespace(ch) {
445
+ return ch === " " || ch === "\t";
446
+ }
447
+ /**
448
+ * Normalize commas in selected structural lists.
449
+ * This deliberately excludes method bodies and expression-like text; code commas
450
+ * are inside code_content and are not parser-visible children here.
451
+ */
452
+ function fixStructuralCommaSpacing(text, tree) {
453
+ const lines = text.split("\n");
454
+ const edits = [];
455
+ const visit = (node) => {
456
+ if (STRUCTURAL_COMMA_NODES.has(node.type)) {
457
+ for (let c = 0; c < node.childCount; c++) {
458
+ const child = node.child(c);
459
+ if (!child || child.type !== ",")
460
+ continue;
461
+ const row = child.startPosition.row;
462
+ if (row !== child.endPosition.row)
463
+ continue;
464
+ const commaCol = child.startPosition.column;
465
+ const commaEndCol = child.endPosition.column;
466
+ const line = lines[row];
467
+ if (line.substring(commaEndCol).trim().length === 0)
468
+ continue;
469
+ let wsStart = commaCol;
470
+ while (wsStart > 0 && isHorizontalWhitespace(line[wsStart - 1])) {
471
+ wsStart--;
472
+ }
473
+ let wsEnd = commaEndCol;
474
+ while (wsEnd < line.length && isHorizontalWhitespace(line[wsEnd])) {
475
+ wsEnd++;
476
+ }
477
+ const currentRegion = line.substring(wsStart, wsEnd);
478
+ const expectedRegion = ", ";
479
+ if (currentRegion !== expectedRegion) {
480
+ edits.push(node_1.TextEdit.replace(node_1.Range.create(node_1.Position.create(row, wsStart), node_1.Position.create(row, wsEnd)), expectedRegion));
481
+ }
482
+ }
483
+ }
484
+ for (let i = 0; i < node.childCount; i++) {
485
+ visit(node.child(i));
486
+ }
487
+ };
488
+ visit(tree.rootNode);
489
+ return edits;
490
+ }
249
491
  /**
250
492
  * Normalize whitespace around the arrow in association_inline and association_member nodes.
251
493
  * Only handles single-line nodes. Same child-walking approach as fixTransitionSpacing.
@@ -275,11 +517,11 @@ function fixAssociationSpacing(text, tree) {
275
517
  const line = lines[startRow];
276
518
  // Find whitespace region around the arrow
277
519
  let wsStart = arrowCol;
278
- while (wsStart > 0 && line[wsStart - 1] === " ") {
520
+ while (wsStart > 0 && isHorizontalWhitespace(line[wsStart - 1])) {
279
521
  wsStart--;
280
522
  }
281
523
  let wsEnd = arrowEndCol;
282
- while (wsEnd < line.length && line[wsEnd] === " ") {
524
+ while (wsEnd < line.length && isHorizontalWhitespace(line[wsEnd])) {
283
525
  wsEnd++;
284
526
  }
285
527
  const currentRegion = line.substring(wsStart, wsEnd);
@@ -297,6 +539,52 @@ function fixAssociationSpacing(text, tree) {
297
539
  visit(tree.rootNode);
298
540
  return edits;
299
541
  }
542
+ /**
543
+ * Normalize whitespace around structural declaration assignment (`=`) tokens.
544
+ * Only touches parser-visible assignment children in attributes and constants;
545
+ * embedded code bodies and expression operators are intentionally ignored.
546
+ */
547
+ function fixDeclarationAssignmentSpacing(text, tree) {
548
+ const lines = text.split("\n");
549
+ const edits = [];
550
+ const visit = (node) => {
551
+ if (DECLARATION_ASSIGNMENT_NODES.has(node.type) || STRUCTURAL_EQUALS_NODES.has(node.type)) {
552
+ const startRow = node.startPosition.row;
553
+ const endRow = node.endPosition.row;
554
+ if (startRow !== endRow)
555
+ return;
556
+ for (let c = 0; c < node.childCount; c++) {
557
+ const child = node.child(c);
558
+ if (!child || child.type !== "=")
559
+ continue;
560
+ const equalsCol = child.startPosition.column;
561
+ const equalsEndCol = child.endPosition.column;
562
+ const line = lines[startRow];
563
+ let wsStart = equalsCol;
564
+ while (wsStart > 0 && isHorizontalWhitespace(line[wsStart - 1])) {
565
+ wsStart--;
566
+ }
567
+ let wsEnd = equalsEndCol;
568
+ while (wsEnd < line.length && isHorizontalWhitespace(line[wsEnd])) {
569
+ wsEnd++;
570
+ }
571
+ const currentRegion = line.substring(wsStart, wsEnd);
572
+ const expectedRegion = " = ";
573
+ if (currentRegion !== expectedRegion) {
574
+ edits.push(node_1.TextEdit.replace(node_1.Range.create(node_1.Position.create(startRow, wsStart), node_1.Position.create(startRow, wsEnd)), expectedRegion));
575
+ }
576
+ if (DECLARATION_ASSIGNMENT_NODES.has(node.type))
577
+ break;
578
+ }
579
+ return;
580
+ }
581
+ for (let i = 0; i < node.childCount; i++) {
582
+ visit(node.child(i));
583
+ }
584
+ };
585
+ visit(tree.rootNode);
586
+ return edits;
587
+ }
300
588
  /**
301
589
  * Normalize blank lines between top-level declarations in source_file.
302
590
  * Ensures exactly 1 blank line between consecutive top-level named children.
@@ -321,6 +609,11 @@ function normalizeTopLevelBlankLines(text, tree) {
321
609
  for (let i = 0; i < topDecls.length - 1; i++) {
322
610
  const prevEnd = topDecls[i].endRow;
323
611
  const nextStart = topDecls[i + 1].startRow;
612
+ // Multiple top-level declarations can legally appear on one physical line
613
+ // (`use f1; use f2;`). This pass only normalizes inter-line gaps; splitting
614
+ // same-line declarations is a separate, higher-risk rewrite.
615
+ if (nextStart <= prevEnd)
616
+ continue;
324
617
  const gap = nextStart - prevEnd - 1; // number of lines between them
325
618
  if (gap === 1)
326
619
  continue; // Already correct: exactly 1 blank line
@@ -1 +1 @@
1
- {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":"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"}
@@ -77,6 +77,27 @@ function buildAttributeHover(sym, defNode) {
77
77
  }
78
78
  return "```umple\n" + parts.join(" ") + "\n```" + extra;
79
79
  }
80
+ function buildPortHover(sym, defNode) {
81
+ const parts = [];
82
+ const visibility = defNode.children.find((c) => c.type === "visibility");
83
+ if (visibility)
84
+ parts.push(visibility.text);
85
+ const conjugated = defNode.children.find((c) => c.text === "conjugated");
86
+ if (conjugated)
87
+ parts.push("conjugated");
88
+ const direction = defNode.children.find((c) => c.text === "in" || c.text === "out" || c.text === "port");
89
+ if (direction)
90
+ parts.push(direction.text);
91
+ const typeNode = defNode.children.find((c) => c.type === "type_name");
92
+ if (typeNode)
93
+ parts.push(typeNode.text);
94
+ parts.push(sym.name);
95
+ let result = "```umple\n" + parts.join(" ") + "\n```";
96
+ if (sym.container) {
97
+ result += `\n\n*in class ${sym.container}*`;
98
+ }
99
+ return result;
100
+ }
80
101
  function buildConstHover(sym, defNode) {
81
102
  const typeNode = defNode.childForFieldName("type");
82
103
  const typeName = typeNode ? typeNode.text : "String";
@@ -101,7 +122,68 @@ function buildConstHover(sym, defNode) {
101
122
  }
102
123
  return result;
103
124
  }
125
+ function buildParamString(defNode) {
126
+ const paramList = defNode.children.find((c) => c.type === "param_list");
127
+ if (!paramList)
128
+ return "";
129
+ const params = [];
130
+ for (const p of paramList.children) {
131
+ if (p.type !== "param")
132
+ continue;
133
+ const pName = p.childForFieldName("name");
134
+ const pType = p.children.find((c) => c.type === "type_name");
135
+ if (pType && pName) {
136
+ params.push(`${pType.text} ${pName.text}`);
137
+ }
138
+ else if (pName) {
139
+ params.push(pName.text);
140
+ }
141
+ }
142
+ return params.join(", ");
143
+ }
144
+ function buildEventHover(sym, defNode) {
145
+ const paramStr = buildParamString(defNode);
146
+ let result = "```umple\n" + `${sym.name}(${paramStr})` + "\n```";
147
+ if (sym.container) {
148
+ result += `\n\n*event in ${sym.container}*`;
149
+ }
150
+ return result;
151
+ }
152
+ function methodContainerSuffix(sym) {
153
+ return sym.container ? `\n\n*in class ${sym.container}*` : "";
154
+ }
155
+ function buildActiveMethodHover(sym, defNode) {
156
+ const parts = [];
157
+ const vis = defNode.children.find((c) => c.type === "visibility");
158
+ if (vis)
159
+ parts.push(vis.text);
160
+ const returnType = defNode.childForFieldName("return_type");
161
+ if (returnType)
162
+ parts.push(returnType.text);
163
+ const activeModifier = defNode.children.find((c) => c.text === "atomic" || c.text === "synchronous" || c.text === "intercept");
164
+ if (activeModifier)
165
+ parts.push(activeModifier.text);
166
+ parts.push("active");
167
+ const hasParens = defNode.children.some((c) => c.text === "(");
168
+ const paramStr = buildParamString(defNode);
169
+ parts.push(hasParens ? `${sym.name}(${paramStr})` : sym.name);
170
+ return "```umple\n" + parts.join(" ") + "\n```" + methodContainerSuffix(sym);
171
+ }
172
+ function buildTestCaseHover(sym, defNode) {
173
+ const prefix = defNode.children.find((c) => c.type === "test_case_prefix");
174
+ const parts = [];
175
+ if (prefix)
176
+ parts.push(prefix.text);
177
+ parts.push("test", sym.name);
178
+ return "```umple\n" + parts.join(" ") + "\n```" + methodContainerSuffix(sym);
179
+ }
104
180
  function buildMethodHover(sym, defNode) {
181
+ if (defNode.type === "active_method") {
182
+ return buildActiveMethodHover(sym, defNode);
183
+ }
184
+ if (defNode.type === "test_case") {
185
+ return buildTestCaseHover(sym, defNode);
186
+ }
105
187
  const parts = [];
106
188
  const vis = defNode.children.find((c) => c.type === "visibility");
107
189
  if (vis)
@@ -119,30 +201,9 @@ function buildMethodHover(sym, defNode) {
119
201
  else {
120
202
  parts.push("void");
121
203
  }
122
- const paramList = defNode.children.find((c) => c.type === "param_list");
123
- let paramStr = "";
124
- if (paramList) {
125
- const params = [];
126
- for (const p of paramList.children) {
127
- if (p.type === "param") {
128
- const pName = p.childForFieldName("name");
129
- const pType = p.children.find((c) => c.type === "type_name");
130
- if (pType && pName) {
131
- params.push(`${pType.text} ${pName.text}`);
132
- }
133
- else if (pName) {
134
- params.push(pName.text);
135
- }
136
- }
137
- }
138
- paramStr = params.join(", ");
139
- }
204
+ const paramStr = buildParamString(defNode);
140
205
  parts.push(`${sym.name}(${paramStr})`);
141
- let extra = "";
142
- if (sym.container) {
143
- extra = `\n\n*in class ${sym.container}*`;
144
- }
145
- return "```umple\n" + parts.join(" ") + "\n```" + extra;
206
+ return "```umple\n" + parts.join(" ") + "\n```" + methodContainerSuffix(sym);
146
207
  }
147
208
  function buildStateMachineHover(sym, allSymbols) {
148
209
  const stateNames = [];
@@ -282,12 +343,18 @@ function buildHoverMarkdown(sym, allSymbols, hoverCtx) {
282
343
  case "attribute":
283
344
  result = buildAttributeHover(sym, defNode);
284
345
  break;
346
+ case "port":
347
+ result = buildPortHover(sym, defNode);
348
+ break;
285
349
  case "const":
286
350
  result = buildConstHover(sym, defNode);
287
351
  break;
288
352
  case "method":
289
353
  result = buildMethodHover(sym, defNode);
290
354
  break;
355
+ case "event":
356
+ result = buildEventHover(sym, defNode);
357
+ break;
291
358
  case "statemachine":
292
359
  result = buildStateMachineHover(sym, allSymbols);
293
360
  break;