aboutsummaryrefslogtreecommitdiff
path: root/lib/Sema
AgeCommit message (Collapse)Author
2009-06-13When some template parameters of a class template partialDouglas Gregor
specialization cannot be deduced, produce a warning noting that the affected class template partial specialization will never be used. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73274 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-12A parameter pack must always come last in a class template.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73269 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-12No need to mark the parameter as invalid, just ignore the default argument.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73268 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-12add the location of the ')' in a do/while statement to DoStmt.Chris Lattner
This fixes a source range problem reported by Olaf Krzikalla. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73266 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-12Address comments from Doug - Add a Sema::SemaRef.BuildBlockPointerType and ↵Anders Carlsson
use it. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73264 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-12It looks like we've finished off matching of class template partial ↵Douglas Gregor
specializations; add comments and update the C++ status page git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73263 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-12Parameter packs can't have default arguments.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73262 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-12Keep track of whether a type parameter is actually a type parameter pack.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73261 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-12Finish implementing checking of class template partial specializationsDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73260 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-12Diagnose C++ [temp.class.spec]p9b3, where a class template partialDouglas Gregor
specialization's arguments are identical to the implicit template arguments of the primary template. Typically, this is meant to be a declaration/definition of the primary template, so we give that advice. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73259 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-12Diagnose the incorrect use of non-type template arguments for classDouglas Gregor
template partial specializations. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73254 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-12Parse support for C++0x type parameter packs.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73247 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-12Verify that the template parameters of a class template partialDouglas Gregor
specialization do not have default arguments (C++ [temp.class.spec]p10). git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73245 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-12Fix PR4365.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73240 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-12Improve template argument deduction to keep track of why templateDouglas Gregor
argument deduction failed. For example, given template<typename T> struct is_same<T, T> { ... }; template argument deduction will fail for is_same<int, float>, and now reports enough information Right now, we don't do anything with this extra information, but it can be used for informative diagnostics that say, e.g., "template argument deduction failed because T was deduced to 'int' in one context and 'float' in another". git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73237 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-12It's an error to use a function declared in a class definition as a default ↵Anders Carlsson
argument before the function has been declared. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73234 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-12Deducation and instantiation of block types.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73232 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-11Once we have deduced the template arguments of a class templateDouglas Gregor
partial specialization, substitute those template arguments back into the template arguments of the class template partial specialization to see if the results still match the original template arguments. This code is more general than it needs to be, since we don't yet diagnose C++ [temp.class.spec]p9. However, it's likely to be needed for function templates. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73196 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-11Add a null check that fixes the crash in PR4362, and make sure to ↵Anders Carlsson
instantiate non-type template arguments. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73193 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-11Make sure to calculate value-dependence correctly when deal with ICEs. Eli Friedman
(Actually, this isn't precisely correct, but it doesn't make sense to query whether an expression that isn't an ICE is value-dependent anyway.) git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73179 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-11Separate TemplateArgument instantiation logic into its own function. No ↵Douglas Gregor
functionality change. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73176 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-10Template argument deduction for member pointers.Douglas Gregor
Also, introduced some of the framework for performing instantiation as part of template argument deduction. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73175 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-10PR4350: Make sure we don't create invalid printf attributes. This isn't Eli Friedman
visible anywhere normally because the printf format checks for this case, and we don't print out attribute values anywhere. Original patch by Roberto Bagnara. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73157 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-09Handle member pointer types with dependent class types (e.g., intDouglas Gregor
T::*) and implement template instantiation for member pointer types. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73151 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-09Implement template argument deduction for class templateDouglas Gregor
specialization types. As the example shows, we can now compute the length of a type-list using a template metaprogram and class template partial specialization. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73136 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-08Add more parser support for Microsoft extensions.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73101 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-08Address comments from Doug.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73077 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-08Document the template argument deduction patterns that Anders' patch supportsDouglas Gregor
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73071 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-08Template argument deduction for function types.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73070 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-08Delete method which is now trivial.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73043 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-08Don't allow defining a block with a non-prototype type. Remove a Eli Friedman
hack which introduces some strange inconsistencies in compatibility for block pointers. Note that unlike an earlier revision proposed on cfe-commits, this patch still allows declaring block pointers without a prototype. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73041 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-07Instantiation support for more Obj-C expressions, string literals, @selector ↵Anders Carlsson
and @protocol expressions. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73036 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-07Template instantiation support for Obj-C @encode expressions.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73034 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-06Adds synthesize ivars to DeclContext.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@73000 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-06Make ParmVarDecl::getDefaultArg() more robust, it now asserts that the ↵Anders Carlsson
argument is not unparsed. Add a new hasDefaultArg() and use it in places where getDefaultArg() was called when the argument was unparsed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72984 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-06Default builtin creation to off; we don't really want to be doing it Eli Friedman
without a relevant source location anyway. Fixes the issue with weird warnings when including objc/Object.h on OS X. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72978 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-05Use of DeclContext for objc's ivars. No functionalityFariborz Jahanian
change. More to follow. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72951 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-05Improvements to CXXExprWithTemporaries in preparation for fixing a bug with ↵Anders Carlsson
default arguments that have temporaries. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72944 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-05Address review comments for #pragma weak.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72926 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-05Make TemplateArgumentListBuilder take an ASTContext (because we're probably ↵Anders Carlsson
going to need it later). Move push_back to the .cpp file. If the passed in template argument is a type, assert that it's canonical. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72918 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-05Make the TemplateArgumentList take a TemplateArgumentListBuilder.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72917 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-05Change the specialization decls to take a TemplateArgumentListBuilder.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72916 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-05Add a helper class for building template argument lists.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72915 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-05Fix another crash and actually make the test case work.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72913 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-05Start of a Sema implementation for #pragma weak. This isn't really theEli Friedman
right approach, but I'm still not sure what the best way to go about this is. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72912 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-05Fix a case when the TemplateArgs vector can be empty.Anders Carlsson
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72911 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-05Several improvements to template argument deduction:Douglas Gregor
- Once we have deduced template arguments for a class template partial specialization, we use exactly those template arguments for instantiating the definition of the class template partial specialization. - Added template argument deduction for non-type template parameters. - Added template argument deduction for dependently-sized array types. With these changes, we can now implement, e.g., the remove_reference type trait. Also, Daniel's Ackermann template metaprogram now compiles properly. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72909 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-04Fix up this compatibility hack to be more compatible with gcc.Eli Friedman
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72901 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-04More refactoring/cleanup of objc ivars.Fariborz Jahanian
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72871 91177308-0d34-0410-b5e6-96231b3b80d8
2009-06-04Template argument deduction for incomplete and constant array types. Doug, ↵Anders Carlsson
please review. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72844 91177308-0d34-0410-b5e6-96231b3b80d8