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/tokenAnalysis.js
CHANGED
|
@@ -47,7 +47,8 @@ function analyzeToken(tree, referencesQuery, line, column) {
|
|
|
47
47
|
if (!node ||
|
|
48
48
|
(node.type !== "identifier" &&
|
|
49
49
|
node.type !== "use_path" &&
|
|
50
|
-
node.type !== "filter_pattern"
|
|
50
|
+
node.type !== "filter_pattern" &&
|
|
51
|
+
node.type !== "req_id")) {
|
|
51
52
|
return null;
|
|
52
53
|
}
|
|
53
54
|
// For filter_pattern: skip wildcards and exclusion patterns
|
|
@@ -100,19 +101,92 @@ function analyzeToken(tree, referencesQuery, line, column) {
|
|
|
100
101
|
parent.childForFieldName("name")?.id === node.id) {
|
|
101
102
|
stateDefinitionRef = { definitionPath: (0, treeUtils_1.resolveStatePath)(node) };
|
|
102
103
|
}
|
|
104
|
+
// ── Trace prefix override: propagate prefix semantics to all entities ────
|
|
105
|
+
const TRACE_PREFIX_STATE = new Set(["entry", "exit"]);
|
|
106
|
+
const TRACE_PREFIX_ATTR = new Set(["set", "get"]);
|
|
107
|
+
const TRACE_PREFIX_ASSOC = new Set(["add", "remove", "cardinality"]);
|
|
108
|
+
if (node.type === "identifier" &&
|
|
109
|
+
(parent?.type === "trace_entity" || parent?.type === "trace_entity_call") &&
|
|
110
|
+
parent.parent?.type === "trace_statement") {
|
|
111
|
+
const traceStmt = parent.parent;
|
|
112
|
+
// Find the prefix keyword(s) — anonymous children between "trace" and first trace_entity
|
|
113
|
+
let hasPrefix = false;
|
|
114
|
+
let prefixKind = null;
|
|
115
|
+
for (let i = 0; i < traceStmt.childCount; i++) {
|
|
116
|
+
const child = traceStmt.child(i);
|
|
117
|
+
if (!child)
|
|
118
|
+
continue;
|
|
119
|
+
if (child.type === "trace_entity" || child.type === "trace_entity_call")
|
|
120
|
+
break; // past prefixes
|
|
121
|
+
if (TRACE_PREFIX_STATE.has(child.type)) {
|
|
122
|
+
hasPrefix = true;
|
|
123
|
+
prefixKind = "state";
|
|
124
|
+
}
|
|
125
|
+
if (TRACE_PREFIX_ATTR.has(child.type)) {
|
|
126
|
+
hasPrefix = true;
|
|
127
|
+
prefixKind = "attribute";
|
|
128
|
+
}
|
|
129
|
+
// add/remove/cardinality: parse-only (association roles not indexed)
|
|
130
|
+
if (TRACE_PREFIX_ASSOC.has(child.type)) {
|
|
131
|
+
hasPrefix = true;
|
|
132
|
+
prefixKind = null;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (hasPrefix) {
|
|
136
|
+
if (prefixKind === "state" && parent.type === "trace_entity_call") {
|
|
137
|
+
kinds = ["method"]; // entry/exit with () → method
|
|
138
|
+
}
|
|
139
|
+
else if (prefixKind === "state") {
|
|
140
|
+
kinds = ["state"];
|
|
141
|
+
}
|
|
142
|
+
else if (prefixKind === "attribute") {
|
|
143
|
+
kinds = ["attribute"];
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
// association or unrecognized prefix → parse-only, no goto-def
|
|
147
|
+
kinds = null;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
103
151
|
// ── Detect primary lookup context ────────────────────────────────────────
|
|
104
152
|
let context = { type: "normal" };
|
|
105
|
-
// trait_sm_binding param: isA T1<sm1 as sm.s2>
|
|
153
|
+
// trait_sm_binding param: isA T1<sm1 as sm.s2> or isA T1<sm.s0.s11 as state11>
|
|
106
154
|
if (node.type === "identifier" &&
|
|
107
|
-
parent?.type === "
|
|
108
|
-
parent.
|
|
109
|
-
|
|
155
|
+
parent?.type === "qualified_name" &&
|
|
156
|
+
parent.parent?.type === "trait_sm_binding" &&
|
|
157
|
+
parent.parent.childForFieldName("param")?.id === parent.id) {
|
|
158
|
+
const binding = parent.parent;
|
|
159
|
+
// Extract path segments and index
|
|
160
|
+
const segments = [];
|
|
161
|
+
let idx = -1;
|
|
162
|
+
for (let i = 0; i < parent.namedChildCount; i++) {
|
|
163
|
+
const child = parent.namedChild(i);
|
|
164
|
+
if (child?.type === "identifier") {
|
|
165
|
+
if (child.id === node.id)
|
|
166
|
+
idx = segments.length;
|
|
167
|
+
segments.push(child.text);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
// Set kinds based on segment position
|
|
171
|
+
if (idx === 0) {
|
|
172
|
+
kinds = ["statemachine"];
|
|
173
|
+
}
|
|
174
|
+
else if (idx > 0) {
|
|
175
|
+
kinds = ["state"];
|
|
176
|
+
}
|
|
177
|
+
const typeName = binding.parent;
|
|
110
178
|
if (typeName?.type === "type_name") {
|
|
111
179
|
const qn = typeName.childForFieldName("name") ?? typeName.namedChild(0);
|
|
112
180
|
if (qn?.type === "qualified_name") {
|
|
113
181
|
const lastId = qn.namedChild(qn.namedChildCount - 1);
|
|
114
182
|
if (lastId?.type === "identifier") {
|
|
115
|
-
context
|
|
183
|
+
// Use trait_sm_op context for deep paths (reuse existing resolver logic)
|
|
184
|
+
if (segments.length > 1) {
|
|
185
|
+
context = { type: "trait_sm_op", traitName: lastId.text, pathSegments: segments, segmentIndex: idx, isEventSegment: false };
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
context = { type: "trait_sm_param", traitName: lastId.text };
|
|
189
|
+
}
|
|
116
190
|
}
|
|
117
191
|
}
|
|
118
192
|
}
|
|
@@ -137,6 +211,142 @@ function analyzeToken(tree, referencesQuery, line, column) {
|
|
|
137
211
|
kinds = idx === 0 ? ["statemachine"] : ["state"];
|
|
138
212
|
}
|
|
139
213
|
}
|
|
214
|
+
// trait_sm_operation path: isA T1<-sm.s1.e4()[cond]>
|
|
215
|
+
if (node.type === "identifier" &&
|
|
216
|
+
parent?.type === "qualified_name" &&
|
|
217
|
+
parent.parent?.type === "trait_sm_operation") {
|
|
218
|
+
const opNode = parent.parent;
|
|
219
|
+
// Extract path segments and cursor index
|
|
220
|
+
const segments = [];
|
|
221
|
+
let idx = -1;
|
|
222
|
+
for (let i = 0; i < parent.namedChildCount; i++) {
|
|
223
|
+
const child = parent.namedChild(i);
|
|
224
|
+
if (child?.type === "identifier") {
|
|
225
|
+
if (child.id === node.id)
|
|
226
|
+
idx = segments.length;
|
|
227
|
+
segments.push(child.text);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
// Determine if last segment is an event (followed by "(")
|
|
231
|
+
const hasEventParams = opNode.children.some((c) => c.type === "(");
|
|
232
|
+
const isLastSegment = idx === segments.length - 1;
|
|
233
|
+
const isEventSegment = isLastSegment && hasEventParams;
|
|
234
|
+
// Find enclosing trait name from isA → type_name → qualified_name
|
|
235
|
+
let traitName = "";
|
|
236
|
+
const typeName = opNode.parent; // type_name containing the trait_sm_operation
|
|
237
|
+
if (typeName?.type === "type_name") {
|
|
238
|
+
const qn = typeName.childForFieldName("name") ?? typeName.namedChild(0);
|
|
239
|
+
if (qn?.type === "qualified_name") {
|
|
240
|
+
const lastId = qn.namedChild(qn.namedChildCount - 1);
|
|
241
|
+
if (lastId?.type === "identifier")
|
|
242
|
+
traitName = lastId.text;
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
if (idx >= 0 && traitName) {
|
|
246
|
+
// Extract event param types from type_list if this is an event segment
|
|
247
|
+
let eventParams;
|
|
248
|
+
if (isEventSegment) {
|
|
249
|
+
const typeList = opNode.namedChildren.find((c) => c.type === "type_list");
|
|
250
|
+
if (typeList) {
|
|
251
|
+
eventParams = [];
|
|
252
|
+
for (let j = 0; j < typeList.namedChildCount; j++) {
|
|
253
|
+
const tn = typeList.namedChild(j);
|
|
254
|
+
if (tn?.type === "type_name")
|
|
255
|
+
eventParams.push(tn.text);
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
eventParams = []; // empty parens ()
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
context = { type: "trait_sm_op", traitName, pathSegments: segments, segmentIndex: idx, isEventSegment, eventParams };
|
|
263
|
+
if (isEventSegment) {
|
|
264
|
+
kinds = null;
|
|
265
|
+
}
|
|
266
|
+
else {
|
|
267
|
+
kinds = idx === 0 ? ["statemachine"] : ["state"];
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
// trait_sm_operation direct-child identifiers:
|
|
272
|
+
// Phase 2 (unprefixed): isA T1<sm.e4() as newEvent> — bare identifiers
|
|
273
|
+
// Guard-only form: isA T1<-sm.s2.[cond]> — guard content leaks as direct children
|
|
274
|
+
if (node.type === "identifier" &&
|
|
275
|
+
parent?.type === "trait_sm_operation" &&
|
|
276
|
+
context.type === "normal" // not already handled by qualified_name branch
|
|
277
|
+
) {
|
|
278
|
+
const opNode = parent;
|
|
279
|
+
// If the operation has a qualified_name child, then any direct-child identifier
|
|
280
|
+
// is guard content from the .[cond] form — deferred, not a path segment.
|
|
281
|
+
const hasQualifiedName = opNode.namedChildren.some((c) => c.type === "qualified_name");
|
|
282
|
+
if (hasQualifiedName) {
|
|
283
|
+
// Guard content identifier — deferred
|
|
284
|
+
kinds = null;
|
|
285
|
+
}
|
|
286
|
+
else {
|
|
287
|
+
// Phase 2 unprefixed form: direct identifier children
|
|
288
|
+
// First identifier = SM name (navigable), second = event (deferred),
|
|
289
|
+
// last after "as" = new name (deferred).
|
|
290
|
+
const identifiers = [];
|
|
291
|
+
let afterAs = false;
|
|
292
|
+
let isAfterAs = false;
|
|
293
|
+
for (let i = 0; i < opNode.childCount; i++) {
|
|
294
|
+
const child = opNode.child(i);
|
|
295
|
+
if (!child)
|
|
296
|
+
continue;
|
|
297
|
+
if (child.type === "as") {
|
|
298
|
+
afterAs = true;
|
|
299
|
+
continue;
|
|
300
|
+
}
|
|
301
|
+
if (child.type === "identifier") {
|
|
302
|
+
if (afterAs) {
|
|
303
|
+
isAfterAs = child.id === node.id;
|
|
304
|
+
continue;
|
|
305
|
+
}
|
|
306
|
+
identifiers.push({ id: child.id, text: child.text });
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
if (!isAfterAs) {
|
|
310
|
+
const idx = identifiers.findIndex((id) => id.id === node.id);
|
|
311
|
+
const segments = identifiers.map((id) => id.text);
|
|
312
|
+
const hasEventParams = opNode.children.some((c) => c.type === "(");
|
|
313
|
+
let traitName = "";
|
|
314
|
+
const typeName = opNode.parent;
|
|
315
|
+
if (typeName?.type === "type_name") {
|
|
316
|
+
const qn = typeName.childForFieldName("name") ?? typeName.namedChild(0);
|
|
317
|
+
if (qn?.type === "qualified_name") {
|
|
318
|
+
const lastId = qn.namedChild(qn.namedChildCount - 1);
|
|
319
|
+
if (lastId?.type === "identifier")
|
|
320
|
+
traitName = lastId.text;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
if (idx >= 0 && traitName) {
|
|
324
|
+
const isLastSegment = idx === segments.length - 1;
|
|
325
|
+
const isEventSegment = isLastSegment && hasEventParams;
|
|
326
|
+
let eventParams;
|
|
327
|
+
if (isEventSegment) {
|
|
328
|
+
const typeList = opNode.namedChildren.find((c) => c.type === "type_list");
|
|
329
|
+
eventParams = typeList
|
|
330
|
+
? Array.from({ length: typeList.namedChildCount }, (_, j) => typeList.namedChild(j))
|
|
331
|
+
.filter((tn) => tn?.type === "type_name")
|
|
332
|
+
.map((tn) => tn.text)
|
|
333
|
+
: [];
|
|
334
|
+
}
|
|
335
|
+
context = { type: "trait_sm_op", traitName, pathSegments: segments, segmentIndex: idx, isEventSegment, eventParams };
|
|
336
|
+
if (isEventSegment) {
|
|
337
|
+
kinds = null;
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
kinds = idx === 0 ? ["statemachine"] : ["state"];
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
else {
|
|
345
|
+
// "as newName" — deferred, return no kinds
|
|
346
|
+
kinds = null;
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
}
|
|
140
350
|
// referenced_statemachine: "door as status"
|
|
141
351
|
if (node.type === "identifier" &&
|
|
142
352
|
parent?.type === "referenced_statemachine" &&
|
|
@@ -144,13 +354,51 @@ function analyzeToken(tree, referencesQuery, line, column) {
|
|
|
144
354
|
enclosingClass) {
|
|
145
355
|
context = { type: "referenced_sm" };
|
|
146
356
|
}
|
|
147
|
-
// toplevel_code_injection operation: "before { Counter } increment()"
|
|
357
|
+
// toplevel_code_injection operation: "before { Counter } increment(),testFunc"
|
|
358
|
+
// Check all operation fields (not just first) for comma-separated op lists
|
|
359
|
+
if (node.type === "identifier" &&
|
|
360
|
+
parent?.type === "toplevel_code_injection") {
|
|
361
|
+
const ops = parent.childrenForFieldName?.("operation") ?? [];
|
|
362
|
+
const isOp = ops.some((op) => op.id === node.id);
|
|
363
|
+
if (isOp) {
|
|
364
|
+
const targetNode = parent.childForFieldName("target");
|
|
365
|
+
if (targetNode) {
|
|
366
|
+
context = { type: "toplevel_injection", targetClass: targetNode.text };
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
// Sorted association key: sorted {key} — attribute reference against owner class
|
|
148
371
|
if (node.type === "identifier" &&
|
|
149
|
-
parent?.type === "
|
|
150
|
-
parent.childForFieldName("
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
372
|
+
parent?.type === "sorted_modifier" &&
|
|
373
|
+
parent.childForFieldName("sort_key")?.id === node.id) {
|
|
374
|
+
// Walk up to find the association node and determine the owner class
|
|
375
|
+
const assocNode = parent.parent;
|
|
376
|
+
if (assocNode) {
|
|
377
|
+
let ownerClass;
|
|
378
|
+
if (assocNode.type === "association_inline") {
|
|
379
|
+
// Check if sorted_modifier is before or after the arrow
|
|
380
|
+
const arrow = findChildByType(assocNode, "arrow");
|
|
381
|
+
if (arrow && parent.startIndex < arrow.startIndex) {
|
|
382
|
+
// Left-side sorted → owner is the enclosing class
|
|
383
|
+
ownerClass = enclosingClass;
|
|
384
|
+
}
|
|
385
|
+
else {
|
|
386
|
+
// Right-side sorted → owner is right_type
|
|
387
|
+
ownerClass = assocNode.childForFieldName("right_type")?.text;
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
else if (assocNode.type === "association_member") {
|
|
391
|
+
const arrow = findChildByType(assocNode, "arrow");
|
|
392
|
+
if (arrow && parent.startIndex < arrow.startIndex) {
|
|
393
|
+
ownerClass = assocNode.childForFieldName("left_type")?.text;
|
|
394
|
+
}
|
|
395
|
+
else {
|
|
396
|
+
ownerClass = assocNode.childForFieldName("right_type")?.text;
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
if (ownerClass) {
|
|
400
|
+
context = { type: "sorted_key", ownerClass };
|
|
401
|
+
}
|
|
154
402
|
}
|
|
155
403
|
}
|
|
156
404
|
// Default-value qualifier in "Status.ACTIVE"
|
|
@@ -177,6 +425,14 @@ function analyzeToken(tree, referencesQuery, line, column) {
|
|
|
177
425
|
};
|
|
178
426
|
}
|
|
179
427
|
// ── Private helpers ─────────────────────────────────────────────────────────
|
|
428
|
+
/** Find a direct child node by type (e.g., "arrow" in an association). */
|
|
429
|
+
function findChildByType(node, type) {
|
|
430
|
+
for (let i = 0; i < node.childCount; i++) {
|
|
431
|
+
if (node.child(i).type === type)
|
|
432
|
+
return node.child(i);
|
|
433
|
+
}
|
|
434
|
+
return null;
|
|
435
|
+
}
|
|
180
436
|
/**
|
|
181
437
|
* Use references.scm query to determine which symbol kinds are valid
|
|
182
438
|
* for a node's context.
|
package/out/tokenAnalysis.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokenAnalysis.js","sourceRoot":"","sources":["../src/tokenAnalysis.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tokenAnalysis.js","sourceRoot":"","sources":["../src/tokenAnalysis.ts"],"names":[],"mappings":"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"}
|
package/out/tokenTypes.d.ts
CHANGED
|
@@ -24,6 +24,16 @@ export type LookupContext = {
|
|
|
24
24
|
targetClass: string;
|
|
25
25
|
} | {
|
|
26
26
|
type: "default_value_qualifier";
|
|
27
|
+
} | {
|
|
28
|
+
type: "sorted_key";
|
|
29
|
+
ownerClass: string;
|
|
30
|
+
} | {
|
|
31
|
+
type: "trait_sm_op";
|
|
32
|
+
traitName: string;
|
|
33
|
+
pathSegments: string[];
|
|
34
|
+
segmentIndex: number;
|
|
35
|
+
isEventSegment: boolean;
|
|
36
|
+
eventParams?: string[];
|
|
27
37
|
};
|
|
28
38
|
/** Post-lookup disambiguation for dotted state references in transitions. */
|
|
29
39
|
export interface DottedStateRef {
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dedicated resolver for trait SM event goto-def.
|
|
3
|
+
* Shared by server.ts and test helpers — single source of truth.
|
|
4
|
+
*/
|
|
5
|
+
import type { SymbolIndex } from "./symbolIndex";
|
|
6
|
+
export interface EventLocation {
|
|
7
|
+
file: string;
|
|
8
|
+
line: number;
|
|
9
|
+
column: number;
|
|
10
|
+
endLine: number;
|
|
11
|
+
endColumn: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Resolve goto-def locations for an event segment in a trait SM operation.
|
|
15
|
+
* Matches by exact signature (name + param types).
|
|
16
|
+
*
|
|
17
|
+
* @returns Array of event identifier locations, or empty if no match.
|
|
18
|
+
*/
|
|
19
|
+
export declare function resolveTraitSmEventLocations(si: SymbolIndex, traitName: string, smName: string, eventName: string, eventParams: string[], pathSegments: string[], reachableFiles: Set<string>): EventLocation[];
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Dedicated resolver for trait SM event goto-def.
|
|
4
|
+
* Shared by server.ts and test helpers — single source of truth.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.resolveTraitSmEventLocations = resolveTraitSmEventLocations;
|
|
8
|
+
const path = require("path");
|
|
9
|
+
/**
|
|
10
|
+
* Resolve goto-def locations for an event segment in a trait SM operation.
|
|
11
|
+
* Matches by exact signature (name + param types).
|
|
12
|
+
*
|
|
13
|
+
* @returns Array of event identifier locations, or empty if no match.
|
|
14
|
+
*/
|
|
15
|
+
function resolveTraitSmEventLocations(si, traitName, smName, eventName, eventParams, pathSegments, reachableFiles) {
|
|
16
|
+
const traitSyms = si
|
|
17
|
+
.getSymbols({ name: traitName, kind: ["trait"] })
|
|
18
|
+
.filter((s) => reachableFiles.has(path.normalize(s.file)));
|
|
19
|
+
if (traitSyms.length === 0)
|
|
20
|
+
return [];
|
|
21
|
+
const traitFile = traitSyms[0].file;
|
|
22
|
+
const statePath = pathSegments.length > 2 ? pathSegments.slice(1, -1) : undefined;
|
|
23
|
+
const occurrences = si.getEventOccurrences(traitFile, traitName, smName, statePath);
|
|
24
|
+
const eventLabel = `${eventName}(${eventParams.join(", ")})`;
|
|
25
|
+
const matching = occurrences.filter((o) => o.label === eventLabel);
|
|
26
|
+
return matching.map((o) => ({
|
|
27
|
+
file: traitFile,
|
|
28
|
+
line: o.line,
|
|
29
|
+
column: o.column,
|
|
30
|
+
endLine: o.endLine,
|
|
31
|
+
endColumn: o.endColumn,
|
|
32
|
+
}));
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=traitSmEventResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"traitSmEventResolver.js","sourceRoot":"","sources":["../src/traitSmEventResolver.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAoBH,oEA4BC;AA9CD,6BAA6B;AAY7B;;;;;GAKG;AACH,SAAgB,4BAA4B,CAC1C,EAAe,EACf,SAAiB,EACjB,MAAc,EACd,SAAiB,EACjB,WAAqB,EACrB,YAAsB,EACtB,cAA2B;IAE3B,MAAM,SAAS,GAAG,EAAE;SACjB,UAAU,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,OAAO,CAAiB,EAAE,CAAC;SAChE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7D,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAEtC,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACpC,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClF,MAAM,WAAW,GAAG,EAAE,CAAC,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAEpF,MAAM,UAAU,GAAG,GAAG,SAAS,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;IAC7D,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,UAAU,CAAC,CAAC;IAEnE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC1B,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,MAAM,EAAE,CAAC,CAAC,MAAM;QAChB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,SAAS,EAAE,CAAC,CAAC,SAAS;KACvB,CAAC,CAAC,CAAC;AACN,CAAC"}
|
package/package.json
CHANGED
package/references.scm
CHANGED
|
@@ -18,6 +18,8 @@
|
|
|
18
18
|
(interface_definition name: (identifier) @reference.interface)
|
|
19
19
|
(trait_definition name: (identifier) @reference.trait)
|
|
20
20
|
(enum_definition name: (identifier) @reference.enum)
|
|
21
|
+
(requirement_definition name: (identifier) @reference.requirement)
|
|
22
|
+
(requirement_definition name: (req_id) @reference.requirement)
|
|
21
23
|
|
|
22
24
|
; =====================
|
|
23
25
|
; TRAIT PARAMETER REFERENCES
|
|
@@ -30,12 +32,16 @@
|
|
|
30
32
|
(trait_binding value: (qualified_name (identifier) @reference.class_interface_trait))
|
|
31
33
|
; Trait SM binding: isA T<sm1 as sm.s2>
|
|
32
34
|
; param references trait-side statemachine; value path references class-side SM/state
|
|
33
|
-
(trait_sm_binding param: (identifier) @reference.
|
|
35
|
+
(trait_sm_binding param: (qualified_name (identifier) @reference.statemachine_state))
|
|
34
36
|
(trait_sm_binding value: (qualified_name (identifier) @reference.statemachine_state))
|
|
37
|
+
; Trait SM operation: isA T<-sm.s1.e4()[cond]> — path refs trait-side SM/state
|
|
38
|
+
; Two captures for both AST shapes; referenceSearch.ts post-filters to exclude
|
|
39
|
+
; event segments, guard content, and "as newName" targets.
|
|
40
|
+
(trait_sm_operation (qualified_name (identifier) @reference.statemachine_state))
|
|
41
|
+
(trait_sm_operation (identifier) @reference.statemachine_state)
|
|
35
42
|
(enum_value name: (identifier) @reference.enum_value)
|
|
36
43
|
(external_definition name: (identifier) @reference.class)
|
|
37
44
|
(mixset_definition name: (identifier) @reference.mixset)
|
|
38
|
-
(requirement_definition name: (identifier) @reference.requirement)
|
|
39
45
|
(association_class_definition name: (identifier) @reference.class)
|
|
40
46
|
(statemachine_definition name: (identifier) @reference.statemachine)
|
|
41
47
|
(state_machine name: (identifier) @reference.statemachine)
|
|
@@ -86,23 +92,24 @@
|
|
|
86
92
|
|
|
87
93
|
(use_statement path: (_) @reference.mixset)
|
|
88
94
|
|
|
89
|
-
; =====================
|
|
90
|
-
; REQUIREMENT REFERENCES
|
|
91
|
-
; =====================
|
|
92
|
-
|
|
93
|
-
(req_implementation (identifier) @reference.requirement)
|
|
94
|
-
|
|
95
95
|
; =====================
|
|
96
96
|
; TOP-LEVEL CODE INJECTION
|
|
97
97
|
; =====================
|
|
98
98
|
; before/after/around { ClassName } — target must be a class
|
|
99
99
|
(toplevel_code_injection target: (identifier) @reference.class)
|
|
100
|
-
; before/after/around { ClassName } operation
|
|
100
|
+
; before/after/around { ClassName } operation — method reference
|
|
101
101
|
(toplevel_code_injection operation: (identifier) @reference.method)
|
|
102
102
|
|
|
103
103
|
; before/after method hook — method name reference
|
|
104
104
|
(before_after (identifier) @reference.method)
|
|
105
105
|
|
|
106
|
+
; =====================
|
|
107
|
+
; REQUIREMENT REFERENCES
|
|
108
|
+
; =====================
|
|
109
|
+
; implementsReq R01, R02; — requirement name references
|
|
110
|
+
(req_implementation (identifier) @reference.requirement)
|
|
111
|
+
(req_implementation (req_id) @reference.requirement)
|
|
112
|
+
|
|
106
113
|
; =====================
|
|
107
114
|
; ASSOCIATION TYPE REFERENCES
|
|
108
115
|
; =====================
|
|
@@ -113,6 +120,9 @@
|
|
|
113
120
|
(association_member right_type: (identifier) @reference.class_interface_trait)
|
|
114
121
|
(single_association_end type: (identifier) @reference.class_interface_trait)
|
|
115
122
|
|
|
123
|
+
; Sorted association key — attribute reference against the owning class
|
|
124
|
+
(sorted_modifier sort_key: (identifier) @reference.attribute)
|
|
125
|
+
|
|
116
126
|
; =====================
|
|
117
127
|
; STATE REFERENCES
|
|
118
128
|
; =====================
|
|
@@ -139,9 +149,23 @@
|
|
|
139
149
|
; =====================
|
|
140
150
|
; TRACE ENTITY REFERENCES
|
|
141
151
|
; =====================
|
|
142
|
-
;
|
|
143
|
-
;
|
|
144
|
-
(trace_statement "trace" . (identifier) @reference.attribute_method)
|
|
152
|
+
; Trace entity references — prefix-sensitive kinds for ALL entities (no "." anchor)
|
|
153
|
+
; No prefix: attribute or method (first entity only via "trace" anchor)
|
|
154
|
+
(trace_statement "trace" . (trace_entity (identifier) @reference.attribute_method))
|
|
155
|
+
(trace_statement "trace" . (trace_entity_call (identifier) @reference.method))
|
|
156
|
+
; set/get → attribute (all entities in statement)
|
|
157
|
+
(trace_statement "set" (trace_entity (identifier) @reference.attribute))
|
|
158
|
+
(trace_statement "get" (trace_entity (identifier) @reference.attribute))
|
|
159
|
+
; entry/exit bare → state; entry/exit call → method (all entities)
|
|
160
|
+
(trace_statement "entry" (trace_entity (identifier) @reference.state))
|
|
161
|
+
(trace_statement "exit" (trace_entity (identifier) @reference.state))
|
|
162
|
+
(trace_statement "entry" (trace_entity_call (identifier) @reference.method))
|
|
163
|
+
(trace_statement "exit" (trace_entity_call (identifier) @reference.method))
|
|
164
|
+
; add/remove/cardinality: parse-only (association roles not indexed as symbols)
|
|
165
|
+
; in/out: parse-only
|
|
166
|
+
; Subsequent entities after "," in no-prefix traces
|
|
167
|
+
(trace_statement "," (trace_entity (identifier) @reference.attribute_method))
|
|
168
|
+
(trace_statement "," (trace_entity_call (identifier) @reference.method))
|
|
145
169
|
; "record x" in trace postfix — additional entity reference
|
|
146
170
|
(trace_postfix "record" . (identifier) @reference.attribute_method)
|
|
147
171
|
; tracecase definition name and activate/deactivate references
|
package/tree-sitter-umple.wasm
CHANGED
|
Binary file
|