// Copyright (C) 2017-2022 Jonathan Müller and cppast contributors // SPDX-License-Identifier: MIT #include "test_parser.hpp" #include using namespace cppast; TEST_CASE("stdlib", "[!hide][integration]") { auto code = R"( // list of headers from: http://en.cppreference.com/w/cpp/header //#include -- problem with compiler built-in stuff on OSX #include //#include -- same as above #include #include #include #include #include #include #include #include #include #include #include #include #include //#include -- something weird going on here #include #include #include #include //#include -- missing types from C header (for some reason) #include //#include -- weird issue with compiler built-in stuff #include #include #include #include #include #include #include #include //#include -- not supported on CI #include #include #include #include #include #include #include #include #include #include #include #include #include #include //#include -- non-conforming GCC extension with regards to constexpr //#include -- weird double include issue under MSVC #include #include #include #include //#include -- same issue with cinttypes #include #include #include #include #include #include #include #include #include #include #include //#include -- issue on OSX #include //#include -- issue on MSVC #include #include #include #include )"; write_file("stdlib.cpp", code); cpp_entity_index idx; simple_file_parser parser(type_safe::ref(idx), default_logger()); libclang_compile_config config; config.set_flags(cpp_standard::cpp_latest); auto file = parser.parse("stdlib.cpp", config); REQUIRE(!parser.error()); REQUIRE(file); REQUIRE(resolve_includes(parser, file.value(), config) == 61); REQUIRE(!parser.error()); } TEST_CASE("cppast", "[!hide][integration]") { const char* files[] = { #include }; cpp_entity_index idx; simple_file_parser parser(type_safe::ref(idx), default_logger()); libclang_compilation_database database(CPPAST_COMPILE_COMMANDS); libclang_compile_config config(database, CPPAST_INTEGRATION_FILE); config.set_flags(cpp_standard::cpp_latest); config.fast_preprocessing(true); parse_files(parser, files, config); REQUIRE(!parser.error()); }