Neither the before code nor the after code looks right...

The outermost lexical level (and possibly others in the future) can have 
multiple template parameter lists, and you should use 
`getNumTemplateParameterLists`/`getTemplateParameterList` on each level to add 
all of them (these exist on `DeclaratorDecl` for `FunctionDecls` and on 
`TagDecl` for the other cases). For instance:

  template<typename A> struct S {
    template<typename B> struct T;
  };
  template<typename A> template<typename B> struct S<A>::T {
    template<typename C, typename D> struct U;
    template<typename C> struct U<C, C> {
      template<typename E> void f() { /* ... */ }
    };
  };

http://reviews.llvm.org/D3555



_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to