umple-lsp-server 0.2.2 → 0.2.5

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/out/formatter.js CHANGED
@@ -1,19 +1,348 @@
1
1
  "use strict";
2
2
  /**
3
- * Document formatting logic.
3
+ * Syntax-aware document formatter.
4
4
  *
5
- * Pure text manipulation + tree walking for skip-range detection.
6
- * No dependency on LSP connection, documents, or SymbolIndex class.
5
+ * Uses tree-sitter AST to compute structural indentation instead of
6
+ * naive brace counting. Preserves embedded code regions (code_content,
7
+ * template_body) as verbatim islands.
7
8
  */
8
9
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.getCodeContentRanges = getCodeContentRanges;
10
+ exports.expandCompactStates = expandCompactStates;
10
11
  exports.computeIndentEdits = computeIndentEdits;
12
+ exports.fixTransitionSpacing = fixTransitionSpacing;
13
+ exports.fixAssociationSpacing = fixAssociationSpacing;
14
+ exports.normalizeTopLevelBlankLines = normalizeTopLevelBlankLines;
15
+ exports.getCodeContentRanges = getCodeContentRanges;
11
16
  const node_1 = require("vscode-languageserver/node");
17
+ const formatRules_1 = require("./formatRules");
18
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
19
+ const TreeSitter = require("web-tree-sitter");
20
+ // ── Phase 0: Compact block expansion ────────────────────────────────────────
21
+ /** Allowed child types inside a state body for expansion eligibility. */
22
+ const EXPANSION_ALLOWED_CHILDREN = new Set([
23
+ "transition", "standalone_transition",
24
+ "{", "}", ";", "identifier",
25
+ ]);
26
+ /** Node types that disqualify a state from expansion if found as descendants. */
27
+ const EXPANSION_REJECT_DESCENDANTS = new Set([
28
+ "code_content", "template_body", "action_code", "more_code",
29
+ "line_comment", "block_comment",
30
+ ]);
31
+ /**
32
+ * Check if a subtree contains any descendant of the given types.
33
+ */
34
+ function hasDescendantOfType(node, types) {
35
+ for (let i = 0; i < node.childCount; i++) {
36
+ const child = node.child(i);
37
+ if (types.has(child.type))
38
+ return true;
39
+ if (hasDescendantOfType(child, types))
40
+ return true;
41
+ }
42
+ return false;
43
+ }
44
+ /**
45
+ * Check if a single-line state node is eligible for compact block expansion.
46
+ */
47
+ function isEligibleForExpansion(stateNode) {
48
+ // Must be single-line
49
+ if (stateNode.startPosition.row !== stateNode.endPosition.row)
50
+ return false;
51
+ // Walk ALL children (including anonymous tokens)
52
+ let hasTransition = false;
53
+ for (let i = 0; i < stateNode.childCount; i++) {
54
+ const child = stateNode.child(i);
55
+ const type = child.type;
56
+ if (EXPANSION_ALLOWED_CHILDREN.has(type)) {
57
+ if (type === "transition" || type === "standalone_transition") {
58
+ hasTransition = true;
59
+ }
60
+ continue;
61
+ }
62
+ // Any other child (||, entry_exit_action, state, method, etc.) → reject
63
+ return false;
64
+ }
65
+ if (!hasTransition)
66
+ return false;
67
+ // Check for embedded-code or comment descendants anywhere in subtree
68
+ if (hasDescendantOfType(stateNode, EXPANSION_REJECT_DESCENDANTS)) {
69
+ return false;
70
+ }
71
+ // Check for ERROR nodes
72
+ if (stateNode.hasError)
73
+ return false;
74
+ return true;
75
+ }
76
+ /**
77
+ * Expand eligible single-line compact state blocks into multi-line format.
78
+ * Returns the modified text (or the original if nothing changed).
79
+ */
80
+ function expandCompactStates(text, tree) {
81
+ const lines = text.split("\n");
82
+ // Collect eligible state nodes (process in reverse to preserve positions)
83
+ const eligible = [];
84
+ const visit = (node) => {
85
+ if (node.type === "state" && isEligibleForExpansion(node)) {
86
+ eligible.push(node);
87
+ return; // Don't descend — this is single-line
88
+ }
89
+ for (let i = 0; i < node.childCount; i++) {
90
+ visit(node.child(i));
91
+ }
92
+ };
93
+ visit(tree.rootNode);
94
+ if (eligible.length === 0)
95
+ return text;
96
+ // Sort in reverse document order (process from bottom to top)
97
+ eligible.sort((a, b) => b.startPosition.row - a.startPosition.row ||
98
+ b.startPosition.column - a.startPosition.column);
99
+ let result = text;
100
+ for (const stateNode of eligible) {
101
+ const row = stateNode.startPosition.row;
102
+ const startCol = stateNode.startPosition.column;
103
+ const endCol = stateNode.endPosition.column;
104
+ const line = result.split("\n")[row];
105
+ const nodeText = line.substring(startCol, endCol);
106
+ // Find the state name
107
+ const nameNode = stateNode.childForFieldName("name");
108
+ if (!nameNode)
109
+ continue;
110
+ const stateName = nameNode.text;
111
+ // Collect transition child texts
112
+ const transitionTexts = [];
113
+ for (let i = 0; i < stateNode.childCount; i++) {
114
+ const child = stateNode.child(i);
115
+ if (child.type === "transition" || child.type === "standalone_transition") {
116
+ transitionTexts.push(child.text);
117
+ }
118
+ }
119
+ // Compute the indent of the state itself (leading whitespace before it)
120
+ const stateIndent = line.substring(0, startCol);
121
+ const childIndent = stateIndent + " "; // +1 level
122
+ // Build expanded text
123
+ const expandedLines = [`${stateName} {`];
124
+ for (const t of transitionTexts) {
125
+ expandedLines.push(`${childIndent}${t}`);
126
+ }
127
+ expandedLines.push(`${stateIndent}}`);
128
+ const expanded = expandedLines.join("\n");
129
+ // Replace in the result
130
+ const allLines = result.split("\n");
131
+ allLines[row] = line.substring(0, startCol) + expanded + line.substring(endCol);
132
+ result = allLines.join("\n");
133
+ }
134
+ return result;
135
+ }
12
136
  /**
13
- * Collect line ranges of code_content and template_body nodes (embedded code
14
- * that the formatter should not re-indent).
137
+ * Compute indent edits for an Umple document using syntax-aware indentation.
15
138
  *
16
- * @param tree Pre-parsed tree (caller handles tree acquisition)
139
+ * @param text Document text
140
+ * @param options Formatting options (tabSize, insertSpaces)
141
+ * @param tree Pre-parsed tree-sitter tree
142
+ * @returns Array of TextEdits to apply for correct indentation
143
+ */
144
+ function computeIndentEdits(text, options, tree) {
145
+ const lines = text.split("\n");
146
+ const edits = [];
147
+ const unit = options.insertSpaces ? " ".repeat(options.tabSize) : "\t";
148
+ for (let i = 0; i < lines.length; i++) {
149
+ const line = lines[i];
150
+ const trimmed = line.trim();
151
+ // Skip empty lines
152
+ if (!trimmed)
153
+ continue;
154
+ // Skip lines inside verbatim regions (embedded code)
155
+ if ((0, formatRules_1.isVerbatimLine)(tree, i))
156
+ continue;
157
+ // Find first non-whitespace column for AST lookup
158
+ const firstNonWs = line.length - line.trimStart().length;
159
+ // Compute structural depth from AST ancestors
160
+ let depth = (0, formatRules_1.computeStructuralDepth)(tree, i, firstNonWs);
161
+ // Handle leading closing braces: outdent before indenting this line
162
+ let leadingCloses = 0;
163
+ for (const ch of trimmed) {
164
+ if (ch === "}")
165
+ leadingCloses++;
166
+ else
167
+ break;
168
+ }
169
+ depth = Math.max(0, depth - leadingCloses);
170
+ // Compute expected indent
171
+ const expected = unit.repeat(depth);
172
+ const currentIndent = line.substring(0, firstNonWs);
173
+ // Only emit edit if indent differs
174
+ if (currentIndent !== expected) {
175
+ edits.push(node_1.TextEdit.replace(node_1.Range.create(node_1.Position.create(i, 0), node_1.Position.create(i, currentIndent.length)), expected));
176
+ }
177
+ }
178
+ return edits;
179
+ }
180
+ // ── Phase 2: Targeted fixups ────────────────────────────────────────────────
181
+ /** Node types that contain a `->` arrow whose surrounding whitespace should be normalized. */
182
+ const ARROW_NODES = new Set(["transition", "standalone_transition"]);
183
+ /**
184
+ * Normalize whitespace around `->` in transition and standalone_transition nodes.
185
+ * Only handles single-line nodes. Leaves event, guard, action, and target text verbatim.
186
+ */
187
+ function fixTransitionSpacing(text, tree) {
188
+ const lines = text.split("\n");
189
+ const edits = [];
190
+ const visit = (node) => {
191
+ if (ARROW_NODES.has(node.type)) {
192
+ const startRow = node.startPosition.row;
193
+ const endRow = node.endPosition.row;
194
+ // Only single-line transitions
195
+ if (startRow !== endRow)
196
+ return;
197
+ // Find the structural "->" token by walking children (not substring search,
198
+ // which would match "->" inside action_code like "foo->bar")
199
+ let arrowChild = null;
200
+ for (let c = 0; c < node.childCount; c++) {
201
+ const child = node.child(c);
202
+ if (child && child.type === "->") {
203
+ arrowChild = child;
204
+ break;
205
+ }
206
+ }
207
+ if (!arrowChild)
208
+ return;
209
+ const arrowCol = arrowChild.startPosition.column;
210
+ const arrowEndCol = arrowChild.endPosition.column;
211
+ const line = lines[startRow];
212
+ // Find whitespace region around the structural arrow
213
+ let wsStart = arrowCol;
214
+ while (wsStart > 0 && line[wsStart - 1] === " ") {
215
+ wsStart--;
216
+ }
217
+ let wsEnd = arrowEndCol;
218
+ while (wsEnd < line.length && line[wsEnd] === " ") {
219
+ wsEnd++;
220
+ }
221
+ const currentRegion = line.substring(wsStart, wsEnd);
222
+ const expectedRegion = " -> ";
223
+ if (currentRegion === expectedRegion)
224
+ return;
225
+ edits.push(node_1.TextEdit.replace(node_1.Range.create(node_1.Position.create(startRow, wsStart), node_1.Position.create(startRow, wsEnd)), expectedRegion));
226
+ return; // Don't descend into transition children
227
+ }
228
+ for (let i = 0; i < node.childCount; i++) {
229
+ visit(node.child(i));
230
+ }
231
+ };
232
+ visit(tree.rootNode);
233
+ return edits;
234
+ }
235
+ /** Node types that contain an `arrow` child whose surrounding whitespace should be normalized. */
236
+ const ASSOC_NODES = new Set(["association_inline", "association_member"]);
237
+ /**
238
+ * Normalize whitespace around the arrow in association_inline and association_member nodes.
239
+ * Only handles single-line nodes. Same child-walking approach as fixTransitionSpacing.
240
+ */
241
+ function fixAssociationSpacing(text, tree) {
242
+ const lines = text.split("\n");
243
+ const edits = [];
244
+ const visit = (node) => {
245
+ if (ASSOC_NODES.has(node.type)) {
246
+ const startRow = node.startPosition.row;
247
+ const endRow = node.endPosition.row;
248
+ if (startRow !== endRow)
249
+ return;
250
+ // Find the "arrow" child node
251
+ let arrowChild = null;
252
+ for (let c = 0; c < node.childCount; c++) {
253
+ const child = node.child(c);
254
+ if (child && child.type === "arrow") {
255
+ arrowChild = child;
256
+ break;
257
+ }
258
+ }
259
+ if (!arrowChild)
260
+ return;
261
+ const arrowCol = arrowChild.startPosition.column;
262
+ const arrowEndCol = arrowChild.endPosition.column;
263
+ const line = lines[startRow];
264
+ // Find whitespace region around the arrow
265
+ let wsStart = arrowCol;
266
+ while (wsStart > 0 && line[wsStart - 1] === " ") {
267
+ wsStart--;
268
+ }
269
+ let wsEnd = arrowEndCol;
270
+ while (wsEnd < line.length && line[wsEnd] === " ") {
271
+ wsEnd++;
272
+ }
273
+ const currentRegion = line.substring(wsStart, wsEnd);
274
+ const arrowText = arrowChild.text;
275
+ const expectedRegion = " " + arrowText + " ";
276
+ if (currentRegion === expectedRegion)
277
+ return;
278
+ edits.push(node_1.TextEdit.replace(node_1.Range.create(node_1.Position.create(startRow, wsStart), node_1.Position.create(startRow, wsEnd)), expectedRegion));
279
+ return;
280
+ }
281
+ for (let i = 0; i < node.childCount; i++) {
282
+ visit(node.child(i));
283
+ }
284
+ };
285
+ visit(tree.rootNode);
286
+ return edits;
287
+ }
288
+ /**
289
+ * Normalize blank lines between top-level declarations in source_file.
290
+ * Ensures exactly 1 blank line between consecutive top-level named children.
291
+ * Does NOT touch interior body spacing.
292
+ */
293
+ function normalizeTopLevelBlankLines(text, tree) {
294
+ const lines = text.split("\n");
295
+ const edits = [];
296
+ const root = tree.rootNode;
297
+ // Collect top-level named declaration children (skip comments and anonymous nodes)
298
+ const topDecls = [];
299
+ for (let i = 0; i < root.namedChildCount; i++) {
300
+ const child = root.namedChild(i);
301
+ if (child && formatRules_1.TOP_LEVEL_DECL_NODES.has(child.type)) {
302
+ topDecls.push({
303
+ startRow: child.startPosition.row,
304
+ endRow: child.endPosition.row,
305
+ });
306
+ }
307
+ }
308
+ // For each consecutive pair, ensure exactly 1 blank line between them
309
+ for (let i = 0; i < topDecls.length - 1; i++) {
310
+ const prevEnd = topDecls[i].endRow;
311
+ const nextStart = topDecls[i + 1].startRow;
312
+ const gap = nextStart - prevEnd - 1; // number of lines between them
313
+ if (gap === 1)
314
+ continue; // Already correct: exactly 1 blank line
315
+ // Safety: if any non-blank line exists in the gap (e.g., comments),
316
+ // skip this gap entirely to avoid deleting user content
317
+ if (gap > 1) {
318
+ let hasNonBlank = false;
319
+ for (let row = prevEnd + 1; row < nextStart; row++) {
320
+ if (lines[row].trim().length > 0) {
321
+ hasNonBlank = true;
322
+ break;
323
+ }
324
+ }
325
+ if (hasNonBlank)
326
+ continue;
327
+ }
328
+ if (gap < 1) {
329
+ // No blank line — insert at the END of the previous declaration's last line.
330
+ // This avoids conflicting with indent edits that target [nextStart, 0].
331
+ edits.push(node_1.TextEdit.insert(node_1.Position.create(prevEnd, lines[prevEnd].length), "\n"));
332
+ }
333
+ else {
334
+ // Too many blank lines (all blank) — remove extras (keep exactly 1)
335
+ const deleteStart = prevEnd + 2;
336
+ const deleteEnd = nextStart;
337
+ edits.push(node_1.TextEdit.del(node_1.Range.create(node_1.Position.create(deleteStart, 0), node_1.Position.create(deleteEnd, 0))));
338
+ }
339
+ }
340
+ return edits;
341
+ }
342
+ /**
343
+ * Collect line ranges of code_content and template_body nodes.
344
+ * Kept for backward compatibility with existing callers; the new
345
+ * formatter uses isVerbatimLine() from formatRules instead.
17
346
  */
18
347
  function getCodeContentRanges(tree) {
19
348
  const ranges = [];
@@ -48,49 +377,4 @@ function getCodeContentRanges(tree) {
48
377
  }
49
378
  return ranges;
50
379
  }
51
- function isInSkipRange(line, ranges) {
52
- return ranges.some((r) => line > r.startLine && line < r.endLine);
53
- }
54
- /**
55
- * Compute indent edits for an Umple document.
56
- *
57
- * @param text Document text
58
- * @param options Formatting options (tabSize, insertSpaces)
59
- * @param skipRanges Ranges to skip (embedded code content)
60
- */
61
- function computeIndentEdits(text, options, skipRanges) {
62
- const lines = text.split("\n");
63
- const edits = [];
64
- const unit = options.insertSpaces ? " ".repeat(options.tabSize) : "\t";
65
- let depth = 0;
66
- for (let i = 0; i < lines.length; i++) {
67
- const line = lines[i];
68
- const trimmed = line.trim();
69
- if (!trimmed || isInSkipRange(i, skipRanges))
70
- continue;
71
- let leadingCloses = 0;
72
- for (const ch of trimmed) {
73
- if (ch === "}")
74
- leadingCloses++;
75
- else
76
- break;
77
- }
78
- depth = Math.max(0, depth - leadingCloses);
79
- const expected = unit.repeat(depth);
80
- const currentIndent = line.substring(0, line.length - line.trimStart().length);
81
- if (currentIndent !== expected) {
82
- edits.push(node_1.TextEdit.replace(node_1.Range.create(node_1.Position.create(i, 0), node_1.Position.create(i, currentIndent.length)), expected));
83
- }
84
- let opens = 0;
85
- let closes = 0;
86
- for (const ch of trimmed) {
87
- if (ch === "{")
88
- opens++;
89
- else if (ch === "}")
90
- closes++;
91
- }
92
- depth = Math.max(0, depth + opens - (closes - leadingCloses));
93
- }
94
- return edits;
95
- }
96
380
  //# sourceMappingURL=formatter.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formatter.js","sourceRoot":"","sources":["../src/formatter.ts"],"names":[],"mappings":"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"}
@@ -18,5 +18,5 @@ import type { SymbolEntry, ReferenceLocation } from "./symbolTypes";
18
18
  * @param fileTreeMap filePath → cached parse tree (only files to search)
19
19
  * @param isAGraph className → parent class names (for inheritance checks)
20
20
  */
21
- export declare function searchReferences(declarations: SymbolEntry[], includeDeclaration: boolean, referencesQuery: Query, fileTreeMap: Map<string, Tree>, isAGraph: Map<string, string[]>): ReferenceLocation[];
21
+ export declare function searchReferences(declarations: SymbolEntry[], includeDeclaration: boolean, referencesQuery: Query, fileTreeMap: Map<string, Tree>, isAGraph: Map<string, string[]>, smReuseBindings?: Map<string, string>): ReferenceLocation[];
22
22
  export {};
@@ -21,13 +21,15 @@ const treeUtils_1 = require("./treeUtils");
21
21
  * @param fileTreeMap filePath → cached parse tree (only files to search)
22
22
  * @param isAGraph className → parent class names (for inheritance checks)
23
23
  */
24
- function searchReferences(declarations, includeDeclaration, referencesQuery, fileTreeMap, isAGraph) {
24
+ function searchReferences(declarations, includeDeclaration, referencesQuery, fileTreeMap, isAGraph, smReuseBindings) {
25
25
  if (declarations.length === 0)
26
26
  return [];
27
27
  const sym = declarations[0];
28
28
  const symName = sym.name;
29
29
  const symKind = sym.kind;
30
30
  const symContainer = sym.container;
31
+ // For shared state declarations, build the set of all valid containers
32
+ const validContainers = new Set(declarations.map((d) => d.container).filter(Boolean));
31
33
  // Collect definition positions for deduplication and includeDeclaration
32
34
  const defPositions = new Set();
33
35
  for (const d of declarations) {
@@ -66,16 +68,23 @@ function searchReferences(declarations, includeDeclaration, referencesQuery, fil
66
68
  const refKinds = parseCaptureKinds(capture.name);
67
69
  if (!refKinds || !refKinds.includes(symKind))
68
70
  continue;
69
- // For container-scoped kinds, verify enclosing scope matches
71
+ // For container-scoped kinds, verify enclosing scope matches any valid container
70
72
  if (isContainerScoped && symContainer) {
71
73
  const enclosing = resolveEnclosingScopeFromNode(node, symKind);
72
- if (enclosing && enclosing !== symContainer) {
73
- if (symKind === "state" || symKind === "statemachine") {
74
- continue;
75
- }
76
- const containerClass = symContainer;
77
- if (!isInheritanceChain(enclosing, containerClass, isAGraph)) {
78
- continue;
74
+ if (enclosing && !validContainers.has(enclosing)) {
75
+ // Check expanded matches: standalone SM, reuse bindings, inheritance
76
+ const isStandaloneSm = symKind === "statemachine" &&
77
+ Array.from(validContainers).some((c) => enclosing.endsWith(`.${c}`));
78
+ const isReusedSm = (symKind === "state" || symKind === "statemachine") &&
79
+ smReuseBindings &&
80
+ Array.from(validContainers).some((c) => smReuseBindings.get(enclosing) === c);
81
+ if (!isStandaloneSm && !isReusedSm) {
82
+ if (symKind === "state" || symKind === "statemachine") {
83
+ continue;
84
+ }
85
+ if (!isInheritanceChain(enclosing, symContainer, isAGraph)) {
86
+ continue;
87
+ }
79
88
  }
80
89
  }
81
90
  }
@@ -143,6 +152,23 @@ function resolveEnclosingScopeFromNode(node, targetKind) {
143
152
  if (current.type === "state_machine" || current.type === "statemachine_definition") {
144
153
  enclosingSM = current.childForFieldName("name")?.text ?? enclosingSM;
145
154
  }
155
+ // referenced_statemachine is an SM scope only for nodes inside its body
156
+ // (states, transitions), not for its name/definition fields.
157
+ // Check: is the original node inside a state/transition descendant of this node?
158
+ if (current.type === "referenced_statemachine") {
159
+ let isInBody = false;
160
+ let walk = node;
161
+ while (walk && walk.id !== current.id) {
162
+ if (walk.type === "state" || walk.type === "transition" || walk.type === "standalone_transition") {
163
+ isInBody = true;
164
+ break;
165
+ }
166
+ walk = walk.parent;
167
+ }
168
+ if (isInBody) {
169
+ enclosingSM = current.childForFieldName("name")?.text ?? enclosingSM;
170
+ }
171
+ }
146
172
  if (!enclosingClass &&
147
173
  ["class_definition", "trait_definition", "interface_definition", "association_class_definition"].includes(current.type)) {
148
174
  enclosingClass = current.childForFieldName("name")?.text;
@@ -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
@@ -93,8 +93,8 @@ function resolveSymbolAtPosition(si, docPath, content, line, col, reachableFiles
93
93
  break;
94
94
  }
95
95
  case "referenced_sm": {
96
- // referenced_statemachine: "door as status" — SM lives in the enclosing class.
97
- // Container is "ClassName.smName" (self-qualified SM container format).
96
+ // referenced_statemachine: "door as status" — try class-local SM first,
97
+ // then fall back to top-level standalone statemachine.
98
98
  const className = token.enclosingClass;
99
99
  const smContainer = `${className}.${token.word}`;
100
100
  symbols = si
@@ -104,6 +104,16 @@ function resolveSymbolAtPosition(si, docPath, content, line, col, reachableFiles
104
104
  container: smContainer,
105
105
  })
106
106
  .filter((s) => reachableFiles.has(path.normalize(s.file)));
107
+ // Fallback: top-level standalone statemachine (container = smName itself)
108
+ if (symbols.length === 0) {
109
+ symbols = si
110
+ .getSymbols({
111
+ name: token.word,
112
+ kind: ["statemachine"],
113
+ container: token.word,
114
+ })
115
+ .filter((s) => reachableFiles.has(path.normalize(s.file)));
116
+ }
107
117
  break;
108
118
  }
109
119
  case "toplevel_injection": {
@@ -127,6 +137,7 @@ function resolveSymbolAtPosition(si, docPath, content, line, col, reachableFiles
127
137
  const scopedKinds = token.kinds.filter((k) => containerKinds.has(k));
128
138
  const unscopedKinds = token.kinds.filter((k) => !containerKinds.has(k));
129
139
  if (scopedKinds.length > 0 && container) {
140
+ // Try local container first (includes inherited via isA)
130
141
  symbols = si
131
142
  .getSymbols({
132
143
  name: token.word,
@@ -135,6 +146,19 @@ function resolveSymbolAtPosition(si, docPath, content, line, col, reachableFiles
135
146
  inherited: true,
136
147
  })
137
148
  .filter((s) => reachableFiles.has(path.normalize(s.file)));
149
+ // Fallback: for reused SMs, try the base standalone SM container
150
+ if (symbols.length === 0) {
151
+ const candidates = si.getSmContainerCandidates(container);
152
+ for (let ci = 1; ci < candidates.length && symbols.length === 0; ci++) {
153
+ symbols = si
154
+ .getSymbols({
155
+ name: token.word,
156
+ kind: scopedKinds,
157
+ container: candidates[ci],
158
+ })
159
+ .filter((s) => reachableFiles.has(path.normalize(s.file)));
160
+ }
161
+ }
138
162
  }
139
163
  if (symbols.length === 0 && unscopedKinds.length > 0) {
140
164
  symbols = si
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../src/resolver.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAmBH,0DA+NC;AAhPD,6BAA6B;AAY7B;;;;GAIG;AACH,SAAgB,uBAAuB,CACrC,EAAe,EACf,OAAe,EACf,OAAe,EACf,IAAY,EACZ,GAAW,EACX,cAA2B;IAK3B,MAAM,KAAK,GAAG,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;IACjE,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,sEAAsE;IACtE,IAAI,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;IAEhD,MAAM,cAAc,GAAG,IAAI,GAAG,CAAS;QACrC,WAAW;QACX,OAAO;QACP,QAAQ;QACR,UAAU;QACV,OAAO;QACP,cAAc;QACd,WAAW;KACZ,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAChE,IAAI,SAA6B,CAAC;IAClC,IAAI,QAAQ,EAAE,CAAC;QACb,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,IAAI,CAAC,KAAK,cAAc,CAAC;YACxE,CAAC,CAAC,KAAK,CAAC,qBAAqB;YAC7B,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC;IAC3B,CAAC;IAED,2EAA2E;IAE3E,IAAI,OAAO,GAAkB,EAAE,CAAC;IAEhC,QAAQ,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC3B,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,8DAA8D;YAC9D,4DAA4D;YAC5D,MAAM,WAAW,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YAC/D,OAAO,GAAG,EAAE;iBACT,UAAU,CAAC;gBACV,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,CAAC,cAAc,CAAC;gBACtB,SAAS,EAAE,WAAW;aACvB,CAAC;iBACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7D,MAAM;QACR,CAAC;QAED,KAAK,gBAAgB,CAAC,CAAC,CAAC;YACtB,gEAAgE;YAChE,4EAA4E;YAC5E,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;YACrD,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,WAAW,GAAG,GAAG,KAAK,CAAC,cAAc,IAAI,MAAM,EAAE,CAAC;YAExD,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,GAAG,EAAE;qBACT,UAAU,CAAC;oBACV,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,CAAC,cAAc,CAAC;oBACtB,SAAS,EAAE,WAAW;iBACvB,CAAC;qBACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,EAAE;qBACT,UAAU,CAAC;oBACV,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,IAAI,EAAE,CAAC,OAAO,CAAC;oBACf,SAAS,EAAE,WAAW;iBACvB,CAAC;qBACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAE7D,8EAA8E;gBAC9E,MAAM,kBAAkB,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;gBAC/D,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACpC,0DAA0D;oBAC1D,OAAO,GAAG,OAAO,CAAC,MAAM,CACtB,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,CAChD,CAAC;gBACJ,CAAC;qBAAM,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9B,MAAM,QAAQ,GAAG,EAAE,CAAC,kBAAkB,CACpC,kBAAkB,EAClB,KAAK,CAAC,IAAI,EACV,WAAW,EACX,cAAc,CACf,CAAC;oBACF,IAAI,QAAQ;wBAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC;gBACrC,CAAC;YACH,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,eAAe,CAAC,CAAC,CAAC;YACrB,wEAAwE;YACxE,uDAAuD;YACvD,MAAM,SAAS,GAAG,KAAK,CAAC,cAAe,CAAC;YACxC,MAAM,WAAW,GAAG,GAAG,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACjD,OAAO,GAAG,EAAE;iBACT,UAAU,CAAC;gBACV,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,CAAC,cAAc,CAAC;gBACtB,SAAS,EAAE,WAAW;aACvB,CAAC;iBACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7D,0EAA0E;YAC1E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,GAAG,EAAE;qBACT,UAAU,CAAC;oBACV,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,IAAI,EAAE,CAAC,cAAc,CAAC;oBACtB,SAAS,EAAE,KAAK,CAAC,IAAI;iBACtB,CAAC;qBACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC;YACD,MAAM;QACR,CAAC;QAED,KAAK,oBAAoB,CAAC,CAAC,CAAC;YAC1B,4DAA4D;YAC5D,sEAAsE;YACtE,sEAAsE;YACtE,OAAO,GAAG,EAAE;iBACT,UAAU,CAAC;gBACV,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,IAAI,EAAE,CAAC,QAAQ,CAAC;gBAChB,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,WAAW;aACrC,CAAC;iBACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7D,MAAM;QACR,CAAC;QAED,KAAK,yBAAyB,CAAC;QAC/B,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,kEAAkE;YAClE,2EAA2E;YAC3E,kEAAkE;YAClE,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACrE,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAExE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,SAAS,EAAE,CAAC;gBACxC,yDAAyD;gBACzD,OAAO,GAAG,EAAE;qBACT,UAAU,CAAC;oBACV,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,IAAI,EAAE,WAAW;oBACjB,SAAS;oBACT,SAAS,EAAE,IAAI;iBAChB,CAAC;qBACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAE7D,iEAAiE;gBACjE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzB,MAAM,UAAU,GAAG,EAAE,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;oBAC1D,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,UAAU,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,CAAC;wBACtE,OAAO,GAAG,EAAE;6BACT,UAAU,CAAC;4BACV,IAAI,EAAE,KAAK,CAAC,IAAI;4BAChB,IAAI,EAAE,WAAW;4BACjB,SAAS,EAAE,UAAU,CAAC,EAAE,CAAC;yBAC1B,CAAC;6BACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;oBAC/D,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrD,OAAO,GAAG,EAAE;qBACT,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;qBACrD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC/D,CAAC;YACD,MAAM;QACR,CAAC;IACH,CAAC;IAED,2EAA2E;IAE3E,qEAAqE;IACrE,IACE,KAAK,CAAC,cAAc;QACpB,KAAK,CAAC,cAAc,CAAC,SAAS,GAAG,CAAC;QAClC,OAAO,CAAC,MAAM,GAAG,CAAC;QAClB,KAAK,CAAC,qBAAqB,EAC3B,CAAC;QACD,MAAM,aAAa,GAAG,KAAK,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,CAC5D,CAAC,EACD,KAAK,CAAC,cAAc,CAAC,SAAS,CAC/B,CAAC;QACF,MAAM,QAAQ,GAAG,EAAE,CAAC,kBAAkB,CACpC,aAAa,EACb,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,qBAAqB,EAC3B,cAAc,CACf,CAAC;QACF,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,IACE,KAAK,CAAC,kBAAkB;QACxB,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC;QAC9B,OAAO,CAAC,MAAM,GAAG,CAAC,EAClB,CAAC;QACD,MAAM,OAAO,GAAG,KAAK,CAAC,kBAAkB,CAAC,cAAc,CAAC;QACxD,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAC7B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,IAAI,KAAK,OAAO;YAClB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM;YACrC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,CACpD,CAAC;QACF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,OAAO,GAAG,QAAQ,CAAC;QACrB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;AAC5B,CAAC"}