umple-lsp-server 0.2.4 → 0.2.6
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/diagramNavigation.d.ts +25 -0
- package/out/diagramNavigation.js +193 -0
- package/out/diagramNavigation.js.map +1 -0
- package/out/diagramRequests.d.ts +15 -0
- package/out/diagramRequests.js +66 -0
- package/out/diagramRequests.js.map +1 -0
- package/out/formatRules.js +3 -0
- package/out/formatRules.js.map +1 -1
- package/out/formatter.d.ts +11 -0
- package/out/formatter.js +101 -0
- package/out/formatter.js.map +1 -1
- package/out/referenceSearch.d.ts +1 -1
- package/out/referenceSearch.js +35 -9
- package/out/referenceSearch.js.map +1 -1
- package/out/resolver.js +26 -2
- package/out/resolver.js.map +1 -1
- package/out/server.js +55 -11
- package/out/server.js.map +1 -1
- package/out/symbolIndex.d.ts +27 -0
- package/out/symbolIndex.js +126 -2
- package/out/symbolIndex.js.map +1 -1
- package/out/treeUtils.js +3 -2
- package/out/treeUtils.js.map +1 -1
- package/package.json +1 -1
- package/tree-sitter-umple.wasm +0 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Diagram-specific navigation: resolve click targets from SVG diagram payloads.
|
|
3
|
+
* Owns the AST walking and symbol lookup logic for diagram click-to-select.
|
|
4
|
+
* Depends on SymbolIndex for symbol queries and tree parsing.
|
|
5
|
+
*/
|
|
6
|
+
import { SymbolIndex, SymbolEntry } from "./symbolIndex";
|
|
7
|
+
type LocationRange = {
|
|
8
|
+
line: number;
|
|
9
|
+
column: number;
|
|
10
|
+
endLine: number;
|
|
11
|
+
endColumn: number;
|
|
12
|
+
};
|
|
13
|
+
/**
|
|
14
|
+
* Resolve a state location from a diagram click payload.
|
|
15
|
+
* Uses the symbol index for path-aware state lookup.
|
|
16
|
+
* Scoped to the clicked file.
|
|
17
|
+
*/
|
|
18
|
+
export declare function resolveStateLocation(si: SymbolIndex, filePath: string, className: string | undefined, stateMachine: string, statePath: string[]): SymbolEntry | undefined;
|
|
19
|
+
/**
|
|
20
|
+
* Resolve a transition location from a diagram click payload.
|
|
21
|
+
* Path-aware: navigates class → SM → source state path before searching transitions.
|
|
22
|
+
* Uses tree-sitter tree walk (transitions are not in the symbol index).
|
|
23
|
+
*/
|
|
24
|
+
export declare function resolveTransitionLocation(si: SymbolIndex, filePath: string, content: string, className: string | undefined, stateMachine: string, sourcePath: string[], event: string, targetPath: string[], guard?: string): LocationRange | undefined;
|
|
25
|
+
export {};
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Diagram-specific navigation: resolve click targets from SVG diagram payloads.
|
|
4
|
+
* Owns the AST walking and symbol lookup logic for diagram click-to-select.
|
|
5
|
+
* Depends on SymbolIndex for symbol queries and tree parsing.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.resolveStateLocation = resolveStateLocation;
|
|
9
|
+
exports.resolveTransitionLocation = resolveTransitionLocation;
|
|
10
|
+
const path = require("path");
|
|
11
|
+
/**
|
|
12
|
+
* Resolve a state location from a diagram click payload.
|
|
13
|
+
* Uses the symbol index for path-aware state lookup.
|
|
14
|
+
* Scoped to the clicked file.
|
|
15
|
+
*/
|
|
16
|
+
function resolveStateLocation(si, filePath, className, stateMachine, statePath) {
|
|
17
|
+
const smContainer = className
|
|
18
|
+
? `${className}.${stateMachine}`
|
|
19
|
+
: stateMachine;
|
|
20
|
+
const targetName = statePath[statePath.length - 1];
|
|
21
|
+
const preceding = statePath.slice(0, -1);
|
|
22
|
+
const reachableFiles = new Set([path.normalize(filePath)]);
|
|
23
|
+
// Try each candidate container in order (alias-local first, then base fallback)
|
|
24
|
+
const containers = si.getSmContainerCandidates(smContainer);
|
|
25
|
+
for (const container of containers) {
|
|
26
|
+
let symbol;
|
|
27
|
+
if (preceding.length > 0) {
|
|
28
|
+
symbol = si.resolveStateInPath(preceding, targetName, container, reachableFiles);
|
|
29
|
+
}
|
|
30
|
+
if (!symbol) {
|
|
31
|
+
const candidates = si
|
|
32
|
+
.getSymbols({
|
|
33
|
+
name: targetName,
|
|
34
|
+
kind: "state",
|
|
35
|
+
container,
|
|
36
|
+
})
|
|
37
|
+
.filter((s) => reachableFiles.has(path.normalize(s.file)));
|
|
38
|
+
if (preceding.length === 0) {
|
|
39
|
+
symbol = candidates[0];
|
|
40
|
+
}
|
|
41
|
+
else {
|
|
42
|
+
const targetPath = [...preceding, targetName];
|
|
43
|
+
symbol = candidates.find((s) => s.statePath &&
|
|
44
|
+
s.statePath.length >= targetPath.length &&
|
|
45
|
+
targetPath.every((seg, i) => s.statePath[s.statePath.length - targetPath.length + i] === seg));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (symbol)
|
|
49
|
+
return symbol;
|
|
50
|
+
}
|
|
51
|
+
return undefined;
|
|
52
|
+
}
|
|
53
|
+
// ── Transition AST walking ───────────────────────────────────────────────────
|
|
54
|
+
/**
|
|
55
|
+
* Find a named child node of specific types within a parent node.
|
|
56
|
+
* Recurses into class_definition and source_file nodes.
|
|
57
|
+
*/
|
|
58
|
+
function findNamedChild(parent, types, name) {
|
|
59
|
+
for (let i = 0; i < parent.childCount; i++) {
|
|
60
|
+
const child = parent.child(i);
|
|
61
|
+
if (types.includes(child.type)) {
|
|
62
|
+
const nameNode = child.childForFieldName("name");
|
|
63
|
+
if (nameNode && nameNode.text === name)
|
|
64
|
+
return child;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
for (let i = 0; i < parent.childCount; i++) {
|
|
68
|
+
const child = parent.child(i);
|
|
69
|
+
if (child.type === "class_definition" || child.type === "source_file" || child.type === "statemachine_definition") {
|
|
70
|
+
const found = findNamedChild(child, types, name);
|
|
71
|
+
if (found)
|
|
72
|
+
return found;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return null;
|
|
76
|
+
}
|
|
77
|
+
/** SM node types: inline, reused, and standalone definitions. */
|
|
78
|
+
const SM_NODE_TYPES = ["state_machine", "referenced_statemachine", "statemachine_definition"];
|
|
79
|
+
/**
|
|
80
|
+
* Resolve a transition location from a diagram click payload.
|
|
81
|
+
* Path-aware: navigates class → SM → source state path before searching transitions.
|
|
82
|
+
* Uses tree-sitter tree walk (transitions are not in the symbol index).
|
|
83
|
+
*/
|
|
84
|
+
function resolveTransitionLocation(si, filePath, content, className, stateMachine, sourcePath, event, targetPath, guard) {
|
|
85
|
+
const tree = si.parse(content);
|
|
86
|
+
if (!tree)
|
|
87
|
+
return undefined;
|
|
88
|
+
const targetName = targetPath.join(".");
|
|
89
|
+
// Step 1: Find the class node (if className provided)
|
|
90
|
+
let classScope = tree.rootNode;
|
|
91
|
+
if (className) {
|
|
92
|
+
const classNode = findNamedChild(classScope, ["class_definition"], className);
|
|
93
|
+
if (!classNode)
|
|
94
|
+
return undefined;
|
|
95
|
+
classScope = classNode;
|
|
96
|
+
}
|
|
97
|
+
// Step 2: Find the state machine node (state_machine or referenced_statemachine)
|
|
98
|
+
const smNode = findNamedChild(classScope, SM_NODE_TYPES, stateMachine);
|
|
99
|
+
if (!smNode)
|
|
100
|
+
return undefined;
|
|
101
|
+
// Try to find the transition in the alias SM first, then fall back to base
|
|
102
|
+
const result = findTransitionInSm(smNode, sourcePath, event, targetName, guard);
|
|
103
|
+
if (result)
|
|
104
|
+
return result;
|
|
105
|
+
// Fallback: if this is a referenced_statemachine, try the base standalone SM
|
|
106
|
+
if (smNode.type === "referenced_statemachine") {
|
|
107
|
+
const baseName = smNode.childForFieldName("definition")?.text;
|
|
108
|
+
if (baseName) {
|
|
109
|
+
// Search at file root for standalone statemachine_definition
|
|
110
|
+
const baseSmNode = findNamedChild(tree.rootNode, ["statemachine_definition"], baseName);
|
|
111
|
+
if (baseSmNode) {
|
|
112
|
+
return findTransitionInSm(baseSmNode, sourcePath, event, targetName, guard);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return undefined;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Walk the source state path within an SM node and find a matching transition.
|
|
120
|
+
*/
|
|
121
|
+
function findTransitionInSm(smNode, sourcePath, event, targetName, guard) {
|
|
122
|
+
// First: check standalone_transition children at SM scope.
|
|
123
|
+
// These live directly under the SM node (not inside a state body) and encode
|
|
124
|
+
// source state as from_state field: "event fromState -> toState;"
|
|
125
|
+
const fromState = sourcePath.length > 0 ? sourcePath[sourcePath.length - 1] : undefined;
|
|
126
|
+
for (let i = 0; i < smNode.childCount; i++) {
|
|
127
|
+
const child = smNode.child(i);
|
|
128
|
+
if (child.type === "standalone_transition") {
|
|
129
|
+
const eventNode = child.childForFieldName("event");
|
|
130
|
+
const fromNode = child.childForFieldName("from_state");
|
|
131
|
+
const toNode = child.childForFieldName("to_state");
|
|
132
|
+
const eventMatch = eventNode ? eventNode.text === event : !event;
|
|
133
|
+
const fromMatch = fromNode ? fromNode.text === fromState : !fromState;
|
|
134
|
+
const targetMatch = toNode ? toNode.text === targetName : !targetName;
|
|
135
|
+
if (eventMatch && fromMatch && targetMatch) {
|
|
136
|
+
return {
|
|
137
|
+
line: child.startPosition.row,
|
|
138
|
+
column: child.startPosition.column,
|
|
139
|
+
endLine: child.endPosition.row,
|
|
140
|
+
endColumn: child.endPosition.column,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
// Then: walk down the source state path for regular nested transitions
|
|
146
|
+
let scope = smNode;
|
|
147
|
+
for (const seg of sourcePath) {
|
|
148
|
+
const stateNode = findNamedChild(scope, ["state"], seg);
|
|
149
|
+
if (!stateNode)
|
|
150
|
+
return undefined;
|
|
151
|
+
scope = stateNode;
|
|
152
|
+
}
|
|
153
|
+
// Find the matching transition (regular or standalone within state)
|
|
154
|
+
for (let i = 0; i < scope.childCount; i++) {
|
|
155
|
+
const child = scope.child(i);
|
|
156
|
+
if (child.type === "transition") {
|
|
157
|
+
const eventNode = child.childForFieldName("event");
|
|
158
|
+
const targetNode = child.childForFieldName("target");
|
|
159
|
+
const eventMatch = eventNode ? eventNode.text === event : !event;
|
|
160
|
+
const targetMatch = targetNode ? targetNode.text === targetName : !targetName;
|
|
161
|
+
let guardMatch = true;
|
|
162
|
+
if (guard) {
|
|
163
|
+
const guardNode = child.children.find((c) => c.type === "guard");
|
|
164
|
+
guardMatch = guardNode ? guardNode.text.includes(guard) : false;
|
|
165
|
+
}
|
|
166
|
+
if (eventMatch && targetMatch && guardMatch) {
|
|
167
|
+
return {
|
|
168
|
+
line: child.startPosition.row,
|
|
169
|
+
column: child.startPosition.column,
|
|
170
|
+
endLine: child.endPosition.row,
|
|
171
|
+
endColumn: child.endPosition.column,
|
|
172
|
+
};
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
// standalone_transition: "event fromState -> toState;"
|
|
176
|
+
if (child.type === "standalone_transition") {
|
|
177
|
+
const eventNode = child.childForFieldName("event");
|
|
178
|
+
const toNode = child.childForFieldName("to_state");
|
|
179
|
+
const eventMatch = eventNode ? eventNode.text === event : !event;
|
|
180
|
+
const targetMatch = toNode ? toNode.text === targetName : !targetName;
|
|
181
|
+
if (eventMatch && targetMatch) {
|
|
182
|
+
return {
|
|
183
|
+
line: child.startPosition.row,
|
|
184
|
+
column: child.startPosition.column,
|
|
185
|
+
endLine: child.endPosition.row,
|
|
186
|
+
endColumn: child.endPosition.column,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return undefined;
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=diagramNavigation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagramNavigation.js","sourceRoot":"","sources":["../src/diagramNavigation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Custom LSP request handlers for diagram click-to-select.
|
|
3
|
+
* Registers umple/resolveStateLocation and umple/resolveTransitionLocation.
|
|
4
|
+
*/
|
|
5
|
+
import { Connection } from "vscode-languageserver/node";
|
|
6
|
+
import { TextDocument } from "vscode-languageserver-textdocument";
|
|
7
|
+
import { SymbolIndex } from "./symbolIndex";
|
|
8
|
+
type DiagramDeps = {
|
|
9
|
+
symbolIndex: SymbolIndex;
|
|
10
|
+
isSymbolIndexReady: () => boolean;
|
|
11
|
+
getDocument: (uri: string) => TextDocument | undefined;
|
|
12
|
+
getDocumentFilePath: (doc: TextDocument) => string | null;
|
|
13
|
+
};
|
|
14
|
+
export declare function registerDiagramRequests(connection: Connection, deps: DiagramDeps): void;
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Custom LSP request handlers for diagram click-to-select.
|
|
4
|
+
* Registers umple/resolveStateLocation and umple/resolveTransitionLocation.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.registerDiagramRequests = registerDiagramRequests;
|
|
8
|
+
const fs = require("fs");
|
|
9
|
+
const url_1 = require("url");
|
|
10
|
+
const diagramNavigation_1 = require("./diagramNavigation");
|
|
11
|
+
function registerDiagramRequests(connection, deps) {
|
|
12
|
+
// Resolve a state location from a diagram click payload
|
|
13
|
+
connection.onRequest("umple/resolveStateLocation", async (params) => {
|
|
14
|
+
if (!deps.isSymbolIndexReady() || !params.statePath.length)
|
|
15
|
+
return null;
|
|
16
|
+
const filePath = deps.getDocumentFilePath({
|
|
17
|
+
uri: params.uri,
|
|
18
|
+
});
|
|
19
|
+
if (!filePath)
|
|
20
|
+
return null;
|
|
21
|
+
// Ensure the file is indexed
|
|
22
|
+
const doc = deps.getDocument(params.uri);
|
|
23
|
+
if (doc) {
|
|
24
|
+
deps.symbolIndex.indexFile(filePath, doc.getText());
|
|
25
|
+
}
|
|
26
|
+
const symbol = (0, diagramNavigation_1.resolveStateLocation)(deps.symbolIndex, filePath, params.className, params.stateMachine, params.statePath);
|
|
27
|
+
if (!symbol)
|
|
28
|
+
return null;
|
|
29
|
+
return {
|
|
30
|
+
uri: (0, url_1.pathToFileURL)(symbol.file).toString(),
|
|
31
|
+
range: {
|
|
32
|
+
start: { line: symbol.line, character: symbol.column },
|
|
33
|
+
end: { line: symbol.endLine, character: symbol.endColumn },
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
});
|
|
37
|
+
// Resolve a transition location from a diagram click payload
|
|
38
|
+
connection.onRequest("umple/resolveTransitionLocation", async (params) => {
|
|
39
|
+
if (!deps.isSymbolIndexReady() || !params.event)
|
|
40
|
+
return null;
|
|
41
|
+
const filePath = deps.getDocumentFilePath({
|
|
42
|
+
uri: params.uri,
|
|
43
|
+
});
|
|
44
|
+
if (!filePath)
|
|
45
|
+
return null;
|
|
46
|
+
const doc = deps.getDocument(params.uri);
|
|
47
|
+
const content = doc
|
|
48
|
+
? doc.getText()
|
|
49
|
+
: fs.existsSync(filePath)
|
|
50
|
+
? fs.readFileSync(filePath, "utf8")
|
|
51
|
+
: null;
|
|
52
|
+
if (!content)
|
|
53
|
+
return null;
|
|
54
|
+
const result = (0, diagramNavigation_1.resolveTransitionLocation)(deps.symbolIndex, filePath, content, params.className, params.stateMachine, params.sourcePath, params.event, params.targetPath, params.guard);
|
|
55
|
+
if (!result)
|
|
56
|
+
return null;
|
|
57
|
+
return {
|
|
58
|
+
uri: (0, url_1.pathToFileURL)(filePath).toString(),
|
|
59
|
+
range: {
|
|
60
|
+
start: { line: result.line, character: result.column },
|
|
61
|
+
end: { line: result.endLine, character: result.endColumn },
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=diagramRequests.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagramRequests.js","sourceRoot":"","sources":["../src/diagramRequests.ts"],"names":[],"mappings":"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"}
|
package/out/formatRules.js
CHANGED
|
@@ -13,6 +13,7 @@ exports.computeStructuralDepth = computeStructuralDepth;
|
|
|
13
13
|
const TreeSitter = require("web-tree-sitter");
|
|
14
14
|
/** Node types whose body content gets +1 indent level. */
|
|
15
15
|
exports.INDENT_NODES = new Set([
|
|
16
|
+
"requirement_definition",
|
|
16
17
|
"class_definition",
|
|
17
18
|
"interface_definition",
|
|
18
19
|
"trait_definition",
|
|
@@ -22,8 +23,10 @@ exports.INDENT_NODES = new Set([
|
|
|
22
23
|
"mixset_definition",
|
|
23
24
|
"state_machine",
|
|
24
25
|
"statemachine_definition",
|
|
26
|
+
"referenced_statemachine",
|
|
25
27
|
"state",
|
|
26
28
|
"before_after",
|
|
29
|
+
"trace_statement",
|
|
27
30
|
"toplevel_code_injection",
|
|
28
31
|
"filter_definition",
|
|
29
32
|
"method_declaration",
|
package/out/formatRules.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatRules.js","sourceRoot":"","sources":["../src/formatRules.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;
|
|
1
|
+
{"version":3,"file":"formatRules.js","sourceRoot":"","sources":["../src/formatRules.ts"],"names":[],"mappings":"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"}
|
package/out/formatter.d.ts
CHANGED
|
@@ -41,6 +41,17 @@ export declare function fixAssociationSpacing(text: string, tree: Tree): TextEdi
|
|
|
41
41
|
* Does NOT touch interior body spacing.
|
|
42
42
|
*/
|
|
43
43
|
export declare function normalizeTopLevelBlankLines(text: string, tree: Tree): TextEdit[];
|
|
44
|
+
/**
|
|
45
|
+
* Reindent embedded code_content blocks to match their structural context.
|
|
46
|
+
*
|
|
47
|
+
* Preserves internal relative indentation but shifts the whole block so that
|
|
48
|
+
* the least-indented line aligns with the expected base indent (parent depth + 1).
|
|
49
|
+
* Only handles code_content (not template_body, which is truly opaque).
|
|
50
|
+
*/
|
|
51
|
+
export declare function reindentEmbeddedCode(text: string, options: {
|
|
52
|
+
tabSize: number;
|
|
53
|
+
insertSpaces: boolean;
|
|
54
|
+
}, tree: Tree): TextEdit[];
|
|
44
55
|
/**
|
|
45
56
|
* Collect line ranges of code_content and template_body nodes.
|
|
46
57
|
* Kept for backward compatibility with existing callers; the new
|
package/out/formatter.js
CHANGED
|
@@ -12,6 +12,7 @@ exports.computeIndentEdits = computeIndentEdits;
|
|
|
12
12
|
exports.fixTransitionSpacing = fixTransitionSpacing;
|
|
13
13
|
exports.fixAssociationSpacing = fixAssociationSpacing;
|
|
14
14
|
exports.normalizeTopLevelBlankLines = normalizeTopLevelBlankLines;
|
|
15
|
+
exports.reindentEmbeddedCode = reindentEmbeddedCode;
|
|
15
16
|
exports.getCodeContentRanges = getCodeContentRanges;
|
|
16
17
|
const node_1 = require("vscode-languageserver/node");
|
|
17
18
|
const formatRules_1 = require("./formatRules");
|
|
@@ -339,6 +340,106 @@ function normalizeTopLevelBlankLines(text, tree) {
|
|
|
339
340
|
}
|
|
340
341
|
return edits;
|
|
341
342
|
}
|
|
343
|
+
// ── Phase 3: Embedded code reindentation ────────────────────────────────────
|
|
344
|
+
/**
|
|
345
|
+
* Reindent embedded code_content blocks to match their structural context.
|
|
346
|
+
*
|
|
347
|
+
* Preserves internal relative indentation but shifts the whole block so that
|
|
348
|
+
* the least-indented line aligns with the expected base indent (parent depth + 1).
|
|
349
|
+
* Only handles code_content (not template_body, which is truly opaque).
|
|
350
|
+
*/
|
|
351
|
+
function reindentEmbeddedCode(text, options, tree) {
|
|
352
|
+
const lines = text.split("\n");
|
|
353
|
+
const edits = [];
|
|
354
|
+
const unit = options.insertSpaces ? " ".repeat(options.tabSize) : "\t";
|
|
355
|
+
// Collect all code_content nodes
|
|
356
|
+
const codeNodes = [];
|
|
357
|
+
function walk(node) {
|
|
358
|
+
if (node.type === "code_content") {
|
|
359
|
+
codeNodes.push(node);
|
|
360
|
+
return; // don't recurse into code_content children
|
|
361
|
+
}
|
|
362
|
+
for (let i = 0; i < node.childCount; i++) {
|
|
363
|
+
walk(node.child(i));
|
|
364
|
+
}
|
|
365
|
+
}
|
|
366
|
+
walk(tree.rootNode);
|
|
367
|
+
for (const codeNode of codeNodes) {
|
|
368
|
+
const startRow = codeNode.startPosition.row;
|
|
369
|
+
const endRow = codeNode.endPosition.row;
|
|
370
|
+
// Only process lines strictly inside the code_content (not boundary lines)
|
|
371
|
+
// Boundary lines (with `{` and `}`) are handled by computeIndentEdits
|
|
372
|
+
const firstInterior = startRow + 1;
|
|
373
|
+
const lastInterior = endRow - 1;
|
|
374
|
+
if (firstInterior > lastInterior)
|
|
375
|
+
continue; // single-line code_content
|
|
376
|
+
// Compute expected base indent: the structural depth at the opening `{` line + 1
|
|
377
|
+
const parentNode = codeNode.parent;
|
|
378
|
+
if (!parentNode)
|
|
379
|
+
continue;
|
|
380
|
+
const parentRow = parentNode.startPosition.row;
|
|
381
|
+
const baseDepth = (0, formatRules_1.computeStructuralDepth)(tree, parentRow, 0);
|
|
382
|
+
// code_content is inside the block, so it gets baseDepth (which already includes the parent)
|
|
383
|
+
// But computeStructuralDepth at parentRow doesn't count the parent itself, so add 1
|
|
384
|
+
// Actually: the parent IS in INDENT_NODES, and computeStructuralDepth counts ancestors whose
|
|
385
|
+
// startRow < line. At parentRow, the parent's own node is NOT counted (startRow === line).
|
|
386
|
+
// So we need: depth at a line strictly inside the parent = baseDepth + 1 for the parent block.
|
|
387
|
+
// But we're computing depth at parentRow, so we get the depth ABOVE the parent.
|
|
388
|
+
// The expected indent for code inside the block = depth_above_parent + 1.
|
|
389
|
+
const expectedDepth = baseDepth + 1;
|
|
390
|
+
const expectedIndentCols = expectedDepth * options.tabSize;
|
|
391
|
+
// Find minimum indent of non-empty lines in the interior
|
|
392
|
+
let minIndent = Infinity;
|
|
393
|
+
const interiorLines = [];
|
|
394
|
+
for (let row = firstInterior; row <= lastInterior; row++) {
|
|
395
|
+
const line = lines[row];
|
|
396
|
+
if (!line || !line.trim()) {
|
|
397
|
+
interiorLines.push({ row, indentCols: 0, indentChars: 0, empty: true });
|
|
398
|
+
continue;
|
|
399
|
+
}
|
|
400
|
+
const indentChars = line.length - line.trimStart().length;
|
|
401
|
+
const indentText = line.substring(0, indentChars);
|
|
402
|
+
const indentCols = measureIndentColumns(indentText, options.tabSize);
|
|
403
|
+
interiorLines.push({ row, indentCols, indentChars, empty: false });
|
|
404
|
+
if (indentCols < minIndent)
|
|
405
|
+
minIndent = indentCols;
|
|
406
|
+
}
|
|
407
|
+
if (minIndent === Infinity)
|
|
408
|
+
continue; // all empty
|
|
409
|
+
// Compute shift needed
|
|
410
|
+
if (minIndent === expectedIndentCols)
|
|
411
|
+
continue; // already correct
|
|
412
|
+
// Apply shift to each non-empty line
|
|
413
|
+
for (const entry of interiorLines) {
|
|
414
|
+
if (entry.empty)
|
|
415
|
+
continue;
|
|
416
|
+
const line = lines[entry.row];
|
|
417
|
+
const relativeIndentCols = entry.indentCols - minIndent;
|
|
418
|
+
const newIndent = buildIndent(expectedIndentCols + relativeIndentCols, options);
|
|
419
|
+
const oldIndent = line.substring(0, entry.indentChars);
|
|
420
|
+
if (oldIndent !== newIndent) {
|
|
421
|
+
edits.push(node_1.TextEdit.replace(node_1.Range.create(node_1.Position.create(entry.row, 0), node_1.Position.create(entry.row, entry.indentChars)), newIndent));
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
return edits;
|
|
426
|
+
}
|
|
427
|
+
function measureIndentColumns(indent, tabSize) {
|
|
428
|
+
let cols = 0;
|
|
429
|
+
for (const ch of indent) {
|
|
430
|
+
cols += ch === "\t" ? tabSize : 1;
|
|
431
|
+
}
|
|
432
|
+
return cols;
|
|
433
|
+
}
|
|
434
|
+
function buildIndent(columns, options) {
|
|
435
|
+
if (columns <= 0)
|
|
436
|
+
return "";
|
|
437
|
+
if (options.insertSpaces)
|
|
438
|
+
return " ".repeat(columns);
|
|
439
|
+
const tabs = Math.floor(columns / options.tabSize);
|
|
440
|
+
const spaces = columns % options.tabSize;
|
|
441
|
+
return "\t".repeat(tabs) + " ".repeat(spaces);
|
|
442
|
+
}
|
|
342
443
|
/**
|
|
343
444
|
* Collect line ranges of code_content and template_body nodes.
|
|
344
445
|
* Kept for backward compatibility with existing callers; the new
|
package/out/formatter.js.map
CHANGED
|
@@ -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":";AAAA;;;;;;GAMG;;AAgFH,kDA+DC;AAUD,gDAoDC;AAWD,oDA+DC;AASD,sDA8DC;AAOD,kEAkEC;AAWD,oDA2FC;AA2BD,oDAmCC;AAzkBD,qDAIoC;AACpC,+CAA6F;AAE7F,iEAAiE;AACjE,MAAM,UAAU,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAG9C,+EAA+E;AAE/E,yEAAyE;AACzE,MAAM,0BAA0B,GAAG,IAAI,GAAG,CAAC;IACzC,YAAY,EAAE,uBAAuB;IACrC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,YAAY;CAC5B,CAAC,CAAC;AAEH,iFAAiF;AACjF,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAAC;IAC3C,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,WAAW;IAC3D,cAAc,EAAE,eAAe;CAChC,CAAC,CAAC;AAEH;;GAEG;AACH,SAAS,mBAAmB,CAAC,IAAS,EAAE,KAAkB;IACxD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QACvC,IAAI,mBAAmB,CAAC,KAAK,EAAE,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;IACrD,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAS,sBAAsB,CAAC,SAAc;IAC5C,sBAAsB;IACtB,IAAI,SAAS,CAAC,aAAa,CAAC,GAAG,KAAK,SAAS,CAAC,WAAW,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IAE5E,iDAAiD;IACjD,IAAI,aAAa,GAAG,KAAK,CAAC;IAC1B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QAExB,IAAI,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACzC,IAAI,IAAI,KAAK,YAAY,IAAI,IAAI,KAAK,uBAAuB,EAAE,CAAC;gBAC9D,aAAa,GAAG,IAAI,CAAC;YACvB,CAAC;YACD,SAAS;QACX,CAAC;QAED,wEAAwE;QACxE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC,aAAa;QAAE,OAAO,KAAK,CAAC;IAEjC,qEAAqE;IACrE,IAAI,mBAAmB,CAAC,SAAS,EAAE,4BAA4B,CAAC,EAAE,CAAC;QACjE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,wBAAwB;IACxB,IAAI,SAAS,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAErC,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,IAAY,EAAE,IAAU;IAC1D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE/B,0EAA0E;IAC1E,MAAM,QAAQ,GAAU,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,CAAC,IAAS,EAAE,EAAE;QAC1B,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,IAAI,sBAAsB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1D,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpB,OAAO,CAAC,sCAAsC;QAChD,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;IACF,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAErB,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,8DAA8D;IAC9D,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,CAAC,aAAa,CAAC,GAAG;QAC/D,CAAC,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAEnD,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,KAAK,MAAM,SAAS,IAAI,QAAQ,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC;QACxC,MAAM,QAAQ,GAAG,SAAS,CAAC,aAAa,CAAC,MAAM,CAAC;QAChD,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC;QAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAElD,sBAAsB;QACtB,MAAM,QAAQ,GAAG,SAAS,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,QAAQ;YAAE,SAAS;QACxB,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC;QAEhC,iCAAiC;QACjC,MAAM,eAAe,GAAa,EAAE,CAAC;QACrC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;gBAC1E,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;QAED,wEAAwE;QACxE,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,WAAW,GAAG,IAAI,CAAC,CAAC,WAAW;QAEnD,sBAAsB;QACtB,MAAM,aAAa,GAAG,CAAC,GAAG,SAAS,IAAI,CAAC,CAAC;QACzC,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;YAChC,aAAa,CAAC,IAAI,CAAC,GAAG,WAAW,GAAG,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC;QACD,aAAa,CAAC,IAAI,CAAC,GAAG,WAAW,GAAG,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE1C,wBAAwB;QACxB,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpC,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAChF,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAChC,IAAY,EACZ,OAAmD,EACnD,IAAU;IAEV,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEvE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAE5B,mBAAmB;QACnB,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,qDAAqD;QACrD,IAAI,IAAA,4BAAc,EAAC,IAAI,EAAE,CAAC,CAAC;YAAE,SAAS;QAEtC,kDAAkD;QAClD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC;QAEzD,8CAA8C;QAC9C,IAAI,KAAK,GAAG,IAAA,oCAAsB,EAAC,IAAI,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;QAExD,oEAAoE;QACpE,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,KAAK,MAAM,EAAE,IAAI,OAAO,EAAE,CAAC;YACzB,IAAI,EAAE,KAAK,GAAG;gBAAE,aAAa,EAAE,CAAC;;gBAC3B,MAAM;QACb,CAAC;QACD,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC,CAAC;QAE3C,0BAA0B;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;QAEpD,mCAAmC;QACnC,IAAI,aAAa,KAAK,QAAQ,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CACR,eAAQ,CAAC,OAAO,CACd,YAAK,CAAC,MAAM,CACV,eAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EACrB,eAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CACzC,EACD,QAAQ,CACT,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+EAA+E;AAE/E,8FAA8F;AAC9F,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,EAAE,uBAAuB,CAAC,CAAC,CAAC;AAErE;;;GAGG;AACH,SAAgB,oBAAoB,CAClC,IAAY,EACZ,IAAU;IAEV,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAe,EAAE,CAAC;IAE7B,MAAM,KAAK,GAAG,CAAC,IAAS,EAAE,EAAE;QAC1B,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;YACxC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;YACpC,+BAA+B;YAC/B,IAAI,QAAQ,KAAK,MAAM;gBAAE,OAAO;YAEhC,4EAA4E;YAC5E,6DAA6D;YAC7D,IAAI,UAAU,GAAQ,IAAI,CAAC;YAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC5B,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;oBACjC,UAAU,GAAG,KAAK,CAAC;oBACnB,MAAM;gBACR,CAAC;YACH,CAAC;YACD,IAAI,CAAC,UAAU;gBAAE,OAAO;YAExB,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC;YACjD,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC;YAClD,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;YAE7B,qDAAqD;YACrD,IAAI,OAAO,GAAG,QAAQ,CAAC;YACvB,OAAO,OAAO,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBAChD,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,IAAI,KAAK,GAAG,WAAW,CAAC;YACxB,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;gBAClD,KAAK,EAAE,CAAC;YACV,CAAC;YAED,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACrD,MAAM,cAAc,GAAG,MAAM,CAAC;YAC9B,IAAI,aAAa,KAAK,cAAc;gBAAE,OAAO;YAE7C,KAAK,CAAC,IAAI,CACR,eAAQ,CAAC,OAAO,CACd,YAAK,CAAC,MAAM,CACV,eAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,EAClC,eAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CACjC,EACD,cAAc,CACf,CACF,CAAC;YACF,OAAO,CAAC,yCAAyC;QACnD,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;IAEF,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,OAAO,KAAK,CAAC;AACf,CAAC;AAED,kGAAkG;AAClG,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,CAAC,CAAC;AAE1E;;;GAGG;AACH,SAAgB,qBAAqB,CACnC,IAAY,EACZ,IAAU;IAEV,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAe,EAAE,CAAC;IAE7B,MAAM,KAAK,GAAG,CAAC,IAAS,EAAE,EAAE;QAC1B,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;YACxC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;YACpC,IAAI,QAAQ,KAAK,MAAM;gBAAE,OAAO;YAEhC,8BAA8B;YAC9B,IAAI,UAAU,GAAQ,IAAI,CAAC;YAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;gBACzC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAC5B,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBACpC,UAAU,GAAG,KAAK,CAAC;oBACnB,MAAM;gBACR,CAAC;YACH,CAAC;YACD,IAAI,CAAC,UAAU;gBAAE,OAAO;YAExB,MAAM,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,MAAM,CAAC;YACjD,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,MAAM,CAAC;YAClD,MAAM,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;YAE7B,0CAA0C;YAC1C,IAAI,OAAO,GAAG,QAAQ,CAAC;YACvB,OAAO,OAAO,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBAChD,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,IAAI,KAAK,GAAG,WAAW,CAAC;YACxB,OAAO,KAAK,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;gBAClD,KAAK,EAAE,CAAC;YACV,CAAC;YAED,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;YACrD,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC;YAClC,MAAM,cAAc,GAAG,GAAG,GAAG,SAAS,GAAG,GAAG,CAAC;YAC7C,IAAI,aAAa,KAAK,cAAc;gBAAE,OAAO;YAE7C,KAAK,CAAC,IAAI,CACR,eAAQ,CAAC,OAAO,CACd,YAAK,CAAC,MAAM,CACV,eAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,EAClC,eAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,CACjC,EACD,cAAc,CACf,CACF,CAAC;YACF,OAAO;QACT,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC;IAEF,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrB,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAgB,2BAA2B,CACzC,IAAY,EACZ,IAAU;IAEV,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;IAE3B,mFAAmF;IACnF,MAAM,QAAQ,GAA2C,EAAE,CAAC;IAC5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,KAAK,IAAI,kCAAoB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAClD,QAAQ,CAAC,IAAI,CAAC;gBACZ,QAAQ,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG;gBACjC,MAAM,EAAE,KAAK,CAAC,WAAW,CAAC,GAAG;aAC9B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACnC,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC3C,MAAM,GAAG,GAAG,SAAS,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,+BAA+B;QAEpE,IAAI,GAAG,KAAK,CAAC;YAAE,SAAS,CAAC,wCAAwC;QAEjE,oEAAoE;QACpE,wDAAwD;QACxD,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACZ,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,KAAK,IAAI,GAAG,GAAG,OAAO,GAAG,CAAC,EAAE,GAAG,GAAG,SAAS,EAAE,GAAG,EAAE,EAAE,CAAC;gBACnD,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACjC,WAAW,GAAG,IAAI,CAAC;oBACnB,MAAM;gBACR,CAAC;YACH,CAAC;YACD,IAAI,WAAW;gBAAE,SAAS;QAC5B,CAAC;QAED,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;YACZ,6EAA6E;YAC7E,wEAAwE;YACxE,KAAK,CAAC,IAAI,CACR,eAAQ,CAAC,MAAM,CACb,eAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,EAC/C,IAAI,CACL,CACF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,oEAAoE;YACpE,MAAM,WAAW,GAAG,OAAO,GAAG,CAAC,CAAC;YAChC,MAAM,SAAS,GAAG,SAAS,CAAC;YAC5B,KAAK,CAAC,IAAI,CACR,eAAQ,CAAC,GAAG,CACV,YAAK,CAAC,MAAM,CACV,eAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,EAC/B,eAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAC9B,CACF,CACF,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+EAA+E;AAE/E;;;;;;GAMG;AACH,SAAgB,oBAAoB,CAClC,IAAY,EACZ,OAAmD,EACnD,IAAU;IAEV,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAe,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEvE,iCAAiC;IACjC,MAAM,SAAS,GAAU,EAAE,CAAC;IAC5B,SAAS,IAAI,CAAC,IAAS;QACrB,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YACjC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,OAAO,CAAC,2CAA2C;QACrD,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEpB,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;QAC5C,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC;QAExC,2EAA2E;QAC3E,sEAAsE;QACtE,MAAM,aAAa,GAAG,QAAQ,GAAG,CAAC,CAAC;QACnC,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,CAAC;QAChC,IAAI,aAAa,GAAG,YAAY;YAAE,SAAS,CAAC,2BAA2B;QAEvE,iFAAiF;QACjF,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC;QACnC,IAAI,CAAC,UAAU;YAAE,SAAS;QAC1B,MAAM,SAAS,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC;QAC/C,MAAM,SAAS,GAAG,IAAA,oCAAsB,EAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;QAC7D,6FAA6F;QAC7F,oFAAoF;QACpF,6FAA6F;QAC7F,2FAA2F;QAC3F,+FAA+F;QAC/F,gFAAgF;QAChF,0EAA0E;QAC1E,MAAM,aAAa,GAAG,SAAS,GAAG,CAAC,CAAC;QACpC,MAAM,kBAAkB,GAAG,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;QAE3D,yDAAyD;QACzD,IAAI,SAAS,GAAG,QAAQ,CAAC;QACzB,MAAM,aAAa,GAA+E,EAAE,CAAC;QACrG,KAAK,IAAI,GAAG,GAAG,aAAa,EAAE,GAAG,IAAI,YAAY,EAAE,GAAG,EAAE,EAAE,CAAC;YACzD,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;YACxB,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;gBAC1B,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;gBACxE,SAAS;YACX,CAAC;YACD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC;YAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YAClD,MAAM,UAAU,GAAG,oBAAoB,CAAC,UAAU,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACrE,aAAa,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;YACnE,IAAI,UAAU,GAAG,SAAS;gBAAE,SAAS,GAAG,UAAU,CAAC;QACrD,CAAC;QAED,IAAI,SAAS,KAAK,QAAQ;YAAE,SAAS,CAAC,YAAY;QAElD,uBAAuB;QACvB,IAAI,SAAS,KAAK,kBAAkB;YAAE,SAAS,CAAC,kBAAkB;QAElE,qCAAqC;QACrC,KAAK,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;YAClC,IAAI,KAAK,CAAC,KAAK;gBAAE,SAAS;YAC1B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,kBAAkB,GAAG,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;YACxD,MAAM,SAAS,GAAG,WAAW,CAAC,kBAAkB,GAAG,kBAAkB,EAAE,OAAO,CAAC,CAAC;YAChF,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;YAEvD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gBAC5B,KAAK,CAAC,IAAI,CACR,eAAQ,CAAC,OAAO,CACd,YAAK,CAAC,MAAM,CACV,eAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAC7B,eAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,WAAW,CAAC,CAC9C,EACD,SAAS,CACV,CACF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,oBAAoB,CAAC,MAAc,EAAE,OAAe;IAC3D,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;QACxB,IAAI,IAAI,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAClB,OAAe,EACf,OAAmD;IAEnD,IAAI,OAAO,IAAI,CAAC;QAAE,OAAO,EAAE,CAAC;IAC5B,IAAI,OAAO,CAAC,YAAY;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAErD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IACzC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,SAAgB,oBAAoB,CAClC,IAAoB;IAEpB,MAAM,MAAM,GAA6C,EAAE,CAAC;IAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEpC,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,OAAO,CAAC,UAAU,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,MAAM,CAAC,WAAW,CAAC;QAChC,IAAI,IAAI,CAAC,IAAI,KAAK,cAAc,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;YAClE,MAAM,CAAC,IAAI,CAAC;gBACV,SAAS,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG;gBACjC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG;aAC9B,CAAC,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,CAAC;gBAC9B,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,CAAC;oBACjC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;wBACzB,UAAU,GAAG,IAAI,CAAC;wBAClB,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,EAAE,CAAC;YACpC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,CAAC;gBAC9B,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,CAAC;oBACjC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;wBACzB,UAAU,GAAG,IAAI,CAAC;wBAClB,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/out/referenceSearch.d.ts
CHANGED
|
@@ -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 {};
|
package/out/referenceSearch.js
CHANGED
|
@@ -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
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
const
|
|
77
|
-
|
|
78
|
-
|
|
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;
|