llvm-project/clang/test/SemaTemplate
Douglas Gregor 90a1a65194 Introduce a new expression type, UnresolvedDeclRefExpr, that describes
dependent qualified-ids such as

  Fibonacci<N - 1>::value

where N is a template parameter. These references are "unresolved"
because the name is dependent and, therefore, cannot be resolved to a
declaration node (as we would do for a DeclRefExpr or
QualifiedDeclRefExpr). UnresolvedDeclRefExprs instantiate to
DeclRefExprs, QualifiedDeclRefExprs, etc.

Also, be a bit more careful about keeping only a single set of
specializations for a class template, and instantiating from the
definition of that template rather than a previous declaration. In
general, we need a better solution for this for all TagDecls, because
it's too easy to accidentally look at a declaration that isn't the
definition.

We can now process a simple Fibonacci computation described as a
template metaprogram.

llvm-svn: 67308
2009-03-19 17:26:29 +00:00
..
class-template-decl.cpp Fix a long standard problem with clang retaining "too much" sugar 2009-02-19 23:45:49 +00:00
class-template-id-2.cpp Print the context of tag types as part of pretty-printing, e.g., 2009-03-19 04:25:59 +00:00
class-template-id.cpp Small sanity-checking testcase 2009-03-17 23:49:44 +00:00
class-template-spec.cpp Add pretty-printing for class template specializations, e.g., 2009-03-10 18:33:27 +00:00
default-arguments.cpp Implement parsing of nested-name-specifiers that involve template-ids, e.g., 2009-02-25 19:37:18 +00:00
fibonacci.cpp Introduce a new expression type, UnresolvedDeclRefExpr, that describes 2009-03-19 17:26:29 +00:00
fun-template-def.cpp Make more AST nodes and semantic checkers dependent-expression-aware. 2009-02-26 14:39:58 +00:00
instantiate-array.cpp (Hopefully) instantiate dependent array types correctly. 2009-03-15 20:12:13 +00:00
instantiate-enum.cpp Implement instantiation of enums within class templates. This isn't 2009-03-17 19:05:46 +00:00
instantiate-expr-1.cpp Implement template instantiation for the prefix unary operators. As 2009-03-13 23:49:33 +00:00
instantiate-expr-2.cpp added type dependent testcase 2009-03-18 20:26:44 +00:00
instantiate-field.cpp Implement basic template instantiation for fields. Reshuffle checking 2009-03-11 18:59:21 +00:00
instantiate-typedef.cpp Introduce a representation for types that we referred to via a 2009-03-19 00:18:19 +00:00
instantiation-backtrace.cpp If we run into multiple errors within the same template instantiation, 2009-03-10 18:52:44 +00:00
instantiation-default-1.cpp Extend the notion of active template instantiations to include the 2009-03-10 20:44:00 +00:00
instantiation-default-2.cpp Extend the notion of active template instantiations to include the 2009-03-10 20:44:00 +00:00
instantiation-default-3.cpp Add a test case that goes with the last commit 2009-03-09 23:48:53 +00:00
instantiation-depth.cpp Add pretty-printing for class template specializations, e.g., 2009-03-10 18:33:27 +00:00
nested-name-spec-template.cpp Fix various problems with matching out-of-line definitions of static 2009-03-11 23:52:16 +00:00
qualified-names-diag.cpp Print the context of tag types as part of pretty-printing, e.g., 2009-03-19 04:25:59 +00:00
right-angle-brackets-0x.cpp Cope with use of the token '>>' inside a template argument list, e.g., 2009-02-25 23:02:36 +00:00
right-angle-brackets-98.cpp Introduce code modification hints into the diagnostics system. When we 2009-02-26 21:00:50 +00:00
temp_arg.cpp Implement parsing of nested-name-specifiers that involve template-ids, e.g., 2009-02-25 19:37:18 +00:00
temp_arg_nontype.cpp Check for overflow and signedness problems with template 2009-03-14 00:20:21 +00:00
temp_arg_template.cpp Implement parsing of nested-name-specifiers that involve template-ids, e.g., 2009-02-25 19:37:18 +00:00
temp_arg_type.cpp Implement template instantiation for ClassTemplateSpecializationTypes, 2009-03-09 23:48:35 +00:00
temp_param.cpp Add partial semantic checking of template arguments that are meant for 2009-02-11 00:19:33 +00:00