[cfe-dev] Incorrect output from typePrinter
Dan Jump
Dan.Jump at microsoft.com
Wed Aug 27 09:40:07 PDT 2014
Hi,
I'm using clang libraries to parse the input code below.
I call getAsString on the QualType for the return value of Real::Get() and get:
Test2::Thing<Zoo>*
This is wrong, it should return:
Test2::Thing<Test1::Zoo>*
I've stepped through the typePrinter code. Test2::Thing is an elaborated type, and TypePrinter::printElaboratedBefore turns off the scope printing when it prints the template arguments. This results in Test1::Zoo being printed without any scope, hence the bug.
Is this a known issue and any thoughts on a workaround?
Sample code:
namespace Test1 { struct Zoo; }
namespace Test2 {
template<typename T>
struct Thing {};
template<typename T>
struct Base
{
virtual Test2::Thing<T>* Get() = 0;
};
struct Real : public Base < Test1::Zoo >
{
};
}
Thanks,
-dan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20140827/690781fc/attachment.html>
More information about the cfe-dev
mailing list