| 57 | using TranslationUnit = std::unique_ptr<CXTranslationUnitImpl, DisposeTranslationUnit>; |
| 58 | |
| 59 | TranslationUnit parse(const QByteArray& code, QString* fileName = nullptr) |
| 60 | { |
| 61 | QTemporaryFile tempFile; |
| 62 | QVERIFY_RETURN(tempFile.open(), {}); |
| 63 | tempFile.write(code); |
| 64 | tempFile.flush(); |
| 65 | |
| 66 | if (fileName) { |
| 67 | *fileName = tempFile.fileName(); |
| 68 | } |
| 69 | |
| 70 | std::unique_ptr<void, void(*)(CXIndex)> index(clang_createIndex(1, 1), clang_disposeIndex); |
| 71 | const QList<const char*> args = {"-std=c++20", "-xc++", "-Wall", "-nostdinc", "-nostdinc++"}; |
| 72 | auto unit = TranslationUnit(clang_parseTranslationUnit(index.get(), qPrintable(tempFile.fileName()), args.data(), |
| 73 | args.size(), nullptr, 0, CXTranslationUnit_None)); |
| 74 | QVERIFY_RETURN(unit, {}); |
| 75 | return unit; |
| 76 | } |
| 77 | |
| 78 | TranslationUnit runVisitor(const QByteArray& code, CXCursorVisitor visitor, CXClientData data) |
| 79 | { |
no test coverage detected