grasp
grasp copied to clipboard
How do I match two calls to the same function in the same block?
I'm trying to match any body block that has two calls to the same (explicitly named) function, e.g. it should match this block:
it('should match this sub-block', () => {
// do Javascript things
thisFunctionShouldOnlyBeCalledOnce(123);
// do JavaScript things
thisFunctionShouldOnlyBeCalledOnce(456);
// do JavaScript things
});
And it should not match this block:
it('should match this sub-block', () => {
// do Javascript things
thisFunctionShouldOnlyBeCalledOnce(123);
// do JavaScript things
});
I tried a bunch of things, the "closest" I got were:
grasp --squery 'call[callee=#it].arguments:nth(1).body! call[callee=#funcName] ~ call[callee=#funcName]'grasp --equery 'funcName(__); _$; funcName(__);
But to no avail. Is this something that can be done with grasp?