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.
@@ -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 === "trait_sm_binding" &&
108
- parent.childForFieldName("param")?.id === node.id) {
109
- const typeName = parent.parent;
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 = { type: "trait_sm_param", traitName: lastId.text };
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 === "toplevel_code_injection" &&
150
- parent.childForFieldName("operation")?.id === node.id) {
151
- const targetNode = parent.childForFieldName("target");
152
- if (targetNode) {
153
- context = { type: "toplevel_injection", targetClass: targetNode.text };
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.
@@ -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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"}
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "umple-lsp-server",
3
- "version": "0.2.8",
3
+ "version": "0.3.0",
4
4
  "description": "Language Server Protocol implementation for the Umple modeling language",
5
5
  "main": "out/server.js",
6
6
  "bin": {
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.statemachine)
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() — method reference
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
- ; "trace count;"identifier after "trace" keyword references attribute or method
143
- ; Uses anonymous node anchor to skip tracecase/activate/deactivate identifiers
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
Binary file