Как использовать оператор непосредственно перед другим оператором, используя clang
Я должен использовать некоторые заявления в Clang, добавив заявление прямо перед ним. У меня есть указатель на объект Expr, с помощью которого мне нужно вставить другой оператор непосредственно перед оператором, содержащим его. Прямо сейчас я использую хакерский подход, который просто перемещает назад указатель SourceLocation, пока я не вижу a; или или {. Но это не работает для всех случаев. например, когда я пытаюсь применить для утверждения, это не удается. Есть ли класс в Clang, который предоставляет метод, чтобы сделать это более чистым способом?
РЕДАКТИРОВАТЬ: Вот фрагмент моего кода. Мне нужно вставить assert непосредственно перед оператором, содержащим разыменование указателя.
bool MyRecursiveASTVisitor::VisitUnaryOperator(UnaryOperator *E){
if (E->getOpcode() == UO_Deref ){
Expr *e1 = E->getSubExpr();
SourceLocation SL = E->getLocStart();
}
return true;
}