1 #include "clangmm.hpp" 2 #include <cassert> 3 #include <fstream> 4 #include <iostream> 5 #include <regex> 6 7 using namespace std; 8 main()9int main() { 10 std::string tests_path = LIBCLANGMM_TESTS_PATH; 11 std::string path(tests_path + "/case/main_error.cpp"); 12 13 auto index = std::make_shared<clangmm::Index>(0, 0); 14 15 std::vector<std::string> arguments; 16 auto clang_version_string = clangmm::to_string(clang_getClangVersion()); 17 const static std::regex clang_version_regex("^[A-Za-z ]+([0-9.]+).*$"); 18 std::smatch sm; 19 if(std::regex_match(clang_version_string, sm, clang_version_regex)) { 20 auto clang_version = sm[1].str(); 21 arguments.emplace_back("-I/usr/lib/clang/" + clang_version + "/include"); 22 arguments.emplace_back("-I/usr/lib64/clang/" + clang_version + "/include"); // For Fedora 23 } 24 25 clangmm::TranslationUnit tu(index, path, arguments); 26 27 auto diagnostics = tu.get_diagnostics(); 28 assert(diagnostics.size() > 0); 29 assert(!diagnostics[0].spelling.empty()); 30 assert(diagnostics[0].severity == clangmm::Diagnostic::Severity::Error); 31 } 32