umple-lsp-server 0.3.2 → 0.3.4

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.
@@ -16,6 +16,164 @@ exports.buildSemanticCompletionItems = buildSemanticCompletionItems;
16
16
  const node_1 = require("vscode-languageserver/node");
17
17
  const keywords_1 = require("./keywords");
18
18
  const path = require("path");
19
+ // ── Curated top-level construct keywords ───────────────────────────────────
20
+ // Derived from the grammar's _definition rule (grammar.js lines 66-92).
21
+ // Raw parser lookahead is NOT surfaced at this scope.
22
+ const TOP_LEVEL_KEYWORDS = [
23
+ "namespace",
24
+ "use",
25
+ "generate",
26
+ "class",
27
+ "interface",
28
+ "trait",
29
+ "association",
30
+ "associationClass",
31
+ "enum",
32
+ "external",
33
+ "statemachine",
34
+ "mixset",
35
+ "req",
36
+ "require",
37
+ "isFeature",
38
+ "filter",
39
+ "strictness",
40
+ "tracer",
41
+ "suboption",
42
+ "distributable",
43
+ "before",
44
+ "after",
45
+ "around",
46
+ "top",
47
+ "implementsReq",
48
+ ];
49
+ // ── Curated class-body construct keywords ──────────────────────────────────
50
+ // Derived from the grammar's _class_content rule (grammar.js lines 215-251).
51
+ // Raw parser lookahead is NOT surfaced at this scope.
52
+ const CLASS_BODY_KEYWORDS = [
53
+ // Inheritance
54
+ "isA",
55
+ // Code injection
56
+ "before", "after", "around",
57
+ // Trace
58
+ "trace", "tracecase",
59
+ // Nested definitions
60
+ "class", "enum", "mixset",
61
+ // Class-level declarations
62
+ "abstract", "singleton",
63
+ // Attribute modifiers
64
+ "const", "immutable", "unique", "lazy", "settable", "defaulted",
65
+ "internal", "autounique", "sorted",
66
+ // Key / depend
67
+ "key", "depend",
68
+ // Visibility
69
+ "public", "private", "protected",
70
+ // SM qualifiers
71
+ "queued", "pooled",
72
+ // Active objects / ports
73
+ "active", "port", "emit",
74
+ // Associations
75
+ "symmetric", "reflexive",
76
+ // Display
77
+ "displayColor", "displayColour",
78
+ // Positioning
79
+ "position",
80
+ // Requirements
81
+ "implementsReq",
82
+ // Testing
83
+ "test", "generic",
84
+ ];
85
+ // ── Curated trait-body construct keywords ───────────────────────────────────
86
+ // Derived from the grammar's _trait_content rule (grammar.js lines 313-314):
87
+ // _trait_content = choice(_class_content, trait_method_signature, trait_definition)
88
+ // Extends CLASS_BODY_KEYWORDS with trait-specific additions.
89
+ const TRAIT_BODY_KEYWORDS = [
90
+ ...CLASS_BODY_KEYWORDS,
91
+ "trait", // nested trait definitions
92
+ ];
93
+ // ── Curated interface-body construct keywords ──────────────────────────────
94
+ // Derived from the grammar's interface_definition rule (grammar.js lines 281-296):
95
+ // isa_declaration, depend_statement, method_signature, const_declaration,
96
+ // _java_static_final_field
97
+ // Much narrower than class/trait bodies.
98
+ const INTERFACE_BODY_KEYWORDS = [
99
+ // Inheritance
100
+ "isA",
101
+ // Dependencies
102
+ "depend",
103
+ // Constants
104
+ "const", "constant",
105
+ // Visibility (for method signatures)
106
+ "public", "private", "protected",
107
+ // Java interop modifiers (for method_signature and _java_static_final_field)
108
+ "static", "final", "synchronized",
109
+ ];
110
+ // ── Curated mixset-body construct keywords ─────────────────────────────────
111
+ // Derived from grammar's mixset_definition block form (grammar.js lines 428-451):
112
+ // choice(_definition, _class_content, method_signature aliases,
113
+ // transition, entry_exit_action, do_activity, state, standalone_transition,
114
+ // display_color, "||")
115
+ // Union of top-level + class-body + state-level keyword starters.
116
+ const MIXSET_BODY_KEYWORDS = [
117
+ // From TOP_LEVEL_KEYWORDS (valid _definition starters)
118
+ "namespace", "use", "generate", "class", "interface", "trait",
119
+ "association", "associationClass", "enum", "external", "statemachine",
120
+ "mixset", "req", "require", "isFeature", "filter", "strictness",
121
+ "tracer", "suboption", "distributable", "before", "after", "around",
122
+ "top", "implementsReq",
123
+ // From CLASS_BODY_KEYWORDS (valid _class_content starters, excluding duplicates)
124
+ "isA", "trace", "tracecase", "abstract", "singleton",
125
+ "const", "immutable", "unique", "lazy", "settable", "defaulted",
126
+ "internal", "autounique", "sorted", "key", "depend",
127
+ "public", "private", "protected", "queued", "pooled",
128
+ "active", "port", "emit", "symmetric", "reflexive",
129
+ "displayColor", "displayColour", "position",
130
+ "test", "generic", "static", "synchronized",
131
+ // State-level starters (entry_exit_action, do_activity)
132
+ "entry", "exit", "do",
133
+ ];
134
+ // ── Curated filter-body construct keywords ─────────────────────────────────
135
+ // Derived from grammar's filter_definition (grammar.js lines 1300-1307):
136
+ // repeat(filter_statement) where filter_statement = filter_value | filter_combined_value
137
+ // | filter_namespace_stmt | filter_hops
138
+ const FILTER_BODY_KEYWORDS = [
139
+ "include",
140
+ "includeFilter",
141
+ "namespace",
142
+ "hops",
143
+ ];
144
+ // ── Curated statemachine-body construct keywords ───────────────────────────
145
+ // Derived from grammar's statemachine_definition (lines 554-563) and
146
+ // state_machine (lines 847-855). Statemachine bodies accept state
147
+ // declarations, standalone transitions, mixset blocks, and trace statements.
148
+ // State/transition names are identifier-led, not keyword-led — only
149
+ // keyword-led starters are included here.
150
+ const STATEMACHINE_BODY_KEYWORDS = [
151
+ "final", // final state declaration prefix
152
+ "mixset", // nested mixset block
153
+ "trace", // trace statement (state_machine only)
154
+ ];
155
+ // ── Curated state-body construct keywords ──────────────────────────────────
156
+ // Derived from grammar's state rule (grammar.js lines 857-879):
157
+ // transition, entry_exit_action, do_activity, state, standalone_transition,
158
+ // display_color, mixset_definition, method_declaration, trace_statement, ||, ;
159
+ // Only keyword-led starters are included.
160
+ const STATE_BODY_KEYWORDS = [
161
+ // Entry/exit/do actions
162
+ "entry", "exit", "do",
163
+ // Nested state prefix
164
+ "final",
165
+ // Nested definitions
166
+ "mixset",
167
+ // Trace
168
+ "trace", "tracecase",
169
+ // Activate/deactivate (entry_exit_action forms)
170
+ "activate", "deactivate",
171
+ // Display
172
+ "displayColor", "displayColour",
173
+ // Method declaration modifiers (method_declaration is valid in state bodies)
174
+ "public", "private", "protected",
175
+ "static", "synchronized",
176
+ ];
19
177
  // ── Constraint keyword blocklist ────────────────────────────────────────────
20
178
  const CONSTRAINT_BLOCKLIST = new Set([
21
179
  "ERROR",
@@ -100,6 +258,315 @@ function symbolKindToCompletionKind(kind) {
100
258
  function buildSemanticCompletionItems(info, symbolKinds, symbolIndex, reachableFiles) {
101
259
  const items = [];
102
260
  const seen = new Set();
261
+ // Top-level scope: curated keywords only, no raw lookahead or symbols.
262
+ if (symbolKinds === "top_level") {
263
+ return TOP_LEVEL_KEYWORDS.map((kw) => ({
264
+ label: kw,
265
+ kind: node_1.CompletionItemKind.Keyword,
266
+ }));
267
+ }
268
+ // Class-body scope: curated keywords + built-in types + type symbols.
269
+ if (symbolKinds === "class_body") {
270
+ const cbItems = [];
271
+ const cbSeen = new Set();
272
+ for (const kw of CLASS_BODY_KEYWORDS) {
273
+ cbSeen.add(kw);
274
+ cbItems.push({ label: kw, kind: node_1.CompletionItemKind.Keyword });
275
+ }
276
+ for (const typ of keywords_1.BUILTIN_TYPES) {
277
+ if (!cbSeen.has(typ)) {
278
+ cbSeen.add(typ);
279
+ cbItems.push({ label: typ, kind: node_1.CompletionItemKind.TypeParameter, detail: "type" });
280
+ }
281
+ }
282
+ for (const symKind of ["class", "interface", "trait", "enum"]) {
283
+ const symbols = symbolIndex
284
+ .getSymbols({ kind: symKind })
285
+ .filter((s) => reachableFiles.has(path.normalize(s.file)));
286
+ for (const sym of symbols) {
287
+ if (!cbSeen.has(sym.name)) {
288
+ cbSeen.add(sym.name);
289
+ cbItems.push({
290
+ label: sym.name,
291
+ kind: symbolKindToCompletionKind(symKind),
292
+ detail: symKind,
293
+ });
294
+ }
295
+ }
296
+ }
297
+ return cbItems;
298
+ }
299
+ // Trait-body scope: curated keywords + built-in types + type symbols.
300
+ if (symbolKinds === "trait_body") {
301
+ const tbItems = [];
302
+ const tbSeen = new Set();
303
+ for (const kw of TRAIT_BODY_KEYWORDS) {
304
+ tbSeen.add(kw);
305
+ tbItems.push({ label: kw, kind: node_1.CompletionItemKind.Keyword });
306
+ }
307
+ for (const typ of keywords_1.BUILTIN_TYPES) {
308
+ if (!tbSeen.has(typ)) {
309
+ tbSeen.add(typ);
310
+ tbItems.push({ label: typ, kind: node_1.CompletionItemKind.TypeParameter, detail: "type" });
311
+ }
312
+ }
313
+ for (const symKind of ["class", "interface", "trait", "enum"]) {
314
+ const symbols = symbolIndex
315
+ .getSymbols({ kind: symKind })
316
+ .filter((s) => reachableFiles.has(path.normalize(s.file)));
317
+ for (const sym of symbols) {
318
+ if (!tbSeen.has(sym.name)) {
319
+ tbSeen.add(sym.name);
320
+ tbItems.push({
321
+ label: sym.name,
322
+ kind: symbolKindToCompletionKind(symKind),
323
+ detail: symKind,
324
+ });
325
+ }
326
+ }
327
+ }
328
+ return tbItems;
329
+ }
330
+ // Interface-body scope: curated keywords + built-in types + type symbols.
331
+ if (symbolKinds === "interface_body") {
332
+ const ibItems = [];
333
+ const ibSeen = new Set();
334
+ for (const kw of INTERFACE_BODY_KEYWORDS) {
335
+ ibSeen.add(kw);
336
+ ibItems.push({ label: kw, kind: node_1.CompletionItemKind.Keyword });
337
+ }
338
+ for (const typ of keywords_1.BUILTIN_TYPES) {
339
+ if (!ibSeen.has(typ)) {
340
+ ibSeen.add(typ);
341
+ ibItems.push({ label: typ, kind: node_1.CompletionItemKind.TypeParameter, detail: "type" });
342
+ }
343
+ }
344
+ for (const symKind of ["class", "interface", "trait", "enum"]) {
345
+ const symbols = symbolIndex
346
+ .getSymbols({ kind: symKind })
347
+ .filter((s) => reachableFiles.has(path.normalize(s.file)));
348
+ for (const sym of symbols) {
349
+ if (!ibSeen.has(sym.name)) {
350
+ ibSeen.add(sym.name);
351
+ ibItems.push({
352
+ label: sym.name,
353
+ kind: symbolKindToCompletionKind(symKind),
354
+ detail: symKind,
355
+ });
356
+ }
357
+ }
358
+ }
359
+ return ibItems;
360
+ }
361
+ // Association-class-body scope: same as class body (shares _class_content).
362
+ if (symbolKinds === "assoc_class_body") {
363
+ const abItems = [];
364
+ const abSeen = new Set();
365
+ for (const kw of CLASS_BODY_KEYWORDS) {
366
+ abSeen.add(kw);
367
+ abItems.push({ label: kw, kind: node_1.CompletionItemKind.Keyword });
368
+ }
369
+ for (const typ of keywords_1.BUILTIN_TYPES) {
370
+ if (!abSeen.has(typ)) {
371
+ abSeen.add(typ);
372
+ abItems.push({ label: typ, kind: node_1.CompletionItemKind.TypeParameter, detail: "type" });
373
+ }
374
+ }
375
+ for (const symKind of ["class", "interface", "trait", "enum"]) {
376
+ const symbols = symbolIndex
377
+ .getSymbols({ kind: symKind })
378
+ .filter((s) => reachableFiles.has(path.normalize(s.file)));
379
+ for (const sym of symbols) {
380
+ if (!abSeen.has(sym.name)) {
381
+ abSeen.add(sym.name);
382
+ abItems.push({
383
+ label: sym.name,
384
+ kind: symbolKindToCompletionKind(symKind),
385
+ detail: symKind,
386
+ });
387
+ }
388
+ }
389
+ }
390
+ return abItems;
391
+ }
392
+ // Filter-body scope: curated filter-statement starters only.
393
+ if (symbolKinds === "filter_body") {
394
+ return FILTER_BODY_KEYWORDS.map((kw) => ({
395
+ label: kw,
396
+ kind: node_1.CompletionItemKind.Keyword,
397
+ }));
398
+ }
399
+ // Trace entity scope: scoped attrs/methods only, no raw keywords.
400
+ if (symbolKinds === "trace_attribute_method" && info.enclosingClass) {
401
+ const trItems = [];
402
+ const trSeen = new Set();
403
+ for (const kind of ["attribute", "method"]) {
404
+ const symbols = symbolIndex
405
+ .getSymbols({ container: info.enclosingClass, kind, inherited: true })
406
+ .filter((s) => reachableFiles.has(path.normalize(s.file)));
407
+ for (const sym of symbols) {
408
+ if (!trSeen.has(sym.name)) {
409
+ trSeen.add(sym.name);
410
+ trItems.push({
411
+ label: sym.name,
412
+ kind: symbolKindToCompletionKind(kind),
413
+ detail: kind,
414
+ });
415
+ }
416
+ }
417
+ }
418
+ return trItems;
419
+ }
420
+ // Guard scope: scoped attrs/methods + boolean literals only, no raw keywords.
421
+ if (symbolKinds === "guard_attribute_method" && info.enclosingClass) {
422
+ const gItems = [];
423
+ const gSeen = new Set();
424
+ // Boolean literals
425
+ for (const lit of ["true", "false"]) {
426
+ gSeen.add(lit);
427
+ gItems.push({ label: lit, kind: node_1.CompletionItemKind.Keyword });
428
+ }
429
+ // Scoped attrs + methods from enclosing class
430
+ for (const kind of ["attribute", "method"]) {
431
+ const symbols = symbolIndex
432
+ .getSymbols({ container: info.enclosingClass, kind, inherited: true })
433
+ .filter((s) => reachableFiles.has(path.normalize(s.file)));
434
+ for (const sym of symbols) {
435
+ if (!gSeen.has(sym.name)) {
436
+ gSeen.add(sym.name);
437
+ gItems.push({
438
+ label: sym.name,
439
+ kind: symbolKindToCompletionKind(kind),
440
+ detail: kind,
441
+ });
442
+ }
443
+ }
444
+ }
445
+ return gItems;
446
+ }
447
+ // Transition-target scope: state symbols only, no keywords.
448
+ if (symbolKinds === "transition_target") {
449
+ const ttItems = [];
450
+ const ttSeen = new Set();
451
+ if (info.enclosingStateMachine) {
452
+ if (info.dottedStatePrefix) {
453
+ const childNames = symbolIndex.getChildStateNames(info.dottedStatePrefix, info.enclosingStateMachine, reachableFiles);
454
+ for (const name of childNames) {
455
+ ttItems.push({
456
+ label: name,
457
+ kind: symbolKindToCompletionKind("state"),
458
+ detail: "state",
459
+ });
460
+ }
461
+ }
462
+ else {
463
+ const states = symbolIndex
464
+ .getSymbols({ kind: "state", container: info.enclosingStateMachine })
465
+ .filter((s) => reachableFiles.has(path.normalize(s.file)));
466
+ for (const sym of states) {
467
+ if (!ttSeen.has(sym.name)) {
468
+ ttSeen.add(sym.name);
469
+ ttItems.push({
470
+ label: sym.name,
471
+ kind: symbolKindToCompletionKind("state"),
472
+ detail: "state",
473
+ });
474
+ }
475
+ }
476
+ }
477
+ }
478
+ return ttItems;
479
+ }
480
+ // Mixset-body scope: curated keywords + built-in types + type symbols.
481
+ if (symbolKinds === "mixset_body") {
482
+ const mbItems = [];
483
+ const mbSeen = new Set();
484
+ for (const kw of MIXSET_BODY_KEYWORDS) {
485
+ mbSeen.add(kw);
486
+ mbItems.push({ label: kw, kind: node_1.CompletionItemKind.Keyword });
487
+ }
488
+ for (const typ of keywords_1.BUILTIN_TYPES) {
489
+ if (!mbSeen.has(typ)) {
490
+ mbSeen.add(typ);
491
+ mbItems.push({ label: typ, kind: node_1.CompletionItemKind.TypeParameter, detail: "type" });
492
+ }
493
+ }
494
+ for (const symKind of ["class", "interface", "trait", "enum"]) {
495
+ const symbols = symbolIndex
496
+ .getSymbols({ kind: symKind })
497
+ .filter((s) => reachableFiles.has(path.normalize(s.file)));
498
+ for (const sym of symbols) {
499
+ if (!mbSeen.has(sym.name)) {
500
+ mbSeen.add(sym.name);
501
+ mbItems.push({
502
+ label: sym.name,
503
+ kind: symbolKindToCompletionKind(symKind),
504
+ detail: symKind,
505
+ });
506
+ }
507
+ }
508
+ }
509
+ return mbItems;
510
+ }
511
+ // Statemachine-body scope: curated keywords + state symbols from enclosing SM.
512
+ if (symbolKinds === "statemachine_body") {
513
+ const smItems = [];
514
+ const smSeen = new Set();
515
+ for (const kw of STATEMACHINE_BODY_KEYWORDS) {
516
+ smSeen.add(kw);
517
+ smItems.push({ label: kw, kind: node_1.CompletionItemKind.Keyword });
518
+ }
519
+ // Offer existing state names from the enclosing SM
520
+ if (info.enclosingStateMachine) {
521
+ const states = symbolIndex
522
+ .getSymbols({ kind: "state", container: info.enclosingStateMachine })
523
+ .filter((s) => reachableFiles.has(path.normalize(s.file)));
524
+ for (const sym of states) {
525
+ if (!smSeen.has(sym.name)) {
526
+ smSeen.add(sym.name);
527
+ smItems.push({
528
+ label: sym.name,
529
+ kind: symbolKindToCompletionKind("state"),
530
+ detail: "state",
531
+ });
532
+ }
533
+ }
534
+ }
535
+ return smItems;
536
+ }
537
+ // State-body scope: curated keywords + state symbols + built-in types for methods.
538
+ if (symbolKinds === "state_body") {
539
+ const sbItems = [];
540
+ const sbSeen = new Set();
541
+ for (const kw of STATE_BODY_KEYWORDS) {
542
+ sbSeen.add(kw);
543
+ sbItems.push({ label: kw, kind: node_1.CompletionItemKind.Keyword });
544
+ }
545
+ // Built-in types for method return types
546
+ for (const typ of keywords_1.BUILTIN_TYPES) {
547
+ if (!sbSeen.has(typ)) {
548
+ sbSeen.add(typ);
549
+ sbItems.push({ label: typ, kind: node_1.CompletionItemKind.TypeParameter, detail: "type" });
550
+ }
551
+ }
552
+ // Offer state names from enclosing SM (for nested state references)
553
+ if (info.enclosingStateMachine) {
554
+ const states = symbolIndex
555
+ .getSymbols({ kind: "state", container: info.enclosingStateMachine })
556
+ .filter((s) => reachableFiles.has(path.normalize(s.file)));
557
+ for (const sym of states) {
558
+ if (!sbSeen.has(sym.name)) {
559
+ sbSeen.add(sym.name);
560
+ sbItems.push({
561
+ label: sym.name,
562
+ kind: symbolKindToCompletionKind("state"),
563
+ detail: "state",
564
+ });
565
+ }
566
+ }
567
+ }
568
+ return sbItems;
569
+ }
103
570
  // Trait SM op contexts are symbol-only — no keywords or operators.
104
571
  // Handle them first to avoid leaking generic completions on empty results.
105
572
  if (symbolKinds === "trait_sm_op_sm" ||
@@ -1 +1 @@
1
- {"version":3,"file":"completionBuilder.js","sourceRoot":"","sources":["../src/completionBuilder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"completionBuilder.js","sourceRoot":"","sources":["../src/completionBuilder.ts"],"names":[],"mappings":"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"}
package/out/server.js CHANGED
@@ -351,6 +351,16 @@ connection.onDidCloseTextDocument((params) => {
351
351
  inFlightValidations.delete(normalizedUri);
352
352
  }
353
353
  connection.sendDiagnostics({ uri: params.textDocument.uri, diagnostics: [] });
354
+ // If the file no longer exists on disk, purge its indexed state.
355
+ try {
356
+ const closedPath = (0, url_1.fileURLToPath)(params.textDocument.uri);
357
+ if (!fs.existsSync(closedPath)) {
358
+ symbolIndex_1.symbolIndex.removeFile(path.normalize(closedPath));
359
+ }
360
+ }
361
+ catch {
362
+ // non-file URI
363
+ }
354
364
  });
355
365
  // ── File watcher: keep workspace use-graph fresh for unopened files ──────────
356
366
  connection.onDidChangeWatchedFiles((params) => {
@@ -364,12 +374,14 @@ connection.onDidChangeWatchedFiles((params) => {
364
374
  catch {
365
375
  continue;
366
376
  }
367
- // Skip files that are open in the editor — their edges are managed by didOpen/didChange
377
+ // Skip files that are open in the editor — their content is managed by didOpen/didChange.
378
+ // Deletion of open files is also skipped: the buffer is still the source of truth
379
+ // and the user may save it to recreate the file. Cleanup happens on didClose.
368
380
  if (getDocument(change.uri))
369
381
  continue;
370
382
  if (change.type === node_1.FileChangeType.Deleted) {
371
- // File deleted — remove its import graph edges
372
- symbolIndex_1.symbolIndex.removeImportEdges(filePath);
383
+ // File deleted — remove all indexed state (symbols, tree, isA, SM reuse, edges)
384
+ symbolIndex_1.symbolIndex.removeFile(filePath);
373
385
  }
374
386
  else {
375
387
  // Created or Changed — update use-graph edges from disk content
@@ -1132,17 +1144,19 @@ function collectReachableFilesRecursive(filePath, content, documentDir, visited)
1132
1144
  if (visited.has(normalizedPath)) {
1133
1145
  continue; // Already visited, skip to avoid cycles
1134
1146
  }
1147
+ // Only add to reachable set if the file actually exists on disk
1148
+ if (!fs.existsSync(resolvedPath)) {
1149
+ continue;
1150
+ }
1135
1151
  visited.add(normalizedPath);
1136
1152
  // Recursively process this file's use statements
1137
- if (fs.existsSync(resolvedPath)) {
1138
- try {
1139
- const fileContent = fs.readFileSync(resolvedPath, "utf8");
1140
- const fileDir = path.dirname(resolvedPath);
1141
- collectReachableFilesRecursive(resolvedPath, fileContent, fileDir, visited);
1142
- }
1143
- catch {
1144
- // Ignore read errors
1145
- }
1153
+ try {
1154
+ const fileContent = fs.readFileSync(resolvedPath, "utf8");
1155
+ const fileDir = path.dirname(resolvedPath);
1156
+ collectReachableFilesRecursive(resolvedPath, fileContent, fileDir, visited);
1157
+ }
1158
+ catch {
1159
+ // Ignore read errors
1146
1160
  }
1147
1161
  }
1148
1162
  }