llvm/llvm-project

hasAnyArgument() spuriously ignores match

オープン

#75,754 opened on 2023/12/17

 (18 件のコメント) (0 件のリアクション) (1 人の担当者)C++ (10,782 件のフォーク)batch import
clang-queryclang:frontendconfirmedgood first issue

Repository metrics

Stars
 (26,378 個のスター)
PR merge metrics
 (平均マージ 1d 2h) (30d で 1,000 merged PRs)

説明

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.

コントリビューターガイド