[cfe-commits] r149127 - in /cfe/trunk: include/clang/AST/ include/clang/Parse/ include/clang/Sema/ lib/AST/ lib/Parse/ lib/Sema/ lib/Serialization/ tools/libclang/

Eli Friedman eli.friedman at gmail.com
Thu Feb 2 14:48:06 PST 2012


On Fri, Jan 27, 2012 at 1:46 AM, Abramo Bagnara
<abramo.bagnara at gmail.com> wrote:
> Author: abramo
> Date: Fri Jan 27 03:46:47 2012
> New Revision: 149127
>
> URL: http://llvm.org/viewvc/llvm-project?rev=149127&view=rev
> Log:
> Added source location for the template keyword in AST template-id expressions.
>
> Modified:
>    cfe/trunk/include/clang/AST/Expr.h
>    cfe/trunk/include/clang/AST/ExprCXX.h
>    cfe/trunk/include/clang/AST/Stmt.h
>    cfe/trunk/include/clang/AST/TemplateBase.h
>    cfe/trunk/include/clang/Parse/Parser.h
>    cfe/trunk/include/clang/Sema/ParsedTemplate.h
>    cfe/trunk/include/clang/Sema/Sema.h
>    cfe/trunk/lib/AST/ASTImporter.cpp
>    cfe/trunk/lib/AST/Expr.cpp
>    cfe/trunk/lib/AST/ExprCXX.cpp
>    cfe/trunk/lib/AST/StmtPrinter.cpp
>    cfe/trunk/lib/AST/TemplateBase.cpp
>    cfe/trunk/lib/Parse/ParseDecl.cpp
>    cfe/trunk/lib/Parse/ParseDeclCXX.cpp
>    cfe/trunk/lib/Parse/ParseExpr.cpp
>    cfe/trunk/lib/Parse/ParseExprCXX.cpp
>    cfe/trunk/lib/Parse/ParseStmt.cpp
>    cfe/trunk/lib/Parse/ParseTemplate.cpp
>    cfe/trunk/lib/Parse/Parser.cpp
>    cfe/trunk/lib/Sema/SemaCXXScopeSpec.cpp
>    cfe/trunk/lib/Sema/SemaChecking.cpp
>    cfe/trunk/lib/Sema/SemaCodeComplete.cpp
>    cfe/trunk/lib/Sema/SemaDecl.cpp
>    cfe/trunk/lib/Sema/SemaDeclAttr.cpp
>    cfe/trunk/lib/Sema/SemaDeclCXX.cpp
>    cfe/trunk/lib/Sema/SemaExpr.cpp
>    cfe/trunk/lib/Sema/SemaExprCXX.cpp
>    cfe/trunk/lib/Sema/SemaExprMember.cpp
>    cfe/trunk/lib/Sema/SemaOverload.cpp
>    cfe/trunk/lib/Sema/SemaStmt.cpp
>    cfe/trunk/lib/Sema/SemaTemplate.cpp
>    cfe/trunk/lib/Sema/SemaType.cpp
>    cfe/trunk/lib/Sema/TreeTransform.h
>    cfe/trunk/lib/Serialization/ASTReaderStmt.cpp
>    cfe/trunk/lib/Serialization/ASTWriterStmt.cpp
>    cfe/trunk/tools/libclang/CIndex.cpp

It looks like this change had semantic side-effects; try the following
testcase (derived from the gcc testsuite):

struct A
{
  template <int I>
  struct B {
    static void b1();
  };
};
template<int I> void f2()
{
  A::template B<I>::template b1();
}
template void f2<0>();

-Eli




More information about the cfe-commits mailing list