- Aug 28, 2009
-
-
John McCall authored
declarations of same, introduce a single AST class and add appropriate bits (encoded in the namespace) for whether a decl is "real" or not. Much hackery about previously-declared / not-previously-declared, but it's essentially mandated by the standard that friends alter lookup, and this is at least fairly non-intrusive. Refactor the Sema methods specific to friends for cleaner flow and less nesting. Incidentally solve a few bugs, but I remain confident that we can put them back. llvm-svn: 80353
-
Anders Carlsson authored
llvm-svn: 80346
-
Anders Carlsson authored
llvm-svn: 80337
-
Anders Carlsson authored
llvm-svn: 80333
-
Anders Carlsson authored
llvm-svn: 80332
-
Douglas Gregor authored
class template specializations (when possible) and look into base classes. Thanks to Eli for the test case! FIXME -=1. llvm-svn: 80302
-
- Aug 27, 2009
-
-
Eli Friedman authored
cause any regressions. llvm-svn: 80277
-
Eli Friedman authored
llvm-svn: 80273
-
Eli Friedman authored
llvm-svn: 80272
-
Anders Carlsson authored
llvm-svn: 80261
-
Anders Carlsson authored
llvm-svn: 80260
-
Anders Carlsson authored
llvm-svn: 80258
-
Anders Carlsson authored
llvm-svn: 80256
-
Anders Carlsson authored
llvm-svn: 80255
-
Douglas Gregor authored
templates within class templates, producing a member function template of a class template specialization. If you can parse that, I'm sorry. Example: template<typename T> struct X { template<typename U> void f(T, U); }; When we instantiate X<int>, we now instantiate the declaration X<int>::f, which looks like this: template<typename U> void X<int>::f(int, U); The path this takes through TemplateDeclInstantiator::VisitCXXMethodDecl is convoluted and ugly, but I don't know how to improve it yet. I'm resting my hopes on the multi-level substitution required to instantiate definitions of nested templates, which may simplify this code as well. More testing to come... llvm-svn: 80252
-
Anders Carlsson authored
Add a OverloadResolutionFlags and start converting some of the overload methods over to using it instead of bools arguments. llvm-svn: 80248
-
Anders Carlsson authored
llvm-svn: 80211
-
Anders Carlsson authored
llvm-svn: 80209
-
Eli Friedman authored
llvm-svn: 80207
-
Anders Carlsson authored
Add a BuildCXXTemporaryObjectExpr and use it so default arguments will be instantiated correctly for temporary object expressions. llvm-svn: 80206
-
Anders Carlsson authored
In ActOnCXXTypeConstructExpr, check that the type is complete and non-abstract before creating any expressions. This assures that any templates are instantiated if necessary. llvm-svn: 80200
-
Anders Carlsson authored
llvm-svn: 80183
-
Anders Carlsson authored
llvm-svn: 80182
-
Fariborz Jahanian authored
llvm-svn: 80178
-
Douglas Gregor authored
Make sure to bump the reference count of the last element in the ParenListExpr representing the direct initializer of a declaration llvm-svn: 80177
-
Anders Carlsson authored
llvm-svn: 80175
-
Anders Carlsson authored
llvm-svn: 80174
-
Douglas Gregor authored
name, e.g., x->Base::f() retain the qualifier (and its source range information) in a new subclass of MemberExpr called CXXQualifiedMemberExpr. Provide construction, transformation, profiling, printing, etc., for this new expression type. When a virtual function is called via a qualified name, don't emit a virtual call. Instead, call that function directly. Mike, could you add a CodeGen test for this, too? llvm-svn: 80167
-
Anders Carlsson authored
Add a RequireCompleteType variant that takes a PartialDiagnostic. The old RequireCompleteType now creates a PartialDiagnostic and calls the new function. llvm-svn: 80165
-
Mike Stump authored
llvm-svn: 80163
-
- Aug 26, 2009
-
-
Douglas Gregor authored
types or type-dependent expressions. llvm-svn: 80143
-
Fariborz Jahanian authored
llvm-svn: 80135
-
Anders Carlsson authored
llvm-svn: 80129
-
Fariborz Jahanian authored
type convesions of class objects [class.conv]. WIP. llvm-svn: 80127
-
Douglas Gregor authored
Make sure to compare primary declaration contexts when determining whether a declaration is in scope llvm-svn: 80126
-
Douglas Gregor authored
TypenameType if getTypeName is looking at a member of an unknown specialization. This allows us to properly parse class templates that derived from type that could only otherwise be described by a typename type, e.g., template<class T> struct X {}; template<typename T> struct Y : public X<T>::X { }; Fixes PR4381. llvm-svn: 80123
-
Anders Carlsson authored
llvm-svn: 80122
-
Anders Carlsson authored
llvm-svn: 80114
-
Douglas Gregor authored
conversions, from Sylvere Teissier! llvm-svn: 80112
-
Douglas Gregor authored
llvm-svn: 80097
-