summaryrefslogtreecommitdiffstats
path: root/clang/test/SemaTemplate/default-expr-arguments.cpp
Commit message (Collapse)AuthorAgeFilesLines
* [Lit Test] Updated 34 Lit tests to be C++11 compatible.Charles Li2015-11-171-1/+10
| | | | | | | Added expected diagnostics new to C++11. Expanded RUN line to: default, C++98/03 and C++11. llvm-svn: 253371
* PR14428: When instantiating a 'new' expression, if we had a non-dependentRichard Smith2012-11-261-3/+4
| | | | | | | | initialization, don't rebuild it. Remove a couple of hacks which were trying to work around this. Fix the special case for one-argument CXXConstructExprs to not apply if the one argument is a default argument. llvm-svn: 168582
* Sema: Provide a valid source location when instantiating templates based on ↵Benjamin Kramer2012-11-231-0/+18
| | | | | | | | a CXXDefaultArgExpr. Fixes PR13758. llvm-svn: 168521
* Add a missing ExpressionEvaluationContext for template default arguments. ↵Eli Friedman2012-04-261-0/+11
| | | | | | Fixes PR12581. llvm-svn: 155670
* Enhance the diagnostic for negative array sizes to include theChandler Carruth2011-01-041-1/+1
| | | | | | | | | | | declaration name of the array when present. This ensures that a poor-man's C++03 static_assert will include the user error message often embedded in the name. Update all the tests to reflect the new wording, and add a test for the name behavior. llvm-svn: 122802
* When marking declarations referenced within an expression (e.g.,Douglas Gregor2010-10-191-0/+18
| | | | | | | | within a default argument), recurse into default arguments. Fixes PR8401, a regression I introduced in r113700 while refactoring our handling of "used" declarations in default arguments. llvm-svn: 116817
* When marking the declarations in a default argument expression asDouglas Gregor2010-09-141-0/+22
| | | | | | | | | "used", at the time that the default argument itself is used, also mark destructors that will be called by this expression. This fixes a regression that I introduced in r113700, which broke WebKit, and fixes <rdar://problem/8427926>. llvm-svn: 113883
* Teach the EvaluatedExprVisitor and its client, which marksDouglas Gregor2010-09-111-0/+18
| | | | | | | | declarations in potentially-evaluated subexpressions, about recursion. Fixes the release-mode self-host failure I introduced in r113700. llvm-svn: 113708
* When parsing default function arguments, do not mark any declarationsDouglas Gregor2010-09-111-0/+28
| | | | | | | | | | | | | | | | | | | | | | used in the default function argument as "used". Instead, when we actually use the default argument, make another pass over the expression to mark any used declarations as "used" at that point. This addresses two kinds of related problems: 1) We were marking some declarations "used" that shouldn't be, because we were marking them too eagerly. 2) We were failing to mark some declarations as "used" when we should, if the first time it was instantiated happened to be an unevaluated context, we wouldn't mark them again at a later point. I've also added a potentially-handy visitor class template EvaluatedExprVisitor, which only visits the potentially-evaluated subexpressions of an expression. I bet this would have been useful for noexcept... Fixes PR5810 and PR8127. llvm-svn: 113700
* Ensure that we have completed a type before attempting initializationDouglas Gregor2010-04-261-0/+18
| | | | | | on that type. Fixes several problems in Boost.Interprocess. llvm-svn: 102339
* Whenever we complain about a failed initialization of a function orDouglas Gregor2010-04-221-4/+8
| | | | | | | | | | | | | | | | | method parameter, provide a note pointing at the parameter itself so the user does not have to manually look for the function/method being called and match up parameters to arguments. For example, we now get: t.c:4:5: warning: incompatible pointer types passing 'long *' to parameter of type 'int *' [-pedantic] f(long_ptr); ^~~~~~~~ t.c:1:13: note: passing argument to parameter 'x' here void f(int *x); ^ llvm-svn: 102038
* When pretty-printing tag types, only print the tag if we're in C (andJohn McCall2010-03-101-5/+5
| | | | | | | | | | therefore not creating ElaboratedTypes, which are still pretty-printed with the written tag). Most of these testcase changes were done by script, so don't feel too sorry for my fingers. llvm-svn: 98149
* Default function arguments for function template specializationsDouglas Gregor2010-02-051-0/+7
| | | | | | | always come from the primary template, so gather the instantiation template arguments from the primary template. llvm-svn: 95380
* Improve the reporting of non-viable overload candidates by noting the reasonJohn McCall2010-01-131-1/+1
| | | | | | | | 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-061-1/+1
| | | | | | | | | as parts of overload sets. Also, refer to constructors as 'constructors' rather than functions. Adjust a lot of tests. llvm-svn: 92832
* When we see a CXXDefaultArgExpr during template instantiation, rebuildDouglas Gregor2009-12-231-3/+14
| | | | | | | | the default argument so that we're sure to mark any referenced declarations. This gets us another little step closer to fixing PR5810. llvm-svn: 92078
* When using a default function argument for a function template (orDouglas Gregor2009-12-231-1/+23
| | | | | | | | | | | | | | | | | member function thereof), perform the template instantiation each time the default argument is needed. This ensures that (1) We get different CXXTemporary objects for each instantiation, and (2) Any other instantiations or definitions triggered by the instantiation of the default argument expression are guaranteed to happen; previously, they might have been suppressed, e.g., because they happened in an unevaluated context. This fixes the majority of PR5810. However, it does not address the problem where we may have multiple uses of the same CXXTemporary within an expression when the temporary came from a non-instantiated default argument expression. llvm-svn: 92015
* Switch default arguments over to InitializationSequence.Eli Friedman2009-12-221-1/+1
| | | | llvm-svn: 91883
* Switch more of Sema::CheckInitializerTypes over toDouglas Gregor2009-12-191-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
* Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'.Daniel Dunbar2009-12-151-1/+1
| | | | | | | | | - 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
* Make sure that we instantiate default function arguments for anDouglas Gregor2009-11-091-2/+15
| | | | | | overloaded operator(). llvm-svn: 86581
* Special-case default argument expression in instantiation. This should fix ↵Sebastian Redl2009-11-081-0/+23
| | | | | | PR4301. Doug, please double-check my assumptions. Read the PR for more details. llvm-svn: 86465
* Make sure to call CompleteConstructorCall for bases and members that are ↵Anders Carlsson2009-10-291-0/+24
| | | | | | initialized implicitly in constructors so that default arguments etc are set correctly. Fixes PR5283. llvm-svn: 85510
* Merge uninstantiated default arguments more carefully, and try not toDouglas Gregor2009-09-171-0/+6
| | | | | | | complain about specializations of member functions that are not definitions. Fixes PR4995. llvm-svn: 82159
* Teach Sema::FindInstantiatedDecl to find instantiated RecordDecls evenDouglas Gregor2009-09-161-0/+10
| | | | | | | | | | when we are not instantiating the corresponding "current instantiation." This happens, e.g., when we are instantiating a declaration reference that refers into the "current instantiation" but occurs in a default function argument. The libstdc++ vector default constructor now instantiates properly. llvm-svn: 82069
* Cleanup and test C++ default arguments. Improvements include:Douglas Gregor2009-09-111-0/+21
| | | | | | | | | | | - Diagnose attempts to add default arguments to templates (or member functions of templates) after the initial declaration (DR217). - Improve diagnostics when a default argument is redefined. Now, the note will always point at the place where the default argument was previously defined, rather than pointing to the most recent declaration of the function. llvm-svn: 81548
* Reapply 81096, now with a fix. Spot the bug:Anders Carlsson2009-09-061-1/+4
| | | | | | | | | for (unsigned i = numargs; i < NumArgs; ++i) Args[0] = 0; ;) llvm-svn: 81123
* Revert "Initialize default CXXConstructExpr arguments to 0. Fixes a crash whenDaniel Dunbar2009-09-061-4/+1
| | | | | | | destroying the CXXConstructExpr.", this is causing test failures across the board. llvm-svn: 81100
* Initialize default CXXConstructExpr arguments to 0. Fixes a crash when ↵Anders Carlsson2009-09-051-1/+4
| | | | | | destroying the CXXConstructExpr. llvm-svn: 81096
* Report errors for member functions correctly.Anders Carlsson2009-09-051-0/+7
| | | | llvm-svn: 81063
* Use a separate diagnostic for default function argument expressions.Anders Carlsson2009-09-051-5/+5
| | | | llvm-svn: 81062
* Add a little more testing for default arguments of constructors in a class ↵Douglas Gregor2009-08-251-0/+3
| | | | | | template llvm-svn: 79989
* If a parameter has a default argument expression, make sure to instantiate ↵Anders Carlsson2009-08-251-0/+8
| | | | | | the parameter type before checking that the expression is a valid initializer. llvm-svn: 79986
* Improved support for default arguments in constructors for class templates.Anders Carlsson2009-08-251-0/+8
| | | | llvm-svn: 79984
* Basic support for default argument expressions for function templates.Anders Carlsson2009-08-251-0/+20
llvm-svn: 79972
OpenPOWER on IntegriCloud