llvm-project/clang/test/SemaTemplate
Douglas Gregor ff6cbdf806 Keep track of more information within the template instantiation stack, e.g.,
by distinguishing between substitution that occurs for template
argument deduction vs. explicitly-specifiad template arguments. This
is used both to improve diagnostics and to make sure we only provide
SFINAE in those cases where SFINAE should apply.

In addition, deal with the sticky issue where SFINAE only considers
substitution of template arguments into the *type* of a function
template; we need to issue hard errors beyond this point, as
test/SemaTemplate/operator-template.cpp illustrates.

llvm-svn: 74651
2009-07-01 22:01:06 +00:00
..
ackermann.cpp Several improvements to template argument deduction: 2009-06-05 00:53:49 +00:00
class-template-ctor-initializer.cpp Patch to implement template types in ctor-initializer list. 2009-07-01 19:21:19 +00:00
class-template-decl.cpp Robustify a bunch of C++-related declaration actions. 2009-06-22 23:20:33 +00:00
class-template-id-2.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
class-template-id.cpp Fix parsing of template classes prefixed by nested-name-specifiers 2009-03-25 15:40:00 +00:00
class-template-spec.cpp Initial infrastructure for class template partial specialization. Here 2009-05-31 09:31:02 +00:00
current-instantiation.cpp Implement the notions of the "current instantiation" and "unknown 2009-05-11 19:58:34 +00:00
default-arguments.cpp Add a null check that fixes the crash in PR4362, and make sure to instantiate non-type template arguments. 2009-06-11 16:06:49 +00:00
dependent-names.cpp Fix PR4365. 2009-06-12 18:53:02 +00:00
dependent-type-identity.cpp Implement the notions of the "current instantiation" and "unknown 2009-05-11 19:58:34 +00:00
enum-argument.cpp Fix the type of a enum non-type template argument within the instantiation. 2009-05-27 19:21:29 +00:00
example-dynarray.cpp Implement implicit instantiation of the member functions of a class template 2009-06-22 23:06:13 +00:00
example-typelist.cpp Example metaprogram for reversing and searching in a type list 2009-06-09 21:22:32 +00:00
ext-vector-type.cpp Support dependent extended vector types and template instantiation 2009-06-17 21:51:59 +00:00
fibonacci.cpp The injected-class-name of class templates and class template 2009-03-26 00:10:35 +00:00
fun-template-def.cpp Template instantiation for C99 designated initializers, because we 2009-05-21 23:17:49 +00:00
implicit-instantiation-1.cpp Implicit instantiation for function template specializations. 2009-06-26 00:10:03 +00:00
injected-class-name.cpp Implement the semantics of the injected-class-name within a class 2009-05-10 22:57:19 +00:00
instantiate-array.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
instantiate-c99.cpp Template instantiation for C99 compound literals 2009-05-21 23:48:18 +00:00
instantiate-call.cpp Template instantiation for call expressions. 2009-05-19 00:38:01 +00:00
instantiate-cast.cpp Template instantiation for cast expressions. 2009-05-19 19:05:47 +00:00
instantiate-clang.cpp Template instantiation for ExtVectorElementExpr. 2009-05-22 23:07:44 +00:00
instantiate-complete.cpp Implement explicit instantiations of member classes of class templates, e.g., 2009-05-14 00:28:11 +00:00
instantiate-declref-ice.cpp Make sure to calculate value-dependence correctly when deal with ICEs. 2009-06-11 01:11:20 +00:00
instantiate-declref.cpp Follow-on test case for template instantiation of interesting DeclGroups 2009-05-29 14:26:40 +00:00
instantiate-dependent-nested-name.cpp Fix for PR4382: allow instantiating dependent nested name specifiers. 2009-06-13 04:51:30 +00:00
instantiate-enum.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
instantiate-expr-1.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
instantiate-expr-2.cpp Introduce basic support for instantiating the definitions of member 2009-05-14 23:26:13 +00:00
instantiate-expr-3.cpp Template instantiation for ExtVectorElementExpr. 2009-05-22 23:07:44 +00:00
instantiate-expr-4.cpp Template instantiation for qualified declaration reference 2009-05-22 23:47:06 +00:00
instantiate-expr-basic.cpp Test case for previous commit. Explicit instantiation does the trick. (Thanks, Anders.) 2009-05-16 18:59:35 +00:00
instantiate-field.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
instantiate-function-1.cpp If a CXXRecordDecl is a class template, the 'this' type should be the injected class name type. Fixes pr4383. 2009-06-13 02:59:33 +00:00
instantiate-function-1.mm Improve checking of member expressions where the base type is a dependent type. 2009-05-16 20:31:20 +00:00
instantiate-function-2.cpp Make sure that we use the canonical type for the names of instantiated 2009-05-15 21:18:27 +00:00
instantiate-member-class.cpp Fix notes regarding the instantiation of member classes (and test 'em). 2009-03-25 21:23:52 +00:00
instantiate-member-pointers.cpp Handle member pointer types with dependent class types (e.g., int 2009-06-09 22:17:39 +00:00
instantiate-method.cpp Template instantiation for conversion functions 2009-03-25 00:34:44 +00:00
instantiate-objc-1.mm Instantiation support for more Obj-C expressions, string literals, @selector and @protocol expressions. 2009-06-07 19:51:47 +00:00
instantiate-static-var.cpp Implement template instantiation for static data members of class 2009-03-25 23:32:15 +00:00
instantiate-subscript.cpp Template instantiation for array subscript expressions. This was far 2009-05-19 00:01:19 +00:00
instantiate-template-template-parm.cpp Implement template instantiation for template names, including both 2009-03-31 18:38:02 +00:00
instantiate-try-catch.cpp Deal with an icky corner case where we were complaining that a catch 2009-05-18 21:08:14 +00:00
instantiate-type.cpp Template instantiation for "typeof" for both types and expressions. 2009-05-26 22:09:24 +00:00
instantiate-typedef.cpp Implement explicit instantiations of member classes of class templates, e.g., 2009-05-14 00:28:11 +00:00
instantiation-backtrace.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
instantiation-default-1.cpp Initial infrastructure for class template partial specialization. Here 2009-05-31 09:31:02 +00:00
instantiation-default-2.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
instantiation-default-3.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
instantiation-depth.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
metafun-apply.cpp Fix for PR4382: allow instantiating dependent nested name specifiers. 2009-06-13 04:51:30 +00:00
nested-name-spec-template.cpp Make the implicit-int handling error recovery stuff handle C++ 2009-04-14 22:17:06 +00:00
nested-template.cpp Diagnose class members that shadow a template parameter. Fixes 2009-06-17 23:37:01 +00:00
operator-template.cpp Keep track of more information within the template instantiation stack, e.g., 2009-07-01 22:01:06 +00:00
qualified-names-diag.cpp Avoid using the built-in type checker for assignment in C++ when classes are involved. Patch by Vyacheslav Kononenko. 2009-05-21 11:50:50 +00:00
recursive-template-instantiation.cpp When recursively instantiating function templates, keep track of the 2009-06-30 17:20:14 +00:00
temp.cpp Parser::ParseDeclarationOrFunctionDefinition no longer needs to accept 2009-05-12 21:43:46 +00:00
temp_arg.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
temp_arg_nontype.cpp Use "()" instead of "(void)" when pretty-printing a parameter-less function type for C++. 2009-06-03 02:06:50 +00:00
temp_arg_template.cpp Improved semantic analysis and AST respresentation for function 2009-06-25 22:08:12 +00:00
temp_arg_type.cpp Rename clang to clang-cc. 2009-03-24 02:24:46 +00:00
temp_class_spec.cpp Update LLVM. 2009-06-14 07:33:30 +00:00
temp_class_spec_blocks.cpp Deducation and instantiation of block types. 2009-06-12 16:23:10 +00:00
temp_class_spec_neg.cpp When some template parameters of a class template partial 2009-06-13 00:26:55 +00:00
temp_explicit.cpp When instantiating the definition of a member function of a class 2009-05-18 17:01:57 +00:00
temp_explicit_cxx0x.cpp Improve the semantic checking for explicit instantiations of 2009-05-13 18:28:20 +00:00
template-decl-fail.cpp Start propagating template parameter lists to the right places to 2009-06-23 23:11:28 +00:00
typename-specifier-2.cpp Create a new PrintingPolicy class, which we pass down through the AST 2009-05-29 20:38:28 +00:00
typename-specifier-3.cpp Move test to be with the other typename tests. 2009-06-11 01:01:02 +00:00
typename-specifier.cpp Make the implicit-int handling error recovery stuff handle C++ 2009-04-14 22:17:06 +00:00
variadic-class-template-1.cpp A parameter pack must always come last in a class template. 2009-06-12 23:20:15 +00:00
variadic-class-template-2.cpp More work on type parameter packs. 2009-06-13 02:08:00 +00:00
variadic-parse.cpp Parse support for C++0x type parameter packs. 2009-06-12 19:58:00 +00:00
variadic-unsupported.cpp Address more comments from Doug. 2009-06-12 23:09:56 +00:00