[llvm-dev] Clang-AST extract information out of invalid method declaration

Baudouin Feildel via llvm-dev llvm-dev at lists.llvm.org
Thu Nov 21 23:57:52 PST 2019


Hello,

In our company we are integrate a closed source library in our
project. Everything is working when compiling with MSVC, but clang
refuse to compile the source because of some non conformant method
declaration. We would like to use clang LibTooling to automatically
refactor this automatically across all versions of the vendor library.
Here is a short example:

class Foo {
public:
    int compute(int a, int b, std::string& error_message = std::string());
};

We want to refactor such code into:

class Foo {
public:
    int compute(int a, int b, std::string& error_message);
    inline int compute(int a, int b) {
        std::string tmp;
        return compute(a, b, tmp);
    }
};

When going through the clang ast I can successfully find the method
with non-const reference parameter, but the default argument value is
not present in the AST. I understand that this is because it is wrong
code, but I wonder if there is a way to search all instances of this
error in order to refactor them.

Do you have any idea how we can refactor this automatically with clang tools ?

Thanks for your help
Best regards

-- 
Baudouin Feildel


More information about the llvm-dev mailing list