llvm/llvm-project

hasAnyArgument() spuriously ignores match

Open

#75 754 ouverte le 17 déc. 2023

Voir sur GitHub
 (18 commentaires) (0 réactions) (1 assigné)C++ (10 782 forks)batch import
clang-queryclang:frontendconfirmedgood first issue

Métriques du dépôt

Stars
 (26 378 stars)
Métriques de merge PR
 (Merge moyen 1j 2h) (1 000 PRs mergées en 30 j)

Description

hasAnyArgument() spuriously ignores a match with the program:

void foo (void *, void *);

struct S {
};

void f() {
   S s;
   foo(&s, &s);
}

and the query:

m callExpr(hasAnyArgument(hasType(asString("S *"))))
0 matches. 

However, the query:

m callExpr(hasArgument(0,hasType(asString("S *"))))

returns the expected result:

...clang_ast_bug_2.cpp:10:2: note: "root" binds here
 10 |         foo(&s, &s);
      |         ^~~~~~~~~~~
1 match.

I am using clang-query 17.0.2 built, I believe, by Mozilla.

Guide contributeur