Browse Source

Fixed cyclic dependency when parsing class templates with friends.

Fixes ddobrev/QtSharp#22. Thanks to @golddranks for debugging the problem and the fix.
pull/404/head
triton 11 years ago
parent
commit
f2de736f81
  1. 5
      src/CppParser/Parser.cpp
  2. 12
      tests/Basic/Basic.h

5
src/CppParser/Parser.cpp

@ -960,7 +960,10 @@ ClassTemplate* Parser::WalkClassTemplate(clang::ClassTemplateDecl* TD) @@ -960,7 +960,10 @@ ClassTemplate* Parser::WalkClassTemplate(clang::ClassTemplateDecl* TD)
CT->_Namespace = NS;
NS->Templates.push_back(CT);
CT->TemplatedDecl = WalkRecordCXX(TD->getTemplatedDecl());
bool Process;
CT->TemplatedDecl = GetRecord(TD->getTemplatedDecl(), Process);
WalkRecordCXX(TD->getTemplatedDecl());
CT->Parameters = WalkTemplateParameterList(TD->getTemplateParameters());
return CT;

12
tests/Basic/Basic.h

@ -673,6 +673,18 @@ private: @@ -673,6 +673,18 @@ private:
int m;
};
template<typename T> class FriendTemplate
{
template<typename TT>
friend FriendTemplate<TT> func(const FriendTemplate<TT>&);
friend FriendTemplate;
friend class FriendTemplate;
template<typename TT>
friend class FriendTemplate;
};
class DLL_API DifferentConstOverloads
{
public:

Loading…
Cancel
Save