如何从锵Expr的对象获取语句类对象(How to get Stmt class object fr

2019-10-18 16:11发布

我写一个铛插件在C代码中插入断言。 我实现了一个类访问每个一元运算符,并检查它是否是一个指针引用。 如果是这样,我想插入一个空指针断言检查它。 但我坚持,因为我无法弄清楚如何使包含在锵后面的Expr对象的语句对象。

这是我的代码,仪器的说法,但在一个完全错误的位置(即刚刚指针引用后,我想只含有反引用的语句之前做到这一点。

bool MyRecursiveASTVisitor::VisitUnaryOperator(UnaryOperator *E){
    if (E->getOpcode() == UO_Deref ){
        Expr *e1 = E->getSubExpr();
        SourceLocation SL = E->getLocEnd();
        Rewrite.InsertText(SL, "assert(", true, true);
        Rewrite.InsertText(SL, Rewrite.ConvertToString(e1), true, true);
        Rewrite.InsertText(SL, " != NULL);", true, true);
    }
    return true;
}

Answer 1:

如何ASTContext::getParents

您还可以建立一个与部分家长地图ParentMap类。



文章来源: How to get Stmt class object from Expr object in Clang