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']])