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)
CT->_Namespace = NS; CT->_Namespace = NS;
NS->Templates.push_back(CT); 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()); CT->Parameters = WalkTemplateParameterList(TD->getTemplateParameters());
return CT; return CT;

12
tests/Basic/Basic.h

@ -673,6 +673,18 @@ private:
int m; 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 class DLL_API DifferentConstOverloads
{ {
public: public:

Loading…
Cancel
Save