次のコード ブロックを表す複合ステートメントがあります。
{
int a = 3;
foo(a);
a = 4;
foo(a);
a = 5;
}
元のステートメントの最初の 2 つのステートメントを含む、次のような別の複合ステートメントを作成したいと思います。
{
int a = 3;
foo(a);
}
そして、次の 2 つのステートメントを含む別のステートメント:
{
a = 4;
foo(a);
}
foo(a)
asへの呼び出しがありますclang::CallExpr
。
私がこれまでに持っている唯一のアイデアは、元の複合ステートメントを反復しすぎて、見つかるまで他の複合ステートメントを埋めるfoo(a)
ことです。しかし、API にはステートメントを比較する機能がないようです。より良いアイデアはありますか?