Fix constructor prefix skipping

This commit is contained in:
Jonathan Müller 2017-06-23 07:22:44 +02:00
commit 232842f2f6

View file

@ -4,7 +4,6 @@
#include <cppast/cpp_function.hpp>
#include <cppast/cpp_member_function.hpp>
#include <clang-c/Index.h>
#include "libclang_visitor.hpp"
#include "parse_functions.hpp"
@ -159,11 +158,13 @@ namespace
// name can have multiple tokens if it is an operator
if (!detail::skip_if(stream, name, true))
return false;
else if (!is_ctor)
return true;
// if we reach this point, we've encountered the name of a constructor
else if (stream.peek() == "," || stream.peek() == ">" || stream.peek() == ">>")
// argument to template parameters
return false;
else if (is_ctor)
{
// need to make sure it is not actually a class name
else if (stream.peek() == "::")
if (stream.peek() == "::")
{
// after name came "::", it is a class name
stream.set_cur(cur);
@ -191,6 +192,9 @@ namespace
else
return true;
}
else
return true;
}
prefix_info parse_prefix_info(detail::token_stream& stream, const char* name, bool is_ctor)
{