From 2943ea1fd61526f29748c896e49a565a0c7c5909 Mon Sep 17 00:00:00 2001 From: Adam Chalmers Date: Tue, 14 Jan 2025 11:55:06 -0600 Subject: [PATCH] Fix test: traverse was not handling CallExpressionKw --- src/lang/queryAst.test.ts | 4 ++-- src/lang/queryAst.ts | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/lang/queryAst.test.ts b/src/lang/queryAst.test.ts index 866bb9faa..f804a44d0 100644 --- a/src/lang/queryAst.test.ts +++ b/src/lang/queryAst.test.ts @@ -141,14 +141,14 @@ yo2 = hmm([identifierGuy + 5])` }) it('find an UNsafe Identifier, as it is a callee', () => { const ast = assertParse(code) - const rangeStart = code.indexOf('ine([2.8,') + const rangeStart = code.indexOf('ine(end = [2.8,') const result = isNodeSafeToReplace( ast, topLevelRange(rangeStart, rangeStart) ) if (err(result)) throw result expect(result.isSafe).toBe(false) - expect(result.value?.type).toBe('CallExpression') + expect(result.value?.type).toBe('CallExpressionKw') expect(code.slice(result.value.start, result.value.end)).toBe( 'line(end = [2.8, 0])' ) diff --git a/src/lang/queryAst.ts b/src/lang/queryAst.ts index f52ac1185..250f7095f 100644 --- a/src/lang/queryAst.ts +++ b/src/lang/queryAst.ts @@ -478,6 +478,22 @@ export function traverse( [index, 'index'], ]) ) + } else if (_node.type === 'CallExpressionKw') { + _traverse(_node.callee, [...pathToNode, ['callee', 'CallExpressionKw']]) + if (_node.unlabeled !== null) { + _traverse(_node.unlabeled, [ + ...pathToNode, + ['unlabeled', 'Unlabeled arg'], + ]) + } + _node.arguments.forEach((arg, index) => + _traverse(arg.arg, [ + ...pathToNode, + ['arguments', 'CallExpressionKw'], + [index, 'arg index'], + ['arg', 'LabeledArg -> Arg'], + ]) + ) } else if (_node.type === 'BinaryExpression') { _traverse(_node.left, [...pathToNode, ['left', 'BinaryExpression']]) _traverse(_node.right, [...pathToNode, ['right', 'BinaryExpression']])