@openrewrite/rewrite 8.69.0-20251212-152027 → 8.69.0-20251212-183252
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.
|
@@ -59,24 +59,90 @@ export declare function findPropertyPath(cursor: Cursor | undefined, child?: any
|
|
|
59
59
|
/**
|
|
60
60
|
* LST Debug Printer - prints LST nodes in a readable format.
|
|
61
61
|
*
|
|
62
|
-
*
|
|
62
|
+
* This is a STATEFUL object that tracks cursor depth across calls to provide
|
|
63
|
+
* proper indentation. Create one instance as a field in your visitor and reuse it.
|
|
64
|
+
*
|
|
65
|
+
* Two main methods:
|
|
66
|
+
* - `log()`: Prints a single node WITHOUT recursing into children. Tracks cursor
|
|
67
|
+
* hierarchy across calls to show proper indentation.
|
|
68
|
+
* - `print()`: Prints a node AND all its children recursively.
|
|
69
|
+
*
|
|
70
|
+
* Usage from within a visitor (recommended pattern):
|
|
63
71
|
* ```typescript
|
|
64
|
-
* class
|
|
65
|
-
*
|
|
72
|
+
* class TabsAndIndentsVisitor extends JavaScriptVisitor<P> {
|
|
73
|
+
* // Create as a field - it tracks state across calls
|
|
74
|
+
* private debug = new LstDebugPrinter();
|
|
75
|
+
*
|
|
76
|
+
* async visitBlock(block: J.Block, p: P) {
|
|
77
|
+
* // Log this node with automatic indentation based on cursor depth
|
|
78
|
+
* this.debug.log(block, this.cursor, "visiting block");
|
|
79
|
+
* return super.visitBlock(block, p);
|
|
80
|
+
* }
|
|
66
81
|
*
|
|
67
82
|
* async visitMethodInvocation(mi: J.MethodInvocation, p: P) {
|
|
68
|
-
* this.debug.
|
|
83
|
+
* this.debug.log(mi, this.cursor);
|
|
69
84
|
* return super.visitMethodInvocation(mi, p);
|
|
70
85
|
* }
|
|
71
86
|
* }
|
|
72
87
|
* ```
|
|
88
|
+
*
|
|
89
|
+
* Output will be properly indented based on tree depth:
|
|
90
|
+
* ```
|
|
91
|
+
* CompilationUnit{prefix=''}
|
|
92
|
+
* statements[0]: ClassDeclaration{name='Foo' prefix=''}
|
|
93
|
+
* body: Block{prefix='·'}
|
|
94
|
+
* // visiting block
|
|
95
|
+
* statements[0]: MethodDeclaration{name='bar' prefix='\n·₄'}
|
|
96
|
+
* ```
|
|
97
|
+
*
|
|
98
|
+
* To reset indentation tracking (e.g., between files):
|
|
99
|
+
* ```typescript
|
|
100
|
+
* this.debug.reset();
|
|
101
|
+
* ```
|
|
102
|
+
*
|
|
103
|
+
* To print an entire subtree with recursion:
|
|
104
|
+
* ```typescript
|
|
105
|
+
* this.debug.print(subtree, this.cursor, "dumping subtree");
|
|
106
|
+
* ```
|
|
73
107
|
*/
|
|
74
108
|
export declare class LstDebugPrinter {
|
|
75
109
|
private readonly options;
|
|
76
110
|
private outputLines;
|
|
111
|
+
/**
|
|
112
|
+
* Cache of cursor depth to avoid recalculating.
|
|
113
|
+
* Uses WeakMap so cursors can be garbage collected.
|
|
114
|
+
*/
|
|
115
|
+
private depthCache;
|
|
77
116
|
constructor(options?: LstDebugOptions);
|
|
78
117
|
/**
|
|
79
|
-
*
|
|
118
|
+
* Calculate the depth of the cursor by counting parent chain length.
|
|
119
|
+
* Uses caching to avoid repeated traversals.
|
|
120
|
+
*/
|
|
121
|
+
private calculateDepth;
|
|
122
|
+
/**
|
|
123
|
+
* Clear the depth cache. Call this when starting a new tree
|
|
124
|
+
* to free memory from previous traversals.
|
|
125
|
+
*/
|
|
126
|
+
reset(): void;
|
|
127
|
+
/**
|
|
128
|
+
* Log a single node WITHOUT recursing into children.
|
|
129
|
+
* Use this from visitor methods to log individual nodes as they are visited.
|
|
130
|
+
*
|
|
131
|
+
* When called with a cursor, tracks the cursor hierarchy across calls to
|
|
132
|
+
* provide proper indentation showing the tree structure.
|
|
133
|
+
*
|
|
134
|
+
* Output format: `// label` (if provided), then indented `TypeName{summary prefix=...}`
|
|
135
|
+
* with cursor messages on a separate line if present.
|
|
136
|
+
*
|
|
137
|
+
* @param node The node to log
|
|
138
|
+
* @param cursor Optional cursor for context, messages, and depth tracking
|
|
139
|
+
* @param label Optional label to identify this log entry
|
|
140
|
+
*/
|
|
141
|
+
log(node: Tree | J.Container<any> | J.LeftPadded<any> | J.RightPadded<any>, cursor?: Cursor, label?: string): void;
|
|
142
|
+
/**
|
|
143
|
+
* Print a tree node AND all its children recursively.
|
|
144
|
+
* Use this to dump an entire subtree structure.
|
|
145
|
+
*
|
|
80
146
|
* @param tree The tree node to print
|
|
81
147
|
* @param cursor Optional cursor for context
|
|
82
148
|
* @param label Optional label to identify this debug output (shown as comment before output)
|
|
@@ -101,13 +167,27 @@ export declare class LstDebugPrinter {
|
|
|
101
167
|
private flush;
|
|
102
168
|
}
|
|
103
169
|
/**
|
|
104
|
-
* A visitor that prints the LST structure as it traverses
|
|
105
|
-
*
|
|
170
|
+
* A visitor that prints the LST structure as it traverses, showing each node
|
|
171
|
+
* with proper indentation to visualize the tree hierarchy.
|
|
172
|
+
*
|
|
173
|
+
* Use this to print an entire tree or subtree with full traversal. Each node
|
|
174
|
+
* is printed as it's visited, with indentation showing the tree depth.
|
|
175
|
+
*
|
|
176
|
+
* For logging individual nodes from within your own visitor without recursion,
|
|
177
|
+
* use `LstDebugPrinter.log()` or `debugLog()` instead.
|
|
106
178
|
*
|
|
107
179
|
* Usage:
|
|
108
180
|
* ```typescript
|
|
109
|
-
*
|
|
181
|
+
* // Print entire tree structure during traversal
|
|
182
|
+
* const debugVisitor = new LstDebugVisitor();
|
|
110
183
|
* await debugVisitor.visit(tree, ctx);
|
|
184
|
+
*
|
|
185
|
+
* // With options
|
|
186
|
+
* const debugVisitor = new LstDebugVisitor(
|
|
187
|
+
* { includeCursorMessages: true },
|
|
188
|
+
* { printPreVisit: true, printPostVisit: false }
|
|
189
|
+
* );
|
|
190
|
+
* await debugVisitor.visit(subtree, ctx);
|
|
111
191
|
* ```
|
|
112
192
|
*/
|
|
113
193
|
export declare class LstDebugVisitor<P> extends JavaScriptVisitor<P> {
|
|
@@ -126,7 +206,19 @@ export declare class LstDebugVisitor<P> extends JavaScriptVisitor<P> {
|
|
|
126
206
|
visitRightPadded<T extends J | boolean>(right: J.RightPadded<T>, p: P): Promise<J.RightPadded<T> | undefined>;
|
|
127
207
|
}
|
|
128
208
|
/**
|
|
129
|
-
* Convenience function to
|
|
209
|
+
* Convenience function to log a single node (no recursion).
|
|
210
|
+
* Use this from visitor methods to log individual nodes as they are visited.
|
|
211
|
+
*
|
|
212
|
+
* @param node The node to log
|
|
213
|
+
* @param cursor Optional cursor for context and messages
|
|
214
|
+
* @param label Optional label to identify this log entry
|
|
215
|
+
* @param options Optional debug options
|
|
216
|
+
*/
|
|
217
|
+
export declare function debugLog(node: Tree, cursor?: Cursor, label?: string, options?: LstDebugOptions): void;
|
|
218
|
+
/**
|
|
219
|
+
* Convenience function to print a tree node AND all its children recursively.
|
|
220
|
+
* Use this to dump an entire subtree structure.
|
|
221
|
+
*
|
|
130
222
|
* @param tree The tree node to print
|
|
131
223
|
* @param cursor Optional cursor for context
|
|
132
224
|
* @param label Optional label to identify this debug output
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-debug.d.ts","sourceRoot":"","sources":["../../src/javascript/tree-debug.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAC,MAAM,EAAE,IAAI,EAAC,MAAM,SAAS,CAAC;AACrC,OAAO,EAA2C,CAAC,EAAc,MAAM,SAAS,CAAC;AAEjF,OAAO,EAAC,iBAAiB,EAAC,MAAM,WAAW,CAAC;AAG5C;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,uDAAuD;IACvD,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,gDAAgD;IAChD,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,uEAAuE;IACvE,MAAM,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC5B,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;CACnB;AAsCD;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAoEvE;AAkBD;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,CAAC,CAAC,KAAK,GAAG,SAAS,GAAG,MAAM,CAmC9D;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAoBvE;AAYD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,CAAC,EAAE,GAAG,GAAG,MAAM,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"tree-debug.d.ts","sourceRoot":"","sources":["../../src/javascript/tree-debug.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,6 +62,7 @@ exports.formatWhitespace = formatWhitespace;
|
|
|
62
62
|
exports.formatSpace = formatSpace;
|
|
63
63
|
exports.formatCursorMessages = formatCursorMessages;
|
|
64
64
|
exports.findPropertyPath = findPropertyPath;
|
|
65
|
+
exports.debugLog = debugLog;
|
|
65
66
|
exports.debugPrint = debugPrint;
|
|
66
67
|
exports.debugPrintCursorPath = debugPrintCursorPath;
|
|
67
68
|
const java_1 = require("../java");
|
|
@@ -279,27 +280,40 @@ function shortTypeName(kind) {
|
|
|
279
280
|
* @param child - Optional: the actual child node being visited (for RightPadded/LeftPadded/Container visits where cursor.value is the parent)
|
|
280
281
|
*/
|
|
281
282
|
function findPropertyPath(cursor, child) {
|
|
282
|
-
var _a, _b, _c
|
|
283
|
+
var _a, _b, _c;
|
|
283
284
|
if (!cursor) {
|
|
284
285
|
return undefined;
|
|
285
286
|
}
|
|
286
|
-
//
|
|
287
|
+
// The child we're looking for
|
|
287
288
|
const actualChild = child !== null && child !== void 0 ? child : cursor.value;
|
|
288
|
-
|
|
289
|
+
// Find the parent that should contain this child as a property.
|
|
290
|
+
// When child is explicitly provided (e.g., from visitRightPadded), cursor.value IS the parent.
|
|
291
|
+
// When child is not provided, we're looking for cursor.value in cursor.parent.value.
|
|
292
|
+
let parent = child ? cursor.value : (_a = cursor.parent) === null || _a === void 0 ? void 0 : _a.value;
|
|
289
293
|
if (!parent || typeof parent !== 'object') {
|
|
290
294
|
return undefined;
|
|
291
295
|
}
|
|
292
296
|
// Properties to skip when searching
|
|
293
297
|
const skipProps = new Set(['kind', 'id', 'prefix', 'markers', 'type', 'methodType', 'variableType', 'fieldType', 'constructorType']);
|
|
298
|
+
// Helper to compare elements - use id comparison for Tree nodes (handles immutability)
|
|
299
|
+
const sameElement = (a, b) => {
|
|
300
|
+
if (a === b)
|
|
301
|
+
return true;
|
|
302
|
+
// If both have 'id' property (Tree nodes), compare by id
|
|
303
|
+
if (a && b && typeof a === 'object' && typeof b === 'object' && 'id' in a && 'id' in b) {
|
|
304
|
+
return a.id === b.id;
|
|
305
|
+
}
|
|
306
|
+
return false;
|
|
307
|
+
};
|
|
294
308
|
// Special case: if parent is a Container, we need to look at grandparent to find the property name
|
|
295
309
|
if (parent.kind === java_1.J.Kind.Container) {
|
|
296
310
|
const container = parent;
|
|
297
|
-
const grandparent =
|
|
311
|
+
const grandparent = (_c = (_b = cursor.parent) === null || _b === void 0 ? void 0 : _b.parent) === null || _c === void 0 ? void 0 : _c.value;
|
|
298
312
|
// Find the index of actualChild in container.elements
|
|
299
313
|
let childIndex = -1;
|
|
300
314
|
if (container.elements) {
|
|
301
315
|
for (let i = 0; i < container.elements.length; i++) {
|
|
302
|
-
if (container.elements[i]
|
|
316
|
+
if (sameElement(container.elements[i], actualChild)) {
|
|
303
317
|
childIndex = i;
|
|
304
318
|
break;
|
|
305
319
|
}
|
|
@@ -310,7 +324,7 @@ function findPropertyPath(cursor, child) {
|
|
|
310
324
|
for (const [key, value] of Object.entries(grandparent)) {
|
|
311
325
|
if (skipProps.has(key))
|
|
312
326
|
continue;
|
|
313
|
-
if (value
|
|
327
|
+
if (sameElement(value, parent)) {
|
|
314
328
|
if (childIndex >= 0) {
|
|
315
329
|
return `${key}[${childIndex}]`;
|
|
316
330
|
}
|
|
@@ -327,18 +341,18 @@ function findPropertyPath(cursor, child) {
|
|
|
327
341
|
if (skipProps.has(key))
|
|
328
342
|
continue;
|
|
329
343
|
// Direct match
|
|
330
|
-
if (value
|
|
344
|
+
if (sameElement(value, actualChild)) {
|
|
331
345
|
return key;
|
|
332
346
|
}
|
|
333
347
|
// Check if child is in an array
|
|
334
348
|
if (Array.isArray(value)) {
|
|
335
349
|
for (let i = 0; i < value.length; i++) {
|
|
336
|
-
if (value[i]
|
|
350
|
+
if (sameElement(value[i], actualChild)) {
|
|
337
351
|
return `${key}[${i}]`;
|
|
338
352
|
}
|
|
339
353
|
// Check inside RightPadded/LeftPadded wrappers
|
|
340
354
|
if (value[i] && typeof value[i] === 'object') {
|
|
341
|
-
if (value[i].element
|
|
355
|
+
if (sameElement(value[i].element, actualChild)) {
|
|
342
356
|
return `${key}[${i}].element`;
|
|
343
357
|
}
|
|
344
358
|
}
|
|
@@ -350,10 +364,10 @@ function findPropertyPath(cursor, child) {
|
|
|
350
364
|
if (container.elements) {
|
|
351
365
|
for (let i = 0; i < container.elements.length; i++) {
|
|
352
366
|
const rp = container.elements[i];
|
|
353
|
-
if (rp
|
|
367
|
+
if (sameElement(rp, actualChild)) {
|
|
354
368
|
return `${key}[${i}]`;
|
|
355
369
|
}
|
|
356
|
-
if (rp.element
|
|
370
|
+
if (sameElement(rp.element, actualChild)) {
|
|
357
371
|
return `${key}[${i}].element`;
|
|
358
372
|
}
|
|
359
373
|
}
|
|
@@ -362,7 +376,7 @@ function findPropertyPath(cursor, child) {
|
|
|
362
376
|
// Check inside LeftPadded/RightPadded
|
|
363
377
|
if (value && typeof value === 'object') {
|
|
364
378
|
if (value.kind === java_1.J.Kind.LeftPadded || value.kind === java_1.J.Kind.RightPadded) {
|
|
365
|
-
if (value.element
|
|
379
|
+
if (sameElement(value.element, actualChild)) {
|
|
366
380
|
return `${key}.element`;
|
|
367
381
|
}
|
|
368
382
|
}
|
|
@@ -415,25 +429,181 @@ function getNodeSummary(node) {
|
|
|
415
429
|
/**
|
|
416
430
|
* LST Debug Printer - prints LST nodes in a readable format.
|
|
417
431
|
*
|
|
418
|
-
*
|
|
432
|
+
* This is a STATEFUL object that tracks cursor depth across calls to provide
|
|
433
|
+
* proper indentation. Create one instance as a field in your visitor and reuse it.
|
|
434
|
+
*
|
|
435
|
+
* Two main methods:
|
|
436
|
+
* - `log()`: Prints a single node WITHOUT recursing into children. Tracks cursor
|
|
437
|
+
* hierarchy across calls to show proper indentation.
|
|
438
|
+
* - `print()`: Prints a node AND all its children recursively.
|
|
439
|
+
*
|
|
440
|
+
* Usage from within a visitor (recommended pattern):
|
|
419
441
|
* ```typescript
|
|
420
|
-
* class
|
|
421
|
-
*
|
|
442
|
+
* class TabsAndIndentsVisitor extends JavaScriptVisitor<P> {
|
|
443
|
+
* // Create as a field - it tracks state across calls
|
|
444
|
+
* private debug = new LstDebugPrinter();
|
|
445
|
+
*
|
|
446
|
+
* async visitBlock(block: J.Block, p: P) {
|
|
447
|
+
* // Log this node with automatic indentation based on cursor depth
|
|
448
|
+
* this.debug.log(block, this.cursor, "visiting block");
|
|
449
|
+
* return super.visitBlock(block, p);
|
|
450
|
+
* }
|
|
422
451
|
*
|
|
423
452
|
* async visitMethodInvocation(mi: J.MethodInvocation, p: P) {
|
|
424
|
-
* this.debug.
|
|
453
|
+
* this.debug.log(mi, this.cursor);
|
|
425
454
|
* return super.visitMethodInvocation(mi, p);
|
|
426
455
|
* }
|
|
427
456
|
* }
|
|
428
457
|
* ```
|
|
458
|
+
*
|
|
459
|
+
* Output will be properly indented based on tree depth:
|
|
460
|
+
* ```
|
|
461
|
+
* CompilationUnit{prefix=''}
|
|
462
|
+
* statements[0]: ClassDeclaration{name='Foo' prefix=''}
|
|
463
|
+
* body: Block{prefix='·'}
|
|
464
|
+
* // visiting block
|
|
465
|
+
* statements[0]: MethodDeclaration{name='bar' prefix='\n·₄'}
|
|
466
|
+
* ```
|
|
467
|
+
*
|
|
468
|
+
* To reset indentation tracking (e.g., between files):
|
|
469
|
+
* ```typescript
|
|
470
|
+
* this.debug.reset();
|
|
471
|
+
* ```
|
|
472
|
+
*
|
|
473
|
+
* To print an entire subtree with recursion:
|
|
474
|
+
* ```typescript
|
|
475
|
+
* this.debug.print(subtree, this.cursor, "dumping subtree");
|
|
476
|
+
* ```
|
|
429
477
|
*/
|
|
430
478
|
class LstDebugPrinter {
|
|
431
479
|
constructor(options = {}) {
|
|
432
480
|
this.outputLines = [];
|
|
481
|
+
/**
|
|
482
|
+
* Cache of cursor depth to avoid recalculating.
|
|
483
|
+
* Uses WeakMap so cursors can be garbage collected.
|
|
484
|
+
*/
|
|
485
|
+
this.depthCache = new WeakMap();
|
|
433
486
|
this.options = Object.assign(Object.assign({}, DEFAULT_OPTIONS), options);
|
|
434
487
|
}
|
|
435
488
|
/**
|
|
436
|
-
*
|
|
489
|
+
* Calculate the depth of the cursor by counting parent chain length.
|
|
490
|
+
* Uses caching to avoid repeated traversals.
|
|
491
|
+
*/
|
|
492
|
+
calculateDepth(cursor) {
|
|
493
|
+
if (!cursor) {
|
|
494
|
+
return 0;
|
|
495
|
+
}
|
|
496
|
+
// Check cache first
|
|
497
|
+
const cached = this.depthCache.get(cursor);
|
|
498
|
+
if (cached !== undefined) {
|
|
499
|
+
return cached;
|
|
500
|
+
}
|
|
501
|
+
// Count depth by walking parent chain
|
|
502
|
+
let depth = 0;
|
|
503
|
+
for (let c = cursor; c; c = c.parent) {
|
|
504
|
+
depth++;
|
|
505
|
+
}
|
|
506
|
+
// Subtract 2 to skip root cursor and start CompilationUnit at depth 0
|
|
507
|
+
depth = Math.max(0, depth - 2);
|
|
508
|
+
// Cache the result
|
|
509
|
+
this.depthCache.set(cursor, depth);
|
|
510
|
+
return depth;
|
|
511
|
+
}
|
|
512
|
+
/**
|
|
513
|
+
* Clear the depth cache. Call this when starting a new tree
|
|
514
|
+
* to free memory from previous traversals.
|
|
515
|
+
*/
|
|
516
|
+
reset() {
|
|
517
|
+
this.depthCache = new WeakMap();
|
|
518
|
+
}
|
|
519
|
+
/**
|
|
520
|
+
* Log a single node WITHOUT recursing into children.
|
|
521
|
+
* Use this from visitor methods to log individual nodes as they are visited.
|
|
522
|
+
*
|
|
523
|
+
* When called with a cursor, tracks the cursor hierarchy across calls to
|
|
524
|
+
* provide proper indentation showing the tree structure.
|
|
525
|
+
*
|
|
526
|
+
* Output format: `// label` (if provided), then indented `TypeName{summary prefix=...}`
|
|
527
|
+
* with cursor messages on a separate line if present.
|
|
528
|
+
*
|
|
529
|
+
* @param node The node to log
|
|
530
|
+
* @param cursor Optional cursor for context, messages, and depth tracking
|
|
531
|
+
* @param label Optional label to identify this log entry
|
|
532
|
+
*/
|
|
533
|
+
log(node, cursor, label) {
|
|
534
|
+
var _a, _b;
|
|
535
|
+
this.outputLines = [];
|
|
536
|
+
// Calculate indentation based on cursor depth
|
|
537
|
+
const depth = this.calculateDepth(cursor);
|
|
538
|
+
const indent = this.options.indent.repeat(depth);
|
|
539
|
+
if (label) {
|
|
540
|
+
this.outputLines.push(`${indent}// ${label}`);
|
|
541
|
+
}
|
|
542
|
+
// Build single-line output for the node
|
|
543
|
+
let line = indent;
|
|
544
|
+
// Find property path from cursor
|
|
545
|
+
const propPath = findPropertyPath(cursor, node);
|
|
546
|
+
if (propPath) {
|
|
547
|
+
line += `${propPath}: `;
|
|
548
|
+
}
|
|
549
|
+
if (this.isContainer(node)) {
|
|
550
|
+
const container = node;
|
|
551
|
+
const before = formatSpace(container.before);
|
|
552
|
+
line += `Container<${(_b = (_a = container.elements) === null || _a === void 0 ? void 0 : _a.length) !== null && _b !== void 0 ? _b : 0}>{before=${before}}`;
|
|
553
|
+
}
|
|
554
|
+
else if (this.isLeftPadded(node)) {
|
|
555
|
+
const lp = node;
|
|
556
|
+
const before = formatSpace(lp.before);
|
|
557
|
+
line += `LeftPadded{before=${before}`;
|
|
558
|
+
// Show element value if it's a primitive
|
|
559
|
+
if (lp.element !== null && lp.element !== undefined) {
|
|
560
|
+
const elemType = typeof lp.element;
|
|
561
|
+
if (elemType === 'string' || elemType === 'number' || elemType === 'boolean') {
|
|
562
|
+
line += ` element=${JSON.stringify(lp.element)}`;
|
|
563
|
+
}
|
|
564
|
+
}
|
|
565
|
+
line += '}';
|
|
566
|
+
}
|
|
567
|
+
else if (this.isRightPadded(node)) {
|
|
568
|
+
const rp = node;
|
|
569
|
+
const after = formatSpace(rp.after);
|
|
570
|
+
line += `RightPadded{after=${after}`;
|
|
571
|
+
// Show element value if it's a primitive
|
|
572
|
+
if (rp.element !== null && rp.element !== undefined) {
|
|
573
|
+
const elemType = typeof rp.element;
|
|
574
|
+
if (elemType === 'string' || elemType === 'number' || elemType === 'boolean') {
|
|
575
|
+
line += ` element=${JSON.stringify(rp.element)}`;
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
line += '}';
|
|
579
|
+
}
|
|
580
|
+
else if ((0, java_1.isJava)(node)) {
|
|
581
|
+
const jNode = node;
|
|
582
|
+
const typeName = shortTypeName(jNode.kind);
|
|
583
|
+
line += `${typeName}{`;
|
|
584
|
+
const summary = getNodeSummary(jNode);
|
|
585
|
+
if (summary) {
|
|
586
|
+
line += `${summary} `;
|
|
587
|
+
}
|
|
588
|
+
line += `prefix=${formatSpace(jNode.prefix)}}`;
|
|
589
|
+
}
|
|
590
|
+
else {
|
|
591
|
+
line += `<unknown: ${typeof node}>`;
|
|
592
|
+
}
|
|
593
|
+
this.outputLines.push(line);
|
|
594
|
+
// Add cursor messages on separate line if present
|
|
595
|
+
if (this.options.includeCursorMessages && cursor) {
|
|
596
|
+
const messages = formatCursorMessages(cursor);
|
|
597
|
+
if (messages !== '<no messages>') {
|
|
598
|
+
this.outputLines.push(`${indent} ⤷ ${messages}`);
|
|
599
|
+
}
|
|
600
|
+
}
|
|
601
|
+
this.flush();
|
|
602
|
+
}
|
|
603
|
+
/**
|
|
604
|
+
* Print a tree node AND all its children recursively.
|
|
605
|
+
* Use this to dump an entire subtree structure.
|
|
606
|
+
*
|
|
437
607
|
* @param tree The tree node to print
|
|
438
608
|
* @param cursor Optional cursor for context
|
|
439
609
|
* @param label Optional label to identify this debug output (shown as comment before output)
|
|
@@ -710,20 +880,34 @@ class LstDebugPrinter {
|
|
|
710
880
|
console.info(output);
|
|
711
881
|
}
|
|
712
882
|
else {
|
|
713
|
-
fs.appendFileSync(this.options.output, output + '\n
|
|
883
|
+
fs.appendFileSync(this.options.output, output + '\n');
|
|
714
884
|
}
|
|
715
885
|
this.outputLines = [];
|
|
716
886
|
}
|
|
717
887
|
}
|
|
718
888
|
exports.LstDebugPrinter = LstDebugPrinter;
|
|
719
889
|
/**
|
|
720
|
-
* A visitor that prints the LST structure as it traverses
|
|
721
|
-
*
|
|
890
|
+
* A visitor that prints the LST structure as it traverses, showing each node
|
|
891
|
+
* with proper indentation to visualize the tree hierarchy.
|
|
892
|
+
*
|
|
893
|
+
* Use this to print an entire tree or subtree with full traversal. Each node
|
|
894
|
+
* is printed as it's visited, with indentation showing the tree depth.
|
|
895
|
+
*
|
|
896
|
+
* For logging individual nodes from within your own visitor without recursion,
|
|
897
|
+
* use `LstDebugPrinter.log()` or `debugLog()` instead.
|
|
722
898
|
*
|
|
723
899
|
* Usage:
|
|
724
900
|
* ```typescript
|
|
725
|
-
*
|
|
901
|
+
* // Print entire tree structure during traversal
|
|
902
|
+
* const debugVisitor = new LstDebugVisitor();
|
|
726
903
|
* await debugVisitor.visit(tree, ctx);
|
|
904
|
+
*
|
|
905
|
+
* // With options
|
|
906
|
+
* const debugVisitor = new LstDebugVisitor(
|
|
907
|
+
* { includeCursorMessages: true },
|
|
908
|
+
* { printPreVisit: true, printPostVisit: false }
|
|
909
|
+
* );
|
|
910
|
+
* await debugVisitor.visit(subtree, ctx);
|
|
727
911
|
* ```
|
|
728
912
|
*/
|
|
729
913
|
class LstDebugVisitor extends visitor_1.JavaScriptVisitor {
|
|
@@ -753,11 +937,11 @@ class LstDebugVisitor extends visitor_1.JavaScriptVisitor {
|
|
|
753
937
|
line += `${summary} `;
|
|
754
938
|
}
|
|
755
939
|
line += `prefix=${prefix}}`;
|
|
756
|
-
|
|
757
|
-
// Show cursor messages on a separate indented line
|
|
940
|
+
// Append cursor messages on same line to avoid empty line issues
|
|
758
941
|
if (messages !== '<no messages>') {
|
|
759
|
-
|
|
942
|
+
line += ` ${messages}`;
|
|
760
943
|
}
|
|
944
|
+
console.info(line);
|
|
761
945
|
}
|
|
762
946
|
this.depth++;
|
|
763
947
|
return tree;
|
|
@@ -790,10 +974,11 @@ class LstDebugVisitor extends visitor_1.JavaScriptVisitor {
|
|
|
790
974
|
line += `${propPath}: `;
|
|
791
975
|
}
|
|
792
976
|
line += `Container<${container.elements.length}>{before=${before}}`;
|
|
793
|
-
|
|
977
|
+
// Append cursor messages on same line to avoid empty line issues
|
|
794
978
|
if (messages !== '<no messages>') {
|
|
795
|
-
|
|
979
|
+
line += ` ${messages}`;
|
|
796
980
|
}
|
|
981
|
+
console.info(line);
|
|
797
982
|
}
|
|
798
983
|
this.depth++;
|
|
799
984
|
const result = yield _super.visitContainer.call(this, container, p);
|
|
@@ -825,10 +1010,11 @@ class LstDebugVisitor extends visitor_1.JavaScriptVisitor {
|
|
|
825
1010
|
}
|
|
826
1011
|
}
|
|
827
1012
|
line += '}';
|
|
828
|
-
|
|
1013
|
+
// Append cursor messages on same line to avoid empty line issues
|
|
829
1014
|
if (messages !== '<no messages>') {
|
|
830
|
-
|
|
1015
|
+
line += ` ${messages}`;
|
|
831
1016
|
}
|
|
1017
|
+
console.info(line);
|
|
832
1018
|
}
|
|
833
1019
|
this.depth++;
|
|
834
1020
|
const result = yield _super.visitLeftPadded.call(this, left, p);
|
|
@@ -860,10 +1046,11 @@ class LstDebugVisitor extends visitor_1.JavaScriptVisitor {
|
|
|
860
1046
|
}
|
|
861
1047
|
}
|
|
862
1048
|
line += '}';
|
|
863
|
-
|
|
1049
|
+
// Append cursor messages on same line to avoid empty line issues
|
|
864
1050
|
if (messages !== '<no messages>') {
|
|
865
|
-
|
|
1051
|
+
line += ` ${messages}`;
|
|
866
1052
|
}
|
|
1053
|
+
console.info(line);
|
|
867
1054
|
}
|
|
868
1055
|
this.depth++;
|
|
869
1056
|
const result = yield _super.visitRightPadded.call(this, right, p);
|
|
@@ -874,7 +1061,21 @@ class LstDebugVisitor extends visitor_1.JavaScriptVisitor {
|
|
|
874
1061
|
}
|
|
875
1062
|
exports.LstDebugVisitor = LstDebugVisitor;
|
|
876
1063
|
/**
|
|
877
|
-
* Convenience function to
|
|
1064
|
+
* Convenience function to log a single node (no recursion).
|
|
1065
|
+
* Use this from visitor methods to log individual nodes as they are visited.
|
|
1066
|
+
*
|
|
1067
|
+
* @param node The node to log
|
|
1068
|
+
* @param cursor Optional cursor for context and messages
|
|
1069
|
+
* @param label Optional label to identify this log entry
|
|
1070
|
+
* @param options Optional debug options
|
|
1071
|
+
*/
|
|
1072
|
+
function debugLog(node, cursor, label, options) {
|
|
1073
|
+
new LstDebugPrinter(options).log(node, cursor, label);
|
|
1074
|
+
}
|
|
1075
|
+
/**
|
|
1076
|
+
* Convenience function to print a tree node AND all its children recursively.
|
|
1077
|
+
* Use this to dump an entire subtree structure.
|
|
1078
|
+
*
|
|
878
1079
|
* @param tree The tree node to print
|
|
879
1080
|
* @param cursor Optional cursor for context
|
|
880
1081
|
* @param label Optional label to identify this debug output
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-debug.js","sourceRoot":"","sources":["../../src/javascript/tree-debug.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tree-debug.js","sourceRoot":"","sources":["../../src/javascript/tree-debug.ts"],"names":[],"mappings":"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"}
|
package/dist/version.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
8.69.0-20251212-
|
|
1
|
+
8.69.0-20251212-183252
|
package/package.json
CHANGED
|
@@ -268,9 +268,13 @@ export function findPropertyPath(cursor: Cursor | undefined, child?: any): strin
|
|
|
268
268
|
return undefined;
|
|
269
269
|
}
|
|
270
270
|
|
|
271
|
-
//
|
|
271
|
+
// The child we're looking for
|
|
272
272
|
const actualChild = child ?? cursor.value;
|
|
273
|
-
|
|
273
|
+
|
|
274
|
+
// Find the parent that should contain this child as a property.
|
|
275
|
+
// When child is explicitly provided (e.g., from visitRightPadded), cursor.value IS the parent.
|
|
276
|
+
// When child is not provided, we're looking for cursor.value in cursor.parent.value.
|
|
277
|
+
let parent = child ? cursor.value : cursor.parent?.value;
|
|
274
278
|
|
|
275
279
|
if (!parent || typeof parent !== 'object') {
|
|
276
280
|
return undefined;
|
|
@@ -279,16 +283,26 @@ export function findPropertyPath(cursor: Cursor | undefined, child?: any): strin
|
|
|
279
283
|
// Properties to skip when searching
|
|
280
284
|
const skipProps = new Set(['kind', 'id', 'prefix', 'markers', 'type', 'methodType', 'variableType', 'fieldType', 'constructorType']);
|
|
281
285
|
|
|
286
|
+
// Helper to compare elements - use id comparison for Tree nodes (handles immutability)
|
|
287
|
+
const sameElement = (a: any, b: any): boolean => {
|
|
288
|
+
if (a === b) return true;
|
|
289
|
+
// If both have 'id' property (Tree nodes), compare by id
|
|
290
|
+
if (a && b && typeof a === 'object' && typeof b === 'object' && 'id' in a && 'id' in b) {
|
|
291
|
+
return a.id === b.id;
|
|
292
|
+
}
|
|
293
|
+
return false;
|
|
294
|
+
};
|
|
295
|
+
|
|
282
296
|
// Special case: if parent is a Container, we need to look at grandparent to find the property name
|
|
283
297
|
if ((parent as any).kind === J.Kind.Container) {
|
|
284
298
|
const container = parent as J.Container<any>;
|
|
285
|
-
const grandparent =
|
|
299
|
+
const grandparent = cursor.parent?.parent?.value;
|
|
286
300
|
|
|
287
301
|
// Find the index of actualChild in container.elements
|
|
288
302
|
let childIndex = -1;
|
|
289
303
|
if (container.elements) {
|
|
290
304
|
for (let i = 0; i < container.elements.length; i++) {
|
|
291
|
-
if (container.elements[i]
|
|
305
|
+
if (sameElement(container.elements[i], actualChild)) {
|
|
292
306
|
childIndex = i;
|
|
293
307
|
break;
|
|
294
308
|
}
|
|
@@ -299,7 +313,7 @@ export function findPropertyPath(cursor: Cursor | undefined, child?: any): strin
|
|
|
299
313
|
if (grandparent && typeof grandparent === 'object') {
|
|
300
314
|
for (const [key, value] of Object.entries(grandparent)) {
|
|
301
315
|
if (skipProps.has(key)) continue;
|
|
302
|
-
if (value
|
|
316
|
+
if (sameElement(value, parent)) {
|
|
303
317
|
if (childIndex >= 0) {
|
|
304
318
|
return `${key}[${childIndex}]`;
|
|
305
319
|
}
|
|
@@ -318,19 +332,19 @@ export function findPropertyPath(cursor: Cursor | undefined, child?: any): strin
|
|
|
318
332
|
if (skipProps.has(key)) continue;
|
|
319
333
|
|
|
320
334
|
// Direct match
|
|
321
|
-
if (value
|
|
335
|
+
if (sameElement(value, actualChild)) {
|
|
322
336
|
return key;
|
|
323
337
|
}
|
|
324
338
|
|
|
325
339
|
// Check if child is in an array
|
|
326
340
|
if (Array.isArray(value)) {
|
|
327
341
|
for (let i = 0; i < value.length; i++) {
|
|
328
|
-
if (value[i]
|
|
342
|
+
if (sameElement(value[i], actualChild)) {
|
|
329
343
|
return `${key}[${i}]`;
|
|
330
344
|
}
|
|
331
345
|
// Check inside RightPadded/LeftPadded wrappers
|
|
332
346
|
if (value[i] && typeof value[i] === 'object') {
|
|
333
|
-
if (value[i].element
|
|
347
|
+
if (sameElement(value[i].element, actualChild)) {
|
|
334
348
|
return `${key}[${i}].element`;
|
|
335
349
|
}
|
|
336
350
|
}
|
|
@@ -343,10 +357,10 @@ export function findPropertyPath(cursor: Cursor | undefined, child?: any): strin
|
|
|
343
357
|
if (container.elements) {
|
|
344
358
|
for (let i = 0; i < container.elements.length; i++) {
|
|
345
359
|
const rp = container.elements[i];
|
|
346
|
-
if (rp
|
|
360
|
+
if (sameElement(rp, actualChild)) {
|
|
347
361
|
return `${key}[${i}]`;
|
|
348
362
|
}
|
|
349
|
-
if (rp.element
|
|
363
|
+
if (sameElement(rp.element, actualChild)) {
|
|
350
364
|
return `${key}[${i}].element`;
|
|
351
365
|
}
|
|
352
366
|
}
|
|
@@ -356,7 +370,7 @@ export function findPropertyPath(cursor: Cursor | undefined, child?: any): strin
|
|
|
356
370
|
// Check inside LeftPadded/RightPadded
|
|
357
371
|
if (value && typeof value === 'object') {
|
|
358
372
|
if ((value as any).kind === J.Kind.LeftPadded || (value as any).kind === J.Kind.RightPadded) {
|
|
359
|
-
if ((value as any).element
|
|
373
|
+
if (sameElement((value as any).element, actualChild)) {
|
|
360
374
|
return `${key}.element`;
|
|
361
375
|
}
|
|
362
376
|
}
|
|
@@ -414,28 +428,194 @@ function getNodeSummary(node: J): string | undefined {
|
|
|
414
428
|
/**
|
|
415
429
|
* LST Debug Printer - prints LST nodes in a readable format.
|
|
416
430
|
*
|
|
417
|
-
*
|
|
431
|
+
* This is a STATEFUL object that tracks cursor depth across calls to provide
|
|
432
|
+
* proper indentation. Create one instance as a field in your visitor and reuse it.
|
|
433
|
+
*
|
|
434
|
+
* Two main methods:
|
|
435
|
+
* - `log()`: Prints a single node WITHOUT recursing into children. Tracks cursor
|
|
436
|
+
* hierarchy across calls to show proper indentation.
|
|
437
|
+
* - `print()`: Prints a node AND all its children recursively.
|
|
438
|
+
*
|
|
439
|
+
* Usage from within a visitor (recommended pattern):
|
|
418
440
|
* ```typescript
|
|
419
|
-
* class
|
|
420
|
-
*
|
|
441
|
+
* class TabsAndIndentsVisitor extends JavaScriptVisitor<P> {
|
|
442
|
+
* // Create as a field - it tracks state across calls
|
|
443
|
+
* private debug = new LstDebugPrinter();
|
|
444
|
+
*
|
|
445
|
+
* async visitBlock(block: J.Block, p: P) {
|
|
446
|
+
* // Log this node with automatic indentation based on cursor depth
|
|
447
|
+
* this.debug.log(block, this.cursor, "visiting block");
|
|
448
|
+
* return super.visitBlock(block, p);
|
|
449
|
+
* }
|
|
421
450
|
*
|
|
422
451
|
* async visitMethodInvocation(mi: J.MethodInvocation, p: P) {
|
|
423
|
-
* this.debug.
|
|
452
|
+
* this.debug.log(mi, this.cursor);
|
|
424
453
|
* return super.visitMethodInvocation(mi, p);
|
|
425
454
|
* }
|
|
426
455
|
* }
|
|
427
456
|
* ```
|
|
457
|
+
*
|
|
458
|
+
* Output will be properly indented based on tree depth:
|
|
459
|
+
* ```
|
|
460
|
+
* CompilationUnit{prefix=''}
|
|
461
|
+
* statements[0]: ClassDeclaration{name='Foo' prefix=''}
|
|
462
|
+
* body: Block{prefix='·'}
|
|
463
|
+
* // visiting block
|
|
464
|
+
* statements[0]: MethodDeclaration{name='bar' prefix='\n·₄'}
|
|
465
|
+
* ```
|
|
466
|
+
*
|
|
467
|
+
* To reset indentation tracking (e.g., between files):
|
|
468
|
+
* ```typescript
|
|
469
|
+
* this.debug.reset();
|
|
470
|
+
* ```
|
|
471
|
+
*
|
|
472
|
+
* To print an entire subtree with recursion:
|
|
473
|
+
* ```typescript
|
|
474
|
+
* this.debug.print(subtree, this.cursor, "dumping subtree");
|
|
475
|
+
* ```
|
|
428
476
|
*/
|
|
429
477
|
export class LstDebugPrinter {
|
|
430
478
|
private readonly options: Required<LstDebugOptions>;
|
|
431
479
|
private outputLines: string[] = [];
|
|
432
480
|
|
|
481
|
+
/**
|
|
482
|
+
* Cache of cursor depth to avoid recalculating.
|
|
483
|
+
* Uses WeakMap so cursors can be garbage collected.
|
|
484
|
+
*/
|
|
485
|
+
private depthCache = new WeakMap<Cursor, number>();
|
|
486
|
+
|
|
433
487
|
constructor(options: LstDebugOptions = {}) {
|
|
434
488
|
this.options = {...DEFAULT_OPTIONS, ...options};
|
|
435
489
|
}
|
|
436
490
|
|
|
437
491
|
/**
|
|
438
|
-
*
|
|
492
|
+
* Calculate the depth of the cursor by counting parent chain length.
|
|
493
|
+
* Uses caching to avoid repeated traversals.
|
|
494
|
+
*/
|
|
495
|
+
private calculateDepth(cursor: Cursor | undefined): number {
|
|
496
|
+
if (!cursor) {
|
|
497
|
+
return 0;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
// Check cache first
|
|
501
|
+
const cached = this.depthCache.get(cursor);
|
|
502
|
+
if (cached !== undefined) {
|
|
503
|
+
return cached;
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
// Count depth by walking parent chain
|
|
507
|
+
let depth = 0;
|
|
508
|
+
for (let c: Cursor | undefined = cursor; c; c = c.parent) {
|
|
509
|
+
depth++;
|
|
510
|
+
}
|
|
511
|
+
// Subtract 2 to skip root cursor and start CompilationUnit at depth 0
|
|
512
|
+
depth = Math.max(0, depth - 2);
|
|
513
|
+
|
|
514
|
+
// Cache the result
|
|
515
|
+
this.depthCache.set(cursor, depth);
|
|
516
|
+
return depth;
|
|
517
|
+
}
|
|
518
|
+
|
|
519
|
+
/**
|
|
520
|
+
* Clear the depth cache. Call this when starting a new tree
|
|
521
|
+
* to free memory from previous traversals.
|
|
522
|
+
*/
|
|
523
|
+
reset(): void {
|
|
524
|
+
this.depthCache = new WeakMap<Cursor, number>();
|
|
525
|
+
}
|
|
526
|
+
|
|
527
|
+
/**
|
|
528
|
+
* Log a single node WITHOUT recursing into children.
|
|
529
|
+
* Use this from visitor methods to log individual nodes as they are visited.
|
|
530
|
+
*
|
|
531
|
+
* When called with a cursor, tracks the cursor hierarchy across calls to
|
|
532
|
+
* provide proper indentation showing the tree structure.
|
|
533
|
+
*
|
|
534
|
+
* Output format: `// label` (if provided), then indented `TypeName{summary prefix=...}`
|
|
535
|
+
* with cursor messages on a separate line if present.
|
|
536
|
+
*
|
|
537
|
+
* @param node The node to log
|
|
538
|
+
* @param cursor Optional cursor for context, messages, and depth tracking
|
|
539
|
+
* @param label Optional label to identify this log entry
|
|
540
|
+
*/
|
|
541
|
+
log(node: Tree | J.Container<any> | J.LeftPadded<any> | J.RightPadded<any>, cursor?: Cursor, label?: string): void {
|
|
542
|
+
this.outputLines = [];
|
|
543
|
+
|
|
544
|
+
// Calculate indentation based on cursor depth
|
|
545
|
+
const depth = this.calculateDepth(cursor);
|
|
546
|
+
const indent = this.options.indent.repeat(depth);
|
|
547
|
+
|
|
548
|
+
if (label) {
|
|
549
|
+
this.outputLines.push(`${indent}// ${label}`);
|
|
550
|
+
}
|
|
551
|
+
|
|
552
|
+
// Build single-line output for the node
|
|
553
|
+
let line = indent;
|
|
554
|
+
|
|
555
|
+
// Find property path from cursor
|
|
556
|
+
const propPath = findPropertyPath(cursor, node);
|
|
557
|
+
if (propPath) {
|
|
558
|
+
line += `${propPath}: `;
|
|
559
|
+
}
|
|
560
|
+
|
|
561
|
+
if (this.isContainer(node)) {
|
|
562
|
+
const container = node as J.Container<any>;
|
|
563
|
+
const before = formatSpace(container.before);
|
|
564
|
+
line += `Container<${container.elements?.length ?? 0}>{before=${before}}`;
|
|
565
|
+
} else if (this.isLeftPadded(node)) {
|
|
566
|
+
const lp = node as J.LeftPadded<any>;
|
|
567
|
+
const before = formatSpace(lp.before);
|
|
568
|
+
line += `LeftPadded{before=${before}`;
|
|
569
|
+
// Show element value if it's a primitive
|
|
570
|
+
if (lp.element !== null && lp.element !== undefined) {
|
|
571
|
+
const elemType = typeof lp.element;
|
|
572
|
+
if (elemType === 'string' || elemType === 'number' || elemType === 'boolean') {
|
|
573
|
+
line += ` element=${JSON.stringify(lp.element)}`;
|
|
574
|
+
}
|
|
575
|
+
}
|
|
576
|
+
line += '}';
|
|
577
|
+
} else if (this.isRightPadded(node)) {
|
|
578
|
+
const rp = node as J.RightPadded<any>;
|
|
579
|
+
const after = formatSpace(rp.after);
|
|
580
|
+
line += `RightPadded{after=${after}`;
|
|
581
|
+
// Show element value if it's a primitive
|
|
582
|
+
if (rp.element !== null && rp.element !== undefined) {
|
|
583
|
+
const elemType = typeof rp.element;
|
|
584
|
+
if (elemType === 'string' || elemType === 'number' || elemType === 'boolean') {
|
|
585
|
+
line += ` element=${JSON.stringify(rp.element)}`;
|
|
586
|
+
}
|
|
587
|
+
}
|
|
588
|
+
line += '}';
|
|
589
|
+
} else if (isJava(node)) {
|
|
590
|
+
const jNode = node as J;
|
|
591
|
+
const typeName = shortTypeName(jNode.kind);
|
|
592
|
+
line += `${typeName}{`;
|
|
593
|
+
const summary = getNodeSummary(jNode);
|
|
594
|
+
if (summary) {
|
|
595
|
+
line += `${summary} `;
|
|
596
|
+
}
|
|
597
|
+
line += `prefix=${formatSpace(jNode.prefix)}}`;
|
|
598
|
+
} else {
|
|
599
|
+
line += `<unknown: ${typeof node}>`;
|
|
600
|
+
}
|
|
601
|
+
|
|
602
|
+
this.outputLines.push(line);
|
|
603
|
+
|
|
604
|
+
// Add cursor messages on separate line if present
|
|
605
|
+
if (this.options.includeCursorMessages && cursor) {
|
|
606
|
+
const messages = formatCursorMessages(cursor);
|
|
607
|
+
if (messages !== '<no messages>') {
|
|
608
|
+
this.outputLines.push(`${indent} ⤷ ${messages}`);
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
this.flush();
|
|
613
|
+
}
|
|
614
|
+
|
|
615
|
+
/**
|
|
616
|
+
* Print a tree node AND all its children recursively.
|
|
617
|
+
* Use this to dump an entire subtree structure.
|
|
618
|
+
*
|
|
439
619
|
* @param tree The tree node to print
|
|
440
620
|
* @param cursor Optional cursor for context
|
|
441
621
|
* @param label Optional label to identify this debug output (shown as comment before output)
|
|
@@ -742,7 +922,7 @@ export class LstDebugPrinter {
|
|
|
742
922
|
if (this.options.output === 'console') {
|
|
743
923
|
console.info(output);
|
|
744
924
|
} else {
|
|
745
|
-
fs.appendFileSync(this.options.output, output + '\n
|
|
925
|
+
fs.appendFileSync(this.options.output, output + '\n');
|
|
746
926
|
}
|
|
747
927
|
|
|
748
928
|
this.outputLines = [];
|
|
@@ -750,13 +930,27 @@ export class LstDebugPrinter {
|
|
|
750
930
|
}
|
|
751
931
|
|
|
752
932
|
/**
|
|
753
|
-
* A visitor that prints the LST structure as it traverses
|
|
754
|
-
*
|
|
933
|
+
* A visitor that prints the LST structure as it traverses, showing each node
|
|
934
|
+
* with proper indentation to visualize the tree hierarchy.
|
|
935
|
+
*
|
|
936
|
+
* Use this to print an entire tree or subtree with full traversal. Each node
|
|
937
|
+
* is printed as it's visited, with indentation showing the tree depth.
|
|
938
|
+
*
|
|
939
|
+
* For logging individual nodes from within your own visitor without recursion,
|
|
940
|
+
* use `LstDebugPrinter.log()` or `debugLog()` instead.
|
|
755
941
|
*
|
|
756
942
|
* Usage:
|
|
757
943
|
* ```typescript
|
|
758
|
-
*
|
|
944
|
+
* // Print entire tree structure during traversal
|
|
945
|
+
* const debugVisitor = new LstDebugVisitor();
|
|
759
946
|
* await debugVisitor.visit(tree, ctx);
|
|
947
|
+
*
|
|
948
|
+
* // With options
|
|
949
|
+
* const debugVisitor = new LstDebugVisitor(
|
|
950
|
+
* { includeCursorMessages: true },
|
|
951
|
+
* { printPreVisit: true, printPostVisit: false }
|
|
952
|
+
* );
|
|
953
|
+
* await debugVisitor.visit(subtree, ctx);
|
|
760
954
|
* ```
|
|
761
955
|
*/
|
|
762
956
|
export class LstDebugVisitor<P> extends JavaScriptVisitor<P> {
|
|
@@ -794,12 +988,11 @@ export class LstDebugVisitor<P> extends JavaScriptVisitor<P> {
|
|
|
794
988
|
}
|
|
795
989
|
line += `prefix=${prefix}}`;
|
|
796
990
|
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
// Show cursor messages on a separate indented line
|
|
991
|
+
// Append cursor messages on same line to avoid empty line issues
|
|
800
992
|
if (messages !== '<no messages>') {
|
|
801
|
-
|
|
993
|
+
line += ` ${messages}`;
|
|
802
994
|
}
|
|
995
|
+
console.info(line);
|
|
803
996
|
}
|
|
804
997
|
this.depth++;
|
|
805
998
|
return tree;
|
|
@@ -829,11 +1022,11 @@ export class LstDebugVisitor<P> extends JavaScriptVisitor<P> {
|
|
|
829
1022
|
}
|
|
830
1023
|
line += `Container<${container.elements.length}>{before=${before}}`;
|
|
831
1024
|
|
|
832
|
-
|
|
833
|
-
|
|
1025
|
+
// Append cursor messages on same line to avoid empty line issues
|
|
834
1026
|
if (messages !== '<no messages>') {
|
|
835
|
-
|
|
1027
|
+
line += ` ${messages}`;
|
|
836
1028
|
}
|
|
1029
|
+
console.info(line);
|
|
837
1030
|
}
|
|
838
1031
|
this.depth++;
|
|
839
1032
|
const result = await super.visitContainer(container, p);
|
|
@@ -867,11 +1060,11 @@ export class LstDebugVisitor<P> extends JavaScriptVisitor<P> {
|
|
|
867
1060
|
}
|
|
868
1061
|
line += '}';
|
|
869
1062
|
|
|
870
|
-
|
|
871
|
-
|
|
1063
|
+
// Append cursor messages on same line to avoid empty line issues
|
|
872
1064
|
if (messages !== '<no messages>') {
|
|
873
|
-
|
|
1065
|
+
line += ` ${messages}`;
|
|
874
1066
|
}
|
|
1067
|
+
console.info(line);
|
|
875
1068
|
}
|
|
876
1069
|
this.depth++;
|
|
877
1070
|
const result = await super.visitLeftPadded(left, p);
|
|
@@ -905,11 +1098,11 @@ export class LstDebugVisitor<P> extends JavaScriptVisitor<P> {
|
|
|
905
1098
|
}
|
|
906
1099
|
line += '}';
|
|
907
1100
|
|
|
908
|
-
|
|
909
|
-
|
|
1101
|
+
// Append cursor messages on same line to avoid empty line issues
|
|
910
1102
|
if (messages !== '<no messages>') {
|
|
911
|
-
|
|
1103
|
+
line += ` ${messages}`;
|
|
912
1104
|
}
|
|
1105
|
+
console.info(line);
|
|
913
1106
|
}
|
|
914
1107
|
this.depth++;
|
|
915
1108
|
const result = await super.visitRightPadded(right, p);
|
|
@@ -919,7 +1112,22 @@ export class LstDebugVisitor<P> extends JavaScriptVisitor<P> {
|
|
|
919
1112
|
}
|
|
920
1113
|
|
|
921
1114
|
/**
|
|
922
|
-
* Convenience function to
|
|
1115
|
+
* Convenience function to log a single node (no recursion).
|
|
1116
|
+
* Use this from visitor methods to log individual nodes as they are visited.
|
|
1117
|
+
*
|
|
1118
|
+
* @param node The node to log
|
|
1119
|
+
* @param cursor Optional cursor for context and messages
|
|
1120
|
+
* @param label Optional label to identify this log entry
|
|
1121
|
+
* @param options Optional debug options
|
|
1122
|
+
*/
|
|
1123
|
+
export function debugLog(node: Tree, cursor?: Cursor, label?: string, options?: LstDebugOptions): void {
|
|
1124
|
+
new LstDebugPrinter(options).log(node, cursor, label);
|
|
1125
|
+
}
|
|
1126
|
+
|
|
1127
|
+
/**
|
|
1128
|
+
* Convenience function to print a tree node AND all its children recursively.
|
|
1129
|
+
* Use this to dump an entire subtree structure.
|
|
1130
|
+
*
|
|
923
1131
|
* @param tree The tree node to print
|
|
924
1132
|
* @param cursor Optional cursor for context
|
|
925
1133
|
* @param label Optional label to identify this debug output
|