- Oct 16, 2009
-
-
John McCall authored
TypeLoc records for declarations; it should not be necessary to represent it directly in the type system. Please complain if you were using these classes and feel you can't replicate previous functionality using the TypeLoc API. llvm-svn: 84222
-
Douglas Gregor authored
llvm-svn: 84217
-
Douglas Gregor authored
CheckSpecializationInstantiationRedecl to check for redeclarations/instantiations. Also fixes a longstanding issue where our explicit-instantiation location information wasn't as good as it could have been. llvm-svn: 84216
-
- Oct 15, 2009
-
-
Douglas Gregor authored
llvm-svn: 84189
-
Douglas Gregor authored
instantiation redeclaration semantics for function template specializations and member functions of class template specializations. Also, record the point of instantiation for explicit-instantiated functions and static data members. llvm-svn: 84188
-
Fariborz Jahanian authored
sets of builtin operators. Currently, it is applied to '++' and '->*' operators. I need to apply it to others as well. Also, heuristics need be applied to BuiltinCandidateTypeSet::AddPointerWithMoreQualifiedTypeVariants. This is WIP. llvm-svn: 84187
-
Douglas Gregor authored
specializations. Work in progress; there's more cleanup required to actually use the new CheckSpecializationInstantiationRedecl checker uniformly. llvm-svn: 84185
-
Douglas Gregor authored
functions/static data members of class template specializations that do not have definitions. This is the latter part of [temp.explicit]p4; the former part still needs more testing. llvm-svn: 84182
-
Douglas Gregor authored
cases where an explicit instantiation requires a definition; the remainder of these checks will come with the implementation of paragraph 4 of [temp.explicit]. llvm-svn: 84181
-
John McCall authored
most of the unsafe boilerplate out of TypeLoc. Create a QualifiedLoc class to represent the idea that we *might* start representing source locations of qualifiers. Dealing with qualifiers explicitly like this also lets us efficiently ignore them in all the concrete cases. This should make it obvious and easy to add new TypeLoc subclasses. llvm-svn: 84168
-
Anders Carlsson authored
llvm-svn: 84161
-
Douglas Gregor authored
instantiations, since the requirements are too different from those for template specializations. Simplify it slightly. llvm-svn: 84156
-
Douglas Gregor authored
focusing on the scope- and qualifier-related semantic requirements in C++ [temp.explicit]p2. llvm-svn: 84154
-
- Oct 14, 2009
-
-
Douglas Gregor authored
llvm-svn: 84148
-
Douglas Gregor authored
class templates the proper linkage. Daniel, please look over the CodeGenModule bits. llvm-svn: 84140
-
Douglas Gregor authored
llvm-svn: 84129
-
Douglas Gregor authored
template, make sure to get the template that corresponds to *this* declaration of the class template or specialization, rather than the canonical specialization. Fixes PR5187. llvm-svn: 84119
-
Douglas Gregor authored
to a member operator template. We missed updating this call site when adding support for function templates; bug exposed by a test for PR5072. llvm-svn: 84111
-
Sebastian Redl authored
Have the exception specification checkers take partial diagnostics. Use this to merge two diagnostics. llvm-svn: 84105
-
Sebastian Redl authored
llvm-svn: 84101
-
Sebastian Redl authored
Use partial diagnostics properly in call to RequireCompleteType. Among other things, this means we get a note on the declaration of the incomplete type when it is used in an exception specification. llvm-svn: 84099
-
Sebastian Redl authored
llvm-svn: 84098
-
Fariborz Jahanian authored
Removes a FIXME. llvm-svn: 84068
-
Douglas Gregor authored
llvm-svn: 84058
-
Douglas Gregor authored
unknown type name, e.g., foo::bar x; when "bar" does not refer to a type in "foo". With this change, the parser now calls into the action to perform diagnostics and can try to recover by substituting in an appropriate type. For example, this allows us to easily diagnose some missing "typename" specifiers, which we now do: test/SemaCXX/unknown-type-name.cpp:29:1: error: missing 'typename' prior to dependent type name 'A<T>::type' A<T>::type A<T>::f() { return type(); } ^~~~~~~~~~ typename Fixes PR3990. llvm-svn: 84053
-
Edward O'Callaghan authored
llvm-svn: 84051
-
Anders Carlsson authored
llvm-svn: 84048
-
Anders Carlsson authored
llvm-svn: 84043
-
Anders Carlsson authored
Check the return type of operator[]() and fix a thinko that lead to a crash in SemaCXX/overloaded-operator.cpp. llvm-svn: 84041
-
- Oct 13, 2009
-
-
Anders Carlsson authored
llvm-svn: 84034
-
Anders Carlsson authored
llvm-svn: 84030
-
Douglas Gregor authored
what we found when we looked into <blah>", where <blah> is a DeclContext*. We can now format DeclContext*'s in nice ways, e.g., "namespace N", "the global namespace", "'class Foo'". This is part of PR3990, but we're not quite there yet. llvm-svn: 84028
-
Douglas Gregor authored
specialization. This completes C++ [temp.expl.spec]! llvm-svn: 83980
-
Douglas Gregor authored
template as a specialization. For example, this occurs with: template<typename T> struct X { template<typename U> struct Inner { /* ... */ }; }; template<> template<typename T> struct X<int>::Inner { T member; }; We need to treat templates that are member specializations as special in two contexts: - When looking for a definition of a member template, we look through the instantiation chain until we hit the primary template *or a member specialization*. This allows us to distinguish between the primary "Inner" definition and the X<int>::Inner definition, above. - When computing all of the levels of template arguments needed to instantiate a member template, don't add template arguments from contexts outside of the instantiation of a member specialization, since the user has already manually substituted those arguments. Fix up the existing test for p18, which was actually wrong (but we didn't diagnose it because of our poor handling of member specializations of templates), and add a new test for member specializations of templates. llvm-svn: 83974
-
Douglas Gregor authored
function templates. This commit ensures that friend function templates are constructed as FunctionTemplateDecls rather than partial FunctionDecls (as they previously were). It then implements template instantiation for friend function templates, injecting the friend function template only when no previous declaration exists at the time of instantiation. Oh, and make sure that explicit specialization declarations are not friends. llvm-svn: 83970
-
Chris Lattner authored
about the reason, rdar://7186119. llvm-svn: 83940
-
Douglas Gregor authored
that the scope in which it is being declared is complete. Also, when instantiating a member class template's ClassTemplateDecl, be sure to delay type creation so that the resulting type is dependent. Ick. llvm-svn: 83923
-
Douglas Gregor authored
that are declarations (rather than definitions). Also, be sure to set the access specifiers properly when instantiating the declarations of member function templates. llvm-svn: 83911
-
John McCall authored
llvm-svn: 83910
-
- Oct 12, 2009
-
-
John McCall authored
conditions. Add a fixit to insert the parentheses. Also fix a very minor possible memory leak in 'for' conditions. Fixes PR 4876 and rdar://problem/7289172 llvm-svn: 83907
-