Fix parsing of explicit template instantiation

Fixes #82.
This commit is contained in:
Jonathan Müller 2019-11-18 17:10:22 +01:00
commit 000febb999
2 changed files with 10 additions and 2 deletions

View file

@ -19,8 +19,11 @@ cpp_class_kind parse_class_kind(detail::cxtoken_stream& stream)
kind = clang_getCursorKind(stream.cursor());
if (detail::skip_if(stream, "template"))
{
// skip template parameters
detail::skip_brackets(stream);
if (!stream.done() && *stream.cur() == "<")
detail::skip_brackets(stream);
}
detail::skip_if(stream, "friend");

View file

@ -98,6 +98,11 @@ struct b<0, T> {};
/// template<>
/// class a<int>;
extern template class a<int>;
// non-extern template as well
/// template<>
/// class a<int>;
template class a<int>;
)";
cpp_entity_index idx;
@ -269,5 +274,5 @@ extern template class a<int>;
else
REQUIRE(false);
});
REQUIRE(count == 5u);
REQUIRE(count == 6u);
}