umple-lsp-server 0.2.8 → 0.3.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.
- package/completions.scm +6 -1
- package/definitions.scm +2 -0
- package/out/completionAnalysis.d.ts +9 -1
- package/out/completionAnalysis.js +305 -1
- package/out/completionAnalysis.js.map +1 -1
- package/out/completionBuilder.js +184 -3
- package/out/completionBuilder.js.map +1 -1
- package/out/formatSafetyNet.d.ts +24 -0
- package/out/formatSafetyNet.js +70 -0
- package/out/formatSafetyNet.js.map +1 -0
- package/out/formatter.js +16 -5
- package/out/formatter.js.map +1 -1
- package/out/hoverBuilder.d.ts +17 -0
- package/out/hoverBuilder.js +35 -0
- package/out/hoverBuilder.js.map +1 -1
- package/out/referenceSearch.js +245 -8
- package/out/referenceSearch.js.map +1 -1
- package/out/resolver.js +63 -0
- package/out/resolver.js.map +1 -1
- package/out/server.js +43 -0
- package/out/server.js.map +1 -1
- package/out/symbolIndex.d.ts +33 -0
- package/out/symbolIndex.js +147 -1
- package/out/symbolIndex.js.map +1 -1
- package/out/tokenAnalysis.js +268 -12
- package/out/tokenAnalysis.js.map +1 -1
- package/out/tokenTypes.d.ts +10 -0
- package/out/traitSmEventResolver.d.ts +19 -0
- package/out/traitSmEventResolver.js +34 -0
- package/out/traitSmEventResolver.js.map +1 -0
- package/package.json +1 -1
- package/references.scm +36 -12
- package/tree-sitter-umple.wasm +0 -0
package/out/referenceSearch.js
CHANGED
|
@@ -68,8 +68,21 @@ function searchReferences(declarations, includeDeclaration, referencesQuery, fil
|
|
|
68
68
|
const refKinds = parseCaptureKinds(capture.name);
|
|
69
69
|
if (!refKinds || !refKinds.includes(symKind))
|
|
70
70
|
continue;
|
|
71
|
+
// For sorted keys, resolve the owner class from the association and check
|
|
72
|
+
// it matches the declaration container (with inheritance).
|
|
73
|
+
if (node.parent?.type === "sorted_modifier" && symKind === "attribute") {
|
|
74
|
+
const ownerClass = resolveSortedKeyOwner(node);
|
|
75
|
+
if (ownerClass) {
|
|
76
|
+
// Owner class must match declaration container or be in its inheritance chain
|
|
77
|
+
if (!validContainers.has(ownerClass) &&
|
|
78
|
+
!Array.from(validContainers).some((c) => isInheritanceChain(ownerClass, c, isAGraph))) {
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
// Skip the normal container scope check — sorted key uses cross-class resolution
|
|
83
|
+
}
|
|
71
84
|
// For container-scoped kinds, verify enclosing scope matches any valid container
|
|
72
|
-
if (isContainerScoped && symContainer) {
|
|
85
|
+
else if (isContainerScoped && symContainer) {
|
|
73
86
|
const enclosing = resolveEnclosingScopeFromNode(node, symKind);
|
|
74
87
|
if (enclosing && !validContainers.has(enclosing)) {
|
|
75
88
|
// Check expanded matches: standalone SM, reuse bindings, inheritance
|
|
@@ -99,14 +112,76 @@ function searchReferences(declarations, includeDeclaration, referencesQuery, fil
|
|
|
99
112
|
valSegIdx !== sym.statePath.length)
|
|
100
113
|
continue;
|
|
101
114
|
}
|
|
115
|
+
// For trait_sm_binding param paths (deep: sm.s0.s0.s11 as state11)
|
|
116
|
+
const paramSegIdx = getTraitSmBindingParamSegmentIndex(node);
|
|
117
|
+
if (paramSegIdx !== undefined) {
|
|
118
|
+
if (paramSegIdx === 0 && symKind !== "statemachine")
|
|
119
|
+
continue;
|
|
120
|
+
if (paramSegIdx > 0 && symKind !== "state")
|
|
121
|
+
continue;
|
|
122
|
+
if (symKind === "state" && sym.statePath &&
|
|
123
|
+
paramSegIdx !== sym.statePath.length)
|
|
124
|
+
continue;
|
|
125
|
+
}
|
|
126
|
+
// For trait_sm_operation paths, filter by segment position and trait scope.
|
|
127
|
+
// getTraitSmOpSegmentInfo() returns undefined for excluded segments (events,
|
|
128
|
+
// guard content, "as newName") — those are silently skipped.
|
|
129
|
+
const traitSmOp = getTraitSmOpSegmentInfo(node);
|
|
130
|
+
if (traitSmOp !== undefined) {
|
|
131
|
+
// Kind must match segment position
|
|
132
|
+
if (traitSmOp.segmentIndex === 0 && symKind !== "statemachine")
|
|
133
|
+
continue;
|
|
134
|
+
if (traitSmOp.segmentIndex > 0 && symKind !== "state")
|
|
135
|
+
continue;
|
|
136
|
+
// Trait-side container check: declaration must belong to this trait's SM
|
|
137
|
+
const expectedContainer = `${traitSmOp.traitName}.${traitSmOp.pathSegments[0]}`;
|
|
138
|
+
if (!validContainers.has(expectedContainer))
|
|
139
|
+
continue;
|
|
140
|
+
// State depth check
|
|
141
|
+
if (symKind === "state" && sym.statePath &&
|
|
142
|
+
traitSmOp.segmentIndex !== sym.statePath.length)
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
else if (
|
|
146
|
+
// If getTraitSmOpSegmentInfo returned undefined but node IS inside trait_sm_operation,
|
|
147
|
+
// it's an excluded segment (event, guard, "as") — skip it
|
|
148
|
+
node.parent?.type === "trait_sm_operation" ||
|
|
149
|
+
(node.parent?.type === "qualified_name" && node.parent?.parent?.type === "trait_sm_operation")) {
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
// Exclude trace entities under parse-only prefixes (add/remove/cardinality)
|
|
153
|
+
if ((node.parent?.type === "trace_entity" || node.parent?.type === "trace_entity_call") &&
|
|
154
|
+
node.parent?.parent?.type === "trace_statement") {
|
|
155
|
+
const ASSOC_PREFIXES = new Set(["add", "remove", "cardinality"]);
|
|
156
|
+
const traceStmt = node.parent.parent;
|
|
157
|
+
let isAssocPrefix = false;
|
|
158
|
+
for (let i = 0; i < traceStmt.childCount; i++) {
|
|
159
|
+
const child = traceStmt.child(i);
|
|
160
|
+
if (!child)
|
|
161
|
+
continue;
|
|
162
|
+
if (child.type === "trace_entity" || child.type === "trace_entity_call")
|
|
163
|
+
break;
|
|
164
|
+
if (ASSOC_PREFIXES.has(child.type)) {
|
|
165
|
+
isAssocPrefix = true;
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
if (isAssocPrefix)
|
|
170
|
+
continue;
|
|
171
|
+
}
|
|
102
172
|
// For nested states, disambiguate by path context
|
|
103
173
|
if (symKind === "state" && sym.statePath && sym.statePath.length >= 1) {
|
|
104
174
|
const pathCtx = extractPathContextFromNode(node);
|
|
105
175
|
if (pathCtx) {
|
|
106
176
|
let preceding = pathCtx.preceding;
|
|
107
177
|
if (node.parent?.parent?.type === "trait_sm_binding" &&
|
|
108
|
-
node.parent?.parent?.childForFieldName("value")?.id ===
|
|
109
|
-
node.parent?.id) {
|
|
178
|
+
(node.parent?.parent?.childForFieldName("value")?.id === node.parent?.id ||
|
|
179
|
+
node.parent?.parent?.childForFieldName("param")?.id === node.parent?.id)) {
|
|
180
|
+
preceding = preceding.slice(1);
|
|
181
|
+
}
|
|
182
|
+
// trait_sm_operation: first segment is SM name, strip it for state path matching
|
|
183
|
+
if (node.parent?.parent?.type === "trait_sm_operation" ||
|
|
184
|
+
node.parent?.type === "trait_sm_operation") {
|
|
110
185
|
preceding = preceding.slice(1);
|
|
111
186
|
}
|
|
112
187
|
const targetPrecedingPath = sym.statePath.slice(0, sym.statePath.length - 1);
|
|
@@ -192,15 +267,66 @@ function resolveEnclosingScopeFromNode(node, targetKind) {
|
|
|
192
267
|
}
|
|
193
268
|
if (!enclosingClass && targetKind === "method") {
|
|
194
269
|
const parent = node.parent;
|
|
195
|
-
if (parent?.type === "toplevel_code_injection"
|
|
196
|
-
parent.
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
270
|
+
if (parent?.type === "toplevel_code_injection") {
|
|
271
|
+
const ops = parent.childrenForFieldName?.("operation") ?? [];
|
|
272
|
+
if (ops.some((op) => op.id === node.id)) {
|
|
273
|
+
const targetNode = parent.childForFieldName("target");
|
|
274
|
+
if (targetNode)
|
|
275
|
+
return targetNode.text;
|
|
276
|
+
}
|
|
200
277
|
}
|
|
201
278
|
}
|
|
202
279
|
return enclosingClass;
|
|
203
280
|
}
|
|
281
|
+
/**
|
|
282
|
+
* Resolve the owner class for a sorted key from the association AST.
|
|
283
|
+
* Returns the class name that owns the sorted collection, or undefined.
|
|
284
|
+
*/
|
|
285
|
+
function resolveSortedKeyOwner(node) {
|
|
286
|
+
const sortedMod = node.parent;
|
|
287
|
+
if (sortedMod?.type !== "sorted_modifier")
|
|
288
|
+
return undefined;
|
|
289
|
+
const assocNode = sortedMod.parent;
|
|
290
|
+
if (!assocNode)
|
|
291
|
+
return undefined;
|
|
292
|
+
// Find arrow position to determine left vs right side
|
|
293
|
+
let arrowPos = -1;
|
|
294
|
+
for (let i = 0; i < assocNode.childCount; i++) {
|
|
295
|
+
if (assocNode.child(i).type === "arrow") {
|
|
296
|
+
arrowPos = assocNode.child(i).startIndex;
|
|
297
|
+
break;
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
if (arrowPos < 0)
|
|
301
|
+
return undefined;
|
|
302
|
+
const isLeftSide = sortedMod.startIndex < arrowPos;
|
|
303
|
+
if (assocNode.type === "association_inline") {
|
|
304
|
+
if (isLeftSide) {
|
|
305
|
+
// Left-side sorted → enclosing class
|
|
306
|
+
let current = assocNode.parent;
|
|
307
|
+
while (current) {
|
|
308
|
+
if (["class_definition", "trait_definition", "interface_definition",
|
|
309
|
+
"association_class_definition"].includes(current.type)) {
|
|
310
|
+
return current.childForFieldName("name")?.text;
|
|
311
|
+
}
|
|
312
|
+
current = current.parent;
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
// Right-side sorted → right_type
|
|
317
|
+
return assocNode.childForFieldName("right_type")?.text;
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
else if (assocNode.type === "association_member") {
|
|
321
|
+
if (isLeftSide) {
|
|
322
|
+
return assocNode.childForFieldName("left_type")?.text;
|
|
323
|
+
}
|
|
324
|
+
else {
|
|
325
|
+
return assocNode.childForFieldName("right_type")?.text;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
return undefined;
|
|
329
|
+
}
|
|
204
330
|
function resolveTraitSmBindingValueSM(node) {
|
|
205
331
|
const parent = node.parent;
|
|
206
332
|
if (parent?.type !== "qualified_name")
|
|
@@ -213,6 +339,29 @@ function resolveTraitSmBindingValueSM(node) {
|
|
|
213
339
|
const firstId = parent.namedChild(0);
|
|
214
340
|
return firstId?.type === "identifier" ? firstId.text : undefined;
|
|
215
341
|
}
|
|
342
|
+
function getTraitSmBindingParamSegmentIndex(node) {
|
|
343
|
+
const parent = node.parent;
|
|
344
|
+
if (parent?.type !== "qualified_name")
|
|
345
|
+
return undefined;
|
|
346
|
+
const grandparent = parent.parent;
|
|
347
|
+
if (grandparent?.type !== "trait_sm_binding")
|
|
348
|
+
return undefined;
|
|
349
|
+
if (grandparent.childForFieldName("param")?.id !== parent.id)
|
|
350
|
+
return undefined;
|
|
351
|
+
// Single-segment params don't need index-based filtering
|
|
352
|
+
if (parent.namedChildCount <= 1)
|
|
353
|
+
return undefined;
|
|
354
|
+
let idx = 0;
|
|
355
|
+
for (let i = 0; i < parent.namedChildCount; i++) {
|
|
356
|
+
const child = parent.namedChild(i);
|
|
357
|
+
if (child?.type === "identifier") {
|
|
358
|
+
if (child.id === node.id)
|
|
359
|
+
return idx;
|
|
360
|
+
idx++;
|
|
361
|
+
}
|
|
362
|
+
}
|
|
363
|
+
return undefined;
|
|
364
|
+
}
|
|
216
365
|
function resolveReferencedSmDefinition(node) {
|
|
217
366
|
const parent = node.parent;
|
|
218
367
|
if (parent?.type !== "referenced_statemachine")
|
|
@@ -241,6 +390,94 @@ function getTraitSmBindingValueSegmentIndex(node) {
|
|
|
241
390
|
}
|
|
242
391
|
return undefined;
|
|
243
392
|
}
|
|
393
|
+
/**
|
|
394
|
+
* Determine if a node inside trait_sm_operation is a safe SM/state path segment.
|
|
395
|
+
* Returns undefined for guard content, event segments, and "as newName" targets.
|
|
396
|
+
*/
|
|
397
|
+
function getTraitSmOpSegmentInfo(node) {
|
|
398
|
+
const parent = node.parent;
|
|
399
|
+
if (!parent)
|
|
400
|
+
return undefined;
|
|
401
|
+
let opNode;
|
|
402
|
+
// Shape 1: identifier inside qualified_name under trait_sm_operation
|
|
403
|
+
if (parent.type === "qualified_name" && parent.parent?.type === "trait_sm_operation") {
|
|
404
|
+
opNode = parent.parent;
|
|
405
|
+
const segments = [];
|
|
406
|
+
let idx = -1;
|
|
407
|
+
for (let i = 0; i < parent.namedChildCount; i++) {
|
|
408
|
+
const child = parent.namedChild(i);
|
|
409
|
+
if (child?.type === "identifier") {
|
|
410
|
+
if (child.id === node.id)
|
|
411
|
+
idx = segments.length;
|
|
412
|
+
segments.push(child.text);
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
if (idx < 0)
|
|
416
|
+
return undefined;
|
|
417
|
+
const hasEventParams = opNode.children.some((c) => c.type === "(");
|
|
418
|
+
const isLastSegment = idx === segments.length - 1;
|
|
419
|
+
const isEventSegment = isLastSegment && hasEventParams;
|
|
420
|
+
if (isEventSegment)
|
|
421
|
+
return undefined; // event — excluded
|
|
422
|
+
const traitName = resolveTraitNameFromOp(opNode);
|
|
423
|
+
if (!traitName)
|
|
424
|
+
return undefined;
|
|
425
|
+
return { segmentIndex: idx, isEventSegment: false, traitName, pathSegments: segments };
|
|
426
|
+
}
|
|
427
|
+
// Shape 2: direct-child identifier of trait_sm_operation
|
|
428
|
+
if (parent.type === "trait_sm_operation") {
|
|
429
|
+
opNode = parent;
|
|
430
|
+
// If operation has a qualified_name child, this identifier is guard content
|
|
431
|
+
if (opNode.namedChildren.some((c) => c.type === "qualified_name")) {
|
|
432
|
+
return undefined;
|
|
433
|
+
}
|
|
434
|
+
// Phase 2 unprefixed form: collect identifiers before "as"
|
|
435
|
+
const identifiers = [];
|
|
436
|
+
let afterAs = false;
|
|
437
|
+
for (let i = 0; i < opNode.childCount; i++) {
|
|
438
|
+
const child = opNode.child(i);
|
|
439
|
+
if (!child)
|
|
440
|
+
continue;
|
|
441
|
+
if (child.type === "as") {
|
|
442
|
+
afterAs = true;
|
|
443
|
+
continue;
|
|
444
|
+
}
|
|
445
|
+
if (child.type === "identifier") {
|
|
446
|
+
if (afterAs) {
|
|
447
|
+
// After "as" — excluded (new name)
|
|
448
|
+
if (child.id === node.id)
|
|
449
|
+
return undefined;
|
|
450
|
+
continue;
|
|
451
|
+
}
|
|
452
|
+
identifiers.push({ id: child.id, text: child.text });
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
const idx = identifiers.findIndex((id) => id.id === node.id);
|
|
456
|
+
if (idx < 0)
|
|
457
|
+
return undefined;
|
|
458
|
+
const segments = identifiers.map((id) => id.text);
|
|
459
|
+
const hasEventParams = opNode.children.some((c) => c.type === "(");
|
|
460
|
+
const isLastSegment = idx === segments.length - 1;
|
|
461
|
+
if (isLastSegment && hasEventParams)
|
|
462
|
+
return undefined; // event — excluded
|
|
463
|
+
const traitName = resolveTraitNameFromOp(opNode);
|
|
464
|
+
if (!traitName)
|
|
465
|
+
return undefined;
|
|
466
|
+
return { segmentIndex: idx, isEventSegment: false, traitName, pathSegments: segments };
|
|
467
|
+
}
|
|
468
|
+
return undefined;
|
|
469
|
+
}
|
|
470
|
+
/** Extract the trait name from trait_sm_operation's enclosing type_name. */
|
|
471
|
+
function resolveTraitNameFromOp(opNode) {
|
|
472
|
+
const typeName = opNode.parent; // type_name
|
|
473
|
+
if (typeName?.type !== "type_name")
|
|
474
|
+
return undefined;
|
|
475
|
+
const qn = typeName.childForFieldName("name") ?? typeName.namedChild(0);
|
|
476
|
+
if (qn?.type !== "qualified_name")
|
|
477
|
+
return undefined;
|
|
478
|
+
const lastId = qn.namedChild(qn.namedChildCount - 1);
|
|
479
|
+
return lastId?.type === "identifier" ? lastId.text : undefined;
|
|
480
|
+
}
|
|
244
481
|
function isInheritanceChain(childClass, parentClass, isAGraph) {
|
|
245
482
|
const visited = new Set();
|
|
246
483
|
const queue = [childClass];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"referenceSearch.js","sourceRoot":"","sources":["../src/referenceSearch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"referenceSearch.js","sourceRoot":"","sources":["../src/referenceSearch.ts"],"names":[],"mappings":"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"}
|
package/out/resolver.js
CHANGED
|
@@ -92,6 +92,46 @@ function resolveSymbolAtPosition(si, docPath, content, line, col, reachableFiles
|
|
|
92
92
|
}
|
|
93
93
|
break;
|
|
94
94
|
}
|
|
95
|
+
case "trait_sm_op": {
|
|
96
|
+
// trait_sm_operation path (e.g., sm.s1 in isA T1<-sm.s1.e4()[cond]>).
|
|
97
|
+
// Navigate SM/state path segments into the trait's symbol scope.
|
|
98
|
+
const { traitName, pathSegments, segmentIndex, isEventSegment } = token.context;
|
|
99
|
+
if (isEventSegment)
|
|
100
|
+
break; // event names deferred — return empty
|
|
101
|
+
const smName = pathSegments[0];
|
|
102
|
+
const smContainer = `${traitName}.${smName}`;
|
|
103
|
+
if (segmentIndex === 0) {
|
|
104
|
+
// First segment = statemachine in the trait
|
|
105
|
+
symbols = si
|
|
106
|
+
.getSymbols({
|
|
107
|
+
name: smName,
|
|
108
|
+
kind: ["statemachine"],
|
|
109
|
+
container: smContainer,
|
|
110
|
+
})
|
|
111
|
+
.filter((s) => reachableFiles.has(path.normalize(s.file)));
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
// Later segments = states in the trait's SM
|
|
115
|
+
symbols = si
|
|
116
|
+
.getSymbols({
|
|
117
|
+
name: token.word,
|
|
118
|
+
kind: ["state"],
|
|
119
|
+
container: smContainer,
|
|
120
|
+
})
|
|
121
|
+
.filter((s) => reachableFiles.has(path.normalize(s.file)));
|
|
122
|
+
// Disambiguate by path depth
|
|
123
|
+
const precedingStatePath = pathSegments.slice(1, segmentIndex);
|
|
124
|
+
if (precedingStatePath.length === 0) {
|
|
125
|
+
symbols = symbols.filter((s) => !s.statePath || s.statePath.length === 1);
|
|
126
|
+
}
|
|
127
|
+
else if (symbols.length > 1) {
|
|
128
|
+
const resolved = si.resolveStateInPath(precedingStatePath, token.word, smContainer, reachableFiles);
|
|
129
|
+
if (resolved)
|
|
130
|
+
symbols = [resolved];
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
break;
|
|
134
|
+
}
|
|
95
135
|
case "referenced_sm": {
|
|
96
136
|
// referenced_statemachine: "door as status" — try class-local SM first,
|
|
97
137
|
// then fall back to top-level standalone statemachine.
|
|
@@ -129,6 +169,18 @@ function resolveSymbolAtPosition(si, docPath, content, line, col, reachableFiles
|
|
|
129
169
|
.filter((s) => reachableFiles.has(path.normalize(s.file)));
|
|
130
170
|
break;
|
|
131
171
|
}
|
|
172
|
+
case "sorted_key": {
|
|
173
|
+
// sorted {key} — resolve attribute against the owner class (with inheritance)
|
|
174
|
+
symbols = si
|
|
175
|
+
.getSymbols({
|
|
176
|
+
name: token.word,
|
|
177
|
+
kind: ["attribute"],
|
|
178
|
+
container: token.context.ownerClass,
|
|
179
|
+
inherited: true,
|
|
180
|
+
})
|
|
181
|
+
.filter((s) => reachableFiles.has(path.normalize(s.file)));
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
132
184
|
case "default_value_qualifier":
|
|
133
185
|
case "normal": {
|
|
134
186
|
// Split kinds into scoped (class/SM-local) and unscoped (global).
|
|
@@ -160,6 +212,17 @@ function resolveSymbolAtPosition(si, docPath, content, line, col, reachableFiles
|
|
|
160
212
|
}
|
|
161
213
|
}
|
|
162
214
|
}
|
|
215
|
+
// Fallback: state/statemachine at class level (e.g., trace entry Open)
|
|
216
|
+
// — no enclosingStateMachine, but enclosingClass can scope the search
|
|
217
|
+
if (symbols.length === 0 &&
|
|
218
|
+
!container &&
|
|
219
|
+
token.enclosingClass &&
|
|
220
|
+
scopedKinds.some((k) => k === "state" || k === "statemachine")) {
|
|
221
|
+
symbols = si
|
|
222
|
+
.getSymbols({ name: token.word, kind: scopedKinds })
|
|
223
|
+
.filter((s) => s.container?.startsWith(token.enclosingClass + "."))
|
|
224
|
+
.filter((s) => reachableFiles.has(path.normalize(s.file)));
|
|
225
|
+
}
|
|
163
226
|
if (symbols.length === 0 && unscopedKinds.length > 0) {
|
|
164
227
|
symbols = si
|
|
165
228
|
.getSymbols({ name: token.word, kind: unscopedKinds })
|
package/out/resolver.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAmBH,
|
|
1
|
+
{"version":3,"file":"resolver.js","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"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"}
|
package/out/server.js
CHANGED
|
@@ -11,6 +11,7 @@ const symbolIndex_1 = require("./symbolIndex");
|
|
|
11
11
|
const resolver_1 = require("./resolver");
|
|
12
12
|
const completionBuilder_1 = require("./completionBuilder");
|
|
13
13
|
const hoverBuilder_1 = require("./hoverBuilder");
|
|
14
|
+
const traitSmEventResolver_1 = require("./traitSmEventResolver");
|
|
14
15
|
const documentSymbolBuilder_1 = require("./documentSymbolBuilder");
|
|
15
16
|
const formatter_1 = require("./formatter");
|
|
16
17
|
const connection = (0, node_1.createConnection)(node_1.ProposedFeatures.all);
|
|
@@ -503,6 +504,15 @@ connection.onDefinition(async (params) => {
|
|
|
503
504
|
];
|
|
504
505
|
}
|
|
505
506
|
const resolved = resolveSymbolAtPosition(docPath, document.getText(), params.position.line, params.position.character);
|
|
507
|
+
// Trait SM event goto-def: dedicated resolver, not through symbol resolver
|
|
508
|
+
if (resolved?.token.context.type === "trait_sm_op" &&
|
|
509
|
+
resolved.token.context.isEventSegment &&
|
|
510
|
+
resolved.symbols.length === 0) {
|
|
511
|
+
const ctx = resolved.token.context;
|
|
512
|
+
const reachable = ensureImportsIndexed(docPath, document.getText());
|
|
513
|
+
const locations = (0, traitSmEventResolver_1.resolveTraitSmEventLocations)(symbolIndex_1.symbolIndex, ctx.traitName, ctx.pathSegments[0], resolved.token.word, ctx.eventParams ?? [], ctx.pathSegments, reachable);
|
|
514
|
+
return locations.map((loc) => node_1.Location.create((0, url_1.pathToFileURL)(loc.file).toString(), node_1.Range.create(node_1.Position.create(loc.line, loc.column), node_1.Position.create(loc.endLine, loc.endColumn))));
|
|
515
|
+
}
|
|
506
516
|
if (!resolved || resolved.symbols.length === 0)
|
|
507
517
|
return [];
|
|
508
518
|
return resolved.symbols.map((sym) => node_1.Location.create((0, url_1.pathToFileURL)(sym.file).toString(), node_1.Range.create(node_1.Position.create(sym.line, sym.column), node_1.Position.create(sym.endLine, sym.endColumn))));
|
|
@@ -717,6 +727,18 @@ connection.onHover(async (params) => {
|
|
|
717
727
|
if (!docPath)
|
|
718
728
|
return null;
|
|
719
729
|
const resolved = resolveSymbolAtPosition(docPath, document.getText(), params.position.line, params.position.character);
|
|
730
|
+
// Trait SM operation hover: trait-aware formatting + event fallback
|
|
731
|
+
if (resolved?.token.context.type === "trait_sm_op") {
|
|
732
|
+
const ctx = resolved.token.context;
|
|
733
|
+
const reachable = ensureImportsIndexed(docPath, document.getText());
|
|
734
|
+
const markdown = (0, hoverBuilder_1.buildTraitSmOpHover)(resolved.symbols, { word: resolved.token.word, context: ctx }, (f, tn, sm, sp) => symbolIndex_1.symbolIndex.getEventSignatures(f, tn, sm, sp), () => {
|
|
735
|
+
const traitSyms = symbolIndex_1.symbolIndex
|
|
736
|
+
.getSymbols({ name: ctx.traitName, kind: ["trait"] })
|
|
737
|
+
.filter((s) => reachable.has(path.normalize(s.file)));
|
|
738
|
+
return traitSyms.length > 0 ? traitSyms[0].file : undefined;
|
|
739
|
+
});
|
|
740
|
+
return markdown ? { contents: { kind: "markdown", value: markdown } } : null;
|
|
741
|
+
}
|
|
720
742
|
if (!resolved || resolved.symbols.length === 0)
|
|
721
743
|
return null;
|
|
722
744
|
const sym = resolved.symbols[0];
|
|
@@ -751,6 +773,9 @@ connection.onDocumentFormatting(async (params) => {
|
|
|
751
773
|
const tree = symbolIndex_1.symbolIndex.getTree(docPath);
|
|
752
774
|
if (!tree)
|
|
753
775
|
return [];
|
|
776
|
+
// Do not format files with parse errors — formatting can corrupt broken trees
|
|
777
|
+
if (tree.rootNode.hasError)
|
|
778
|
+
return [];
|
|
754
779
|
let text = document.getText();
|
|
755
780
|
const originalText = text;
|
|
756
781
|
// Phase 0: expand compact state blocks (may insert newlines)
|
|
@@ -797,6 +822,23 @@ connection.onDocumentFormatting(async (params) => {
|
|
|
797
822
|
// Return single whole-document replace
|
|
798
823
|
if (finalText === originalText)
|
|
799
824
|
return [];
|
|
825
|
+
// Safety net: verify formatting preserved semantics
|
|
826
|
+
const originalClean = !tree.rootNode.hasError;
|
|
827
|
+
if (originalClean) {
|
|
828
|
+
const originalSymbols = symbolIndex_1.symbolIndex.getFileSymbols(docPath);
|
|
829
|
+
// Temporarily index formatted text to check
|
|
830
|
+
symbolIndex_1.symbolIndex.updateFile(docPath, finalText);
|
|
831
|
+
const formattedTree = symbolIndex_1.symbolIndex.getTree(docPath);
|
|
832
|
+
const formattedClean = formattedTree ? !formattedTree.rootNode.hasError : false;
|
|
833
|
+
const formattedSymbols = symbolIndex_1.symbolIndex.getFileSymbols(docPath);
|
|
834
|
+
// Restore original
|
|
835
|
+
symbolIndex_1.symbolIndex.updateFile(docPath, originalText);
|
|
836
|
+
const check = (0, formatSafetyNet_1.checkFormatSafety)(originalSymbols, formattedSymbols, originalClean, formattedClean);
|
|
837
|
+
if (!check.safe) {
|
|
838
|
+
connection.console.warn(`Format safety check failed: ${check.reason}. Edits suppressed.`);
|
|
839
|
+
return [];
|
|
840
|
+
}
|
|
841
|
+
}
|
|
800
842
|
const lastLine = document.lineCount - 1;
|
|
801
843
|
const lastChar = (originalText.split("\n")[lastLine] ?? "").length;
|
|
802
844
|
return [
|
|
@@ -1404,6 +1446,7 @@ function extractJson(text) {
|
|
|
1404
1446
|
}
|
|
1405
1447
|
// Register custom diagram click-to-select request handlers
|
|
1406
1448
|
const diagramRequests_1 = require("./diagramRequests");
|
|
1449
|
+
const formatSafetyNet_1 = require("./formatSafetyNet");
|
|
1407
1450
|
(0, diagramRequests_1.registerDiagramRequests)(connection, {
|
|
1408
1451
|
symbolIndex: symbolIndex_1.symbolIndex,
|
|
1409
1452
|
isSymbolIndexReady: () => symbolIndexReady,
|