umple-lsp-server 0.2.7 → 0.2.9

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.
@@ -19,6 +19,7 @@ export interface SymbolEntry {
19
19
  defEndLine?: number;
20
20
  defEndColumn?: number;
21
21
  statePath?: string[];
22
+ recovered?: boolean;
22
23
  }
23
24
  export interface UseStatementWithPosition {
24
25
  path: string;
@@ -24,11 +24,31 @@ const treeUtils_1 = require("./treeUtils");
24
24
  * @param column 0-based column
25
25
  */
26
26
  function analyzeToken(tree, referencesQuery, line, column) {
27
- const node = tree.rootNode.descendantForPosition({ row: line, column });
27
+ let node = tree.rootNode.descendantForPosition({ row: line, column });
28
+ // Fallback: if cursor lands on an ERROR node, search its children for an
29
+ // identifier at the exact position. ERROR nodes contain parsed-but-unmatched
30
+ // tokens as children, so the identifier is still accessible.
31
+ if (node?.type === "ERROR" || node?.isError) {
32
+ let found = null;
33
+ for (let i = 0; i < node.childCount; i++) {
34
+ const child = node.child(i);
35
+ if (child.type === "identifier" &&
36
+ child.startPosition.row === line &&
37
+ child.startPosition.column <= column &&
38
+ child.endPosition.column > column) {
39
+ found = child;
40
+ break;
41
+ }
42
+ }
43
+ if (found) {
44
+ node = found;
45
+ }
46
+ }
28
47
  if (!node ||
29
48
  (node.type !== "identifier" &&
30
49
  node.type !== "use_path" &&
31
- node.type !== "filter_pattern")) {
50
+ node.type !== "filter_pattern" &&
51
+ node.type !== "req_id")) {
32
52
  return null;
33
53
  }
34
54
  // For filter_pattern: skip wildcards and exclusion patterns
@@ -39,6 +59,15 @@ function analyzeToken(tree, referencesQuery, line, column) {
39
59
  }
40
60
  }
41
61
  let kinds = resolveDefinitionKinds(tree, node, referencesQuery);
62
+ // Fallback: if the identifier is inside an ERROR node, references.scm won't
63
+ // capture it. Use top-level-only kind candidates to avoid scoped-preference
64
+ // guessing. Container-scoped kinds (attribute, method) are excluded because
65
+ // they introduce ambiguity with local symbols of the same name.
66
+ if ((!kinds || kinds.length === 0) &&
67
+ node.type === "identifier" &&
68
+ (node.parent?.type === "ERROR" || node.parent?.isError)) {
69
+ kinds = ["class", "interface", "trait", "enum"];
70
+ }
42
71
  const { enclosingClass, enclosingStateMachine } = (0, treeUtils_1.resolveEnclosingScope)(tree, line, column);
43
72
  // ── Detect orthogonal metadata ──────────────────────────────────────────
44
73
  // Dotted state path in transition targets
@@ -125,6 +154,40 @@ function analyzeToken(tree, referencesQuery, line, column) {
125
154
  context = { type: "toplevel_injection", targetClass: targetNode.text };
126
155
  }
127
156
  }
157
+ // Sorted association key: sorted {key} — attribute reference against owner class
158
+ if (node.type === "identifier" &&
159
+ parent?.type === "sorted_modifier" &&
160
+ parent.childForFieldName("sort_key")?.id === node.id) {
161
+ // Walk up to find the association node and determine the owner class
162
+ const assocNode = parent.parent;
163
+ if (assocNode) {
164
+ let ownerClass;
165
+ if (assocNode.type === "association_inline") {
166
+ // Check if sorted_modifier is before or after the arrow
167
+ const arrow = findChildByType(assocNode, "arrow");
168
+ if (arrow && parent.startIndex < arrow.startIndex) {
169
+ // Left-side sorted → owner is the enclosing class
170
+ ownerClass = enclosingClass;
171
+ }
172
+ else {
173
+ // Right-side sorted → owner is right_type
174
+ ownerClass = assocNode.childForFieldName("right_type")?.text;
175
+ }
176
+ }
177
+ else if (assocNode.type === "association_member") {
178
+ const arrow = findChildByType(assocNode, "arrow");
179
+ if (arrow && parent.startIndex < arrow.startIndex) {
180
+ ownerClass = assocNode.childForFieldName("left_type")?.text;
181
+ }
182
+ else {
183
+ ownerClass = assocNode.childForFieldName("right_type")?.text;
184
+ }
185
+ }
186
+ if (ownerClass) {
187
+ context = { type: "sorted_key", ownerClass };
188
+ }
189
+ }
190
+ }
128
191
  // Default-value qualifier in "Status.ACTIVE"
129
192
  if (node.type === "identifier" &&
130
193
  parent?.type === "qualified_name" &&
@@ -149,6 +212,14 @@ function analyzeToken(tree, referencesQuery, line, column) {
149
212
  };
150
213
  }
151
214
  // ── Private helpers ─────────────────────────────────────────────────────────
215
+ /** Find a direct child node by type (e.g., "arrow" in an association). */
216
+ function findChildByType(node, type) {
217
+ for (let i = 0; i < node.childCount; i++) {
218
+ if (node.child(i).type === type)
219
+ return node.child(i);
220
+ }
221
+ return null;
222
+ }
152
223
  /**
153
224
  * Use references.scm query to determine which symbol kinds are valid
154
225
  * for a node's context.
@@ -1 +1 @@
1
- {"version":3,"file":"tokenAnalysis.js","sourceRoot":"","sources":["../src/tokenAnalysis.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAuBH,oCA2JC;AAhLD,iEAAiE;AACjE,MAAM,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAK9C,6CAA0D;AAC1D,2CAAsE;AAEtE;;;;;;;;;;;GAWG;AACH,SAAgB,YAAY,CAC1B,IAAU,EACV,eAAsB,EACtB,IAAY,EACZ,MAAc;IAEd,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACxE,IACE,CAAC,IAAI;QACL,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY;YACzB,IAAI,CAAC,IAAI,KAAK,UAAU;YACxB,IAAI,CAAC,IAAI,KAAK,gBAAgB,CAAC,EACjC,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4DAA4D;IAC5D,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACrB,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACnC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,IAAI,KAAK,GAAG,sBAAsB,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;IAChE,MAAM,EAAE,cAAc,EAAE,qBAAqB,EAAE,GAC7C,IAAA,iCAAqB,EAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;IAE5C,2EAA2E;IAE3E,0CAA0C;IAC1C,IAAI,cAA6C,CAAC;IAClD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,IAAI,MAAM,EAAE,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACpE,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;QAClC,IAAI,WAAW,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;YACvC,MAAM,UAAU,GAAG,WAAW,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;YAC3D,IAAI,UAAU,EAAE,EAAE,KAAK,MAAM,CAAC,EAAE,EAAE,CAAC;gBACjC,MAAM,GAAG,GAAa,EAAE,CAAC;gBACzB,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;gBACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;oBAChD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;oBACnC,IAAI,KAAK,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;wBACjC,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE;4BAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;wBAC3C,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACvB,CAAC;gBACH,CAAC;gBACD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;oBAC/B,cAAc,GAAG,EAAE,aAAa,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;gBAC1D,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,yBAAyB;IACzB,IAAI,kBAAqD,CAAC;IAC1D,IACE,IAAI,CAAC,IAAI,KAAK,YAAY;QAC1B,MAAM,EAAE,IAAI,KAAK,OAAO;QACxB,MAAM,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE,EAChD,CAAC;QACD,kBAAkB,GAAG,EAAE,cAAc,EAAE,IAAA,4BAAgB,EAAC,IAAI,CAAC,EAAE,CAAC;IAClE,CAAC;IAED,4EAA4E;IAE5E,IAAI,OAAO,GAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAEhD,+CAA+C;IAC/C,IACE,IAAI,CAAC,IAAI,KAAK,YAAY;QAC1B,MAAM,EAAE,IAAI,KAAK,kBAAkB;QACnC,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE,EACjD,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;QAC/B,IAAI,QAAQ,EAAE,IAAI,KAAK,WAAW,EAAE,CAAC;YACnC,MAAM,EAAE,GAAG,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACxE,IAAI,EAAE,EAAE,IAAI,KAAK,gBAAgB,EAAE,CAAC;gBAClC,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,eAAe,GAAG,CAAC,CAAC,CAAC;gBACrD,IAAI,MAAM,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;oBAClC,OAAO,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC/D,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,+CAA+C;IAC/C,IACE,IAAI,CAAC,IAAI,KAAK,YAAY;QAC1B,MAAM,EAAE,IAAI,KAAK,gBAAgB;QACjC,MAAM,CAAC,MAAM,EAAE,IAAI,KAAK,kBAAkB;QAC1C,MAAM,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,MAAM,CAAC,EAAE,EAC1D,CAAC;QACD,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;YAChD,MAAM,KAAK,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,KAAK,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;gBACjC,IAAI,KAAK,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE;oBAAE,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC;gBAChD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC;QACD,IAAI,GAAG,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YACrC,OAAO,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,YAAY,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;YAChF,KAAK,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED,4CAA4C;IAC5C,IACE,IAAI,CAAC,IAAI,KAAK,YAAY;QAC1B,MAAM,EAAE,IAAI,KAAK,yBAAyB;QAC1C,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE;QACtD,cAAc,EACd,CAAC;QACD,OAAO,GAAG,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;IACtC,CAAC;IAED,sEAAsE;IACtE,IACE,IAAI,CAAC,IAAI,KAAK,YAAY;QAC1B,MAAM,EAAE,IAAI,KAAK,yBAAyB;QAC1C,MAAM,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE,EACrD,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACtD,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,GAAG,EAAE,IAAI,EAAE,oBAAoB,EAAE,WAAW,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC;QACzE,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,IACE,IAAI,CAAC,IAAI,KAAK,YAAY;QAC1B,MAAM,EAAE,IAAI,KAAK,gBAAgB;QACjC,MAAM,CAAC,eAAe,GAAG,CAAC,EAC1B,CAAC;QACD,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,IAAI,EAAE,EAAE,IAAI,KAAK,uBAAuB,IAAI,EAAE,EAAE,IAAI,KAAK,mBAAmB,EAAE,CAAC;YAC7E,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,eAAe,GAAG,CAAC,CAAC,EAAE,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACpF,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;gBACjB,OAAO,GAAG,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC;YAChD,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI;QACJ,KAAK;QACL,cAAc;QACd,qBAAqB;QACrB,OAAO;QACP,cAAc;QACd,kBAAkB;KACnB,CAAC;AACJ,CAAC;AAED,+EAA+E;AAE/E;;;GAGG;AACH,SAAS,sBAAsB,CAC7B,IAAU,EACV,IAAgB,EAChB,eAAsB;IAEtB,MAAM,QAAQ,GAAG,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE;QACvD,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,WAAW,EAAE,IAAI,CAAC,WAAW;KAC9B,CAAC,CAAC;IAEH,IAAI,WAAW,GAA8C,IAAI,CAAC;IAClE,IAAI,QAAQ,GAAG,QAAQ,CAAC;IACxB,IAAI,aAAa,GAAG,QAAQ,CAAC;IAC7B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IACE,OAAO,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU;YAC1C,OAAO,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,EACtC,CAAC;YACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;YAC7D,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;YACjD,IACE,IAAI,GAAG,QAAQ;gBACf,CAAC,IAAI,KAAK,QAAQ,IAAI,SAAS,GAAG,aAAa,CAAC,EAChD,CAAC;gBACD,QAAQ,GAAG,IAAI,CAAC;gBAChB,aAAa,GAAG,SAAS,CAAC;gBAC1B,WAAW,GAAG,OAAO,CAAC;YACxB,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAE9B,MAAM,MAAM,GAAG,YAAY,CAAC;IAC5B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,IAAI,CAAC;IACtD,IAAI,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACrD,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,uCAA0B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,IAAI,CAAC,KAAK;YAAE,MAAM;QAClB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"tokenAnalysis.js","sourceRoot":"","sources":["../src/tokenAnalysis.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,9 @@ export type LookupContext = {
24
24
  targetClass: string;
25
25
  } | {
26
26
  type: "default_value_qualifier";
27
+ } | {
28
+ type: "sorted_key";
29
+ ownerClass: string;
27
30
  };
28
31
  /** Post-lookup disambiguation for dotted state references in transitions. */
29
32
  export interface DottedStateRef {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "umple-lsp-server",
3
- "version": "0.2.7",
3
+ "version": "0.2.9",
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
@@ -35,7 +37,6 @@
35
37
  (enum_value name: (identifier) @reference.enum_value)
36
38
  (external_definition name: (identifier) @reference.class)
37
39
  (mixset_definition name: (identifier) @reference.mixset)
38
- (requirement_definition name: (identifier) @reference.requirement)
39
40
  (association_class_definition name: (identifier) @reference.class)
40
41
  (statemachine_definition name: (identifier) @reference.statemachine)
41
42
  (state_machine name: (identifier) @reference.statemachine)
@@ -86,12 +87,6 @@
86
87
 
87
88
  (use_statement path: (_) @reference.mixset)
88
89
 
89
- ; =====================
90
- ; REQUIREMENT REFERENCES
91
- ; =====================
92
-
93
- (req_implementation (identifier) @reference.requirement)
94
-
95
90
  ; =====================
96
91
  ; TOP-LEVEL CODE INJECTION
97
92
  ; =====================
@@ -103,6 +98,13 @@
103
98
  ; before/after method hook — method name reference
104
99
  (before_after (identifier) @reference.method)
105
100
 
101
+ ; =====================
102
+ ; REQUIREMENT REFERENCES
103
+ ; =====================
104
+ ; implementsReq R01, R02; — requirement name references
105
+ (req_implementation (identifier) @reference.requirement)
106
+ (req_implementation (req_id) @reference.requirement)
107
+
106
108
  ; =====================
107
109
  ; ASSOCIATION TYPE REFERENCES
108
110
  ; =====================
@@ -113,6 +115,9 @@
113
115
  (association_member right_type: (identifier) @reference.class_interface_trait)
114
116
  (single_association_end type: (identifier) @reference.class_interface_trait)
115
117
 
118
+ ; Sorted association key — attribute reference against the owning class
119
+ (sorted_modifier sort_key: (identifier) @reference.attribute)
120
+
116
121
  ; =====================
117
122
  ; STATE REFERENCES
118
123
  ; =====================
Binary file