Skip to content

How do I match two calls to the same function in the same block? #124

@danielrozenberg

Description

@danielrozenberg

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?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions