summaryrefslogtreecommitdiffstats
path: root/clang/test/CXX/temp/temp.decls/temp.class
Commit message (Collapse)AuthorAgeFilesLines
* Fix all tests under test/CXX (and test/Analysis) to pass if clang's defaultRichard Smith2016-08-311-1/+1
| | | | | | C++ language standard is not C++98. llvm-svn: 280309
* [Lit Test] Updated 34 Lit tests to be C++11 compatible.Charles Li2015-11-172-0/+10
| | | | | | | Added expected diagnostics new to C++11. Expanded RUN line to: default, C++98/03 and C++11. llvm-svn: 253371
* PR20073: promote "dereference of 'void*'" from Extension to ExtWarn.Richard Smith2015-05-191-1/+1
| | | | llvm-svn: 237652
* C++1y is now C++14!Aaron Ballman2014-08-191-4/+4
| | | | | | Changes diagnostic options, language standard options, diagnostic identifiers, diagnostic wording to use c++14 instead of c++1y. It also modifies related test cases to use the updated diagnostic wording. llvm-svn: 215982
* Allow CorrectTypo to replace CXXScopeSpecifiers that refer to classes.Kaelyn Uhrain2013-10-191-3/+3
| | | | | | | | | | | Now that CorrectTypo knows how to correctly search classes for typo correction candidates, there is no good reason to only replace an existing CXXScopeSpecifier if it refers to a namespace. While the actual enablement was a matter of changing a single comparison, the fallout from enabling the functionality required a lot more code changes (including my two previous commits). llvm-svn: 193020
* Started implementing variable templates. Top level declarations should be ↵Larisse Voufo2013-08-061-1/+1
| | | | | | fully supported, up to some limitations documented as FIXMEs or TODO. Static data member templates work very partially. Static data member templates of class templates need particular attention... llvm-svn: 187762
* Prior to adding the new "expected-no-diagnostics" directive to ↵Andy Gibbs2012-10-192-0/+2
| | | | | | VerifyDiagnosticConsumer, make the necessary adjustment to 580 test-cases which will henceforth require this new directive. llvm-svn: 166280
* Support for definitions of member enumerations of class templates outside theRichard Smith2012-03-231-0/+152
| | | | | | | class template's definition, and for explicit specializations of such enum members. llvm-svn: 153304
* Improve the reporting of non-viable overload candidates by noting the reasonJohn McCall2010-01-132-2/+2
| | | | | | | | why the candidate is non-viable. There's a lot we can do to improve this, but it's a good start. Further improvements should probably be integrated with the bad-initialization reporting routines. llvm-svn: 93277
* Improve the diagnostics used to report implicitly-generated class membersJohn McCall2010-01-062-2/+2
| | | | | | | | | as parts of overload sets. Also, refer to constructors as 'constructors' rather than functions. Adjust a lot of tests. llvm-svn: 92832
* Switch more of Sema::CheckInitializerTypes over toDouglas Gregor2009-12-192-4/+4
| | | | | | | | | | InitializationSequence. Specially, switch initialization of a C++ class type (either copy- or direct-initialization). Also, make sure that we create an elidable copy-construction when performing copy initialization of a C++ class variable. Fixes PR5826. llvm-svn: 91750
* Switch the initialization required by return statements over to theDouglas Gregor2009-12-181-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | new InitializationSequence. This fixes some bugs (e.g., PR5808), changed some diagnostics, and caused more churn than expected. What's new: - InitializationSequence now has a "C conversion sequence" category and step kind, which falls back to - Changed the diagnostics for returns to always have the result type of the function first and the type of the expression second. CheckSingleAssignmentConstraints to peform checking in C. - Improved ASTs for initialization of return values. The ASTs now capture all of the temporaries we need to create, but intentionally do not bind the tempoary that is actually returned, so that it won't get destroyed twice. - Make sure to perform an (elidable!) copy of the class object that is returned from a class. - Fix copy elision in CodeGen to properly see through the subexpressions that occur with elidable copies. - Give "new" its own entity kind; as with return values and thrown objects, we don't bind the expression so we don't call a destructor for it. Note that, with this patch, I've broken returning move-only types in C++0x. We'll fix it later, when we tackle NRVO. llvm-svn: 91669
* Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'.Daniel Dunbar2009-12-157-7/+7
| | | | | | | | | - This is designed to make it obvious that %clang_cc1 is a "test variable" which is substituted. It is '%clang_cc1' instead of '%clang -cc1' because it can be useful to redefine what gets run as 'clang -cc1' (for example, to set a default target). llvm-svn: 91446
* Canonical template arguments that are template template parameters byDouglas Gregor2009-11-231-1/+22
| | | | | | | their template parameter depth and position, so that we can match redeclarations appropriately. Fixes PR5527 and PR5528. llvm-svn: 89654
* Cope with extraneous "template" keyword when providing an out-of-lineDouglas Gregor2009-11-201-0/+11
| | | | | | definition of a member template (or a member thereof). Fixes PR5566. llvm-svn: 89512
* Make sure that out-of-line function and variable definitions are notDouglas Gregor2009-09-281-0/+17
| | | | | | pushed into scope. Fixes PR5056. llvm-svn: 83003
* When checking whether one declaration context encloses another, make sure to ↵Douglas Gregor2009-08-271-0/+3
| | | | | | look at the primary contexts. Thanks to Eli for the test case llvm-svn: 80212
* Improve diagnostics and recovery when the nested-name-specifier of aDouglas Gregor2009-08-261-1/+1
| | | | | | | | | | | | qualified name does not actually refer into a class/class template/class template partial specialization. Improve printing of nested-name-specifiers to eliminate redudant qualifiers. Also, make it possible to output a nested-name-specifier through a DiagnosticBuilder, although there are relatively few places that will use this leeway. llvm-svn: 80056
* Add test for out-of-line definition of a conversion functionDouglas Gregor2009-08-211-0/+7
| | | | llvm-svn: 79679
* Fix parsing for out-of-line definitions of constructors andDouglas Gregor2009-08-211-1/+10
| | | | | | destructors of class templates. llvm-svn: 79678
* When we encounter a dependent type that was parsed before we know thatDouglas Gregor2009-08-061-1/+0
| | | | | | | | | | | | | | | | | | | | | | we were going to enter into the scope of a class template or class template partial specialization, rebuild that type so that it can refer to members of the current instantiation, as in code like template<typename T> struct X { typedef T* pointer; pointer data(); }; template<typename T> typename X<T>::pointer X<T>::data() { ... } Without rebuilding the return type of this out-of-line definition, the canonical return type of the out-of-line definition (a TypenameType) will not match the canonical return type of the declaration (the canonical type of T*). llvm-svn: 78316
* Make the recanonicalization-for-an-out-of-line-definition test case a bit ↵Douglas Gregor2009-07-311-1/+18
| | | | | | trickier llvm-svn: 77707
* Update for LLVM API change.Owen Anderson2009-07-275-5/+5
| | | | llvm-svn: 77249
* Template instantiation for static data members that are defined out-of-line.Douglas Gregor2009-07-242-2/+30
| | | | | | | | Note that this also fixes a bug that affects non-template code, where we were not treating out-of-line static data members are "file-scope" variables, and therefore not checking their initializers. llvm-svn: 77002
* Implement support for out-of-line definitions of the class members of classDouglas Gregor2009-07-221-0/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | templates, e.g., template<typename T> struct Outer { struct Inner; }; template<typename T> struct Outer<T>::Inner { // ... }; Implementing this feature required some extensions to ActOnTag, which now takes a set of template parameter lists, and is the precursor to removing the ActOnClassTemplate function from the parser Action interface. The reason for this approach is simple: the parser cannot tell the difference between a class template definition and the definition of a member of a class template; both have template parameter lists, and semantic analysis determines what that template parameter list means. There is still some cleanup to do with ActOnTag and ActOnClassTemplate. This commit provides the basic functionality we need, however. llvm-svn: 76820
* Implement parsing and semantic analysis for out-of-line definitions of staticDouglas Gregor2009-07-221-0/+26
| | | | | | | data members of class templates. We don't instantiate the definitions yet, however. llvm-svn: 76756
* Test template instantiation for member functions of class templates definedDouglas Gregor2009-07-221-0/+17
| | | | | | out of line. llvm-svn: 76740
* Complain if we're entering the context of a dependent nested-name-specifier butDouglas Gregor2009-07-221-0/+4
| | | | | | | cannot match that nested-name-specifier to a class template or class template partial specialization. llvm-svn: 76704
* Basic parsing and semantic analysis for out-of-line definitions of theDouglas Gregor2009-07-212-0/+57
member functions of class templates, e.g., template<typename T> struct X { void f(T); }; template<typename T> X<T>::f(T) { /* ... */ } llvm-svn: 76692
OpenPOWER on IntegriCloud