diff --git a/src/cpp_language_linkage.cpp b/src/cpp_language_linkage.cpp index 7355226..051ce01 100644 --- a/src/cpp_language_linkage.cpp +++ b/src/cpp_language_linkage.cpp @@ -15,7 +15,11 @@ cpp_entity_kind cpp_language_linkage::kind() noexcept bool cpp_language_linkage::is_block() const noexcept { - DEBUG_ASSERT(begin() != end(), detail::assert_handler{}, "empty container"); + if (begin() == end()) + { + // An empty container must be a "block" of the form: extern "C" {} + return true; + } return std::next(begin()) != end(); // more than one entity, so block } diff --git a/test/cpp_language_linkage.cpp b/test/cpp_language_linkage.cpp index dd433a6..4f65ba5 100644 --- a/test/cpp_language_linkage.cpp +++ b/test/cpp_language_linkage.cpp @@ -36,6 +36,10 @@ extern "C++" // yup enum e {}; } +/// extern "C++"{ +/// } +extern "C++" {} + enum f {}; )"; @@ -50,7 +54,7 @@ enum f {}; else REQUIRE(false); }); - REQUIRE(count == 2u); + REQUIRE(count == 3u); // check enums for their correct parent count = test_visit(*file,