- Apr 13, 2009
-
-
Chris Lattner authored
llvm-svn: 68923
-
- Apr 12, 2009
-
-
Sebastian Redl authored
Parse deleted member functions. Parsing member declarations goes through a different code path that I forgot previously. Implement the rvalue reference overload dance for returning local objects. Returning a local object first tries to find a move constructor now. The error message when no move constructor is defined (or is not applicable) and the copy constructor is deleted is quite ugly, though. llvm-svn: 68902
-
- Apr 09, 2009
-
-
Douglas Gregor authored
No functionality change (really). llvm-svn: 68726
-
- Apr 02, 2009
-
-
Douglas Gregor authored
llvm-svn: 68268
-
Douglas Gregor authored
llvm-svn: 68261
-
- Mar 29, 2009
-
-
Chris Lattner authored
productions (except the already broken ObjC cases like @class X,Y;) in the parser that can produce more than one Decl return a DeclGroup instead of a Decl, etc. This allows elimination of the Decl::NextDeclarator field, and exposes various clients that should look at all decls in a group, but which were only looking at one (such as the dumper, printer, etc). These have been fixed. Still TODO: 1) there are some FIXME's in the code about potentially using DeclGroup for better location info. 2) ParseObjCAtDirectives should return a DeclGroup due to @class etc. 3) I'm not sure what is going on with StmtIterator.cpp, or if it can be radically simplified now. 4) I put a truly horrible hack in ParseTemplate.cpp. I plan to bring up #3/4 on the mailing list, but don't plan to tackle #1/2 in the short term. llvm-svn: 68002
-
Sebastian Redl authored
Reintroduce r67870 (rval ref overloading), since I can't reproduce any test failures on i386 or x86_64. If this fails for someone, please contact me. llvm-svn: 67999
-
Chris Lattner authored
llvm-svn: 67981
-
Anders Carlsson authored
More improvements to namespace aliases. We now support everything except aliases in using directives. llvm-svn: 67966
-
Anders Carlsson authored
llvm-svn: 67964
-
- Mar 28, 2009
-
-
Anders Carlsson authored
llvm-svn: 67962
-
Anders Carlsson authored
llvm-svn: 67961
-
Chris Lattner authored
pointer. Its purpose in life is to be a glorified void*, but which does not implicitly convert to void* or other OpaquePtr's with a different UID. Introduce Action::DeclPtrTy which is a typedef for OpaquePtr<0>. Change the entire parser/sema interface to use DeclPtrTy instead of DeclTy*. This makes the C++ compiler enforce that these aren't convertible to other opaque types. We should also convert ExprTy, StmtTy, TypeTy, AttrTy, BaseTy, etc, but I don't plan to do that in the short term. The one outstanding known problem with this patch is that we lose the bitmangling optimization where ActionResult<DeclPtrTy> doesn't know how to bitmangle the success bit into the low bit of DeclPtrTy. I will rectify this with a subsequent patch. llvm-svn: 67952
-
Anders Carlsson authored
llvm-svn: 67932
-
Anders Carlsson authored
llvm-svn: 67925
-
Anders Carlsson authored
llvm-svn: 67921
-
Anders Carlsson authored
llvm-svn: 67915
-
Anders Carlsson authored
SemaCXX//overload-member-call.cpp SemaCXX//overloaded-operator.cpp SemaTemplate//instantiate-method.cpp llvm-svn: 67912
-
- Mar 27, 2009
-
-
Sebastian Redl authored
llvm-svn: 67870
-
Anders Carlsson authored
llvm-svn: 67820
-
Douglas Gregor authored
llvm-svn: 67818
-
Douglas Gregor authored
uniqued representation that should both save some memory and make it far easier to properly build canonical types for types involving dependent nested-name-specifiers, e.g., "typename T::Nested::type". This approach will greatly simplify the representation of CXXScopeSpec. That'll be next. llvm-svn: 67799
-
Anders Carlsson authored
const DiagnosticBuilder &operator<<(const DiagnosticBuilder &DB, AccessSpecifier AS); so we can easily add access specifiers to diagnostics. llvm-svn: 67795
-
- Mar 26, 2009
-
-
Anders Carlsson authored
Factor the member access specifier setting code into its own function. No intended functionality change. llvm-svn: 67725
-
- Mar 25, 2009
-
-
Anders Carlsson authored
class C { C() { } int a; }; C::C() : a(10) { } We also diagnose when initializers are used on declarations that aren't constructors: t.cpp:1:10: error: only constructors take base initializers void f() : a(10) { } ^ Doug and/or Sebastian: I'd appreciate a review, especially the nested-name-spec test results (from the looks of it we now match gcc in that test.) llvm-svn: 67672
-
- Mar 24, 2009
-
-
Sebastian Redl authored
llvm-svn: 67653
-
Anders Carlsson authored
Fix the bug that Eli noticed where we wouldn't look at function decls outside the class declaration. llvm-svn: 67627
-
Douglas Gregor authored
llvm-svn: 67623
-
Anders Carlsson authored
llvm-svn: 67598
-
Anders Carlsson authored
class C { void g(C c); virtual void f() = 0; }; In this case, C is not known to be abstract when doing semantic analysis on g. This is done by recursively traversing the abstract class and checking the types of member functions. llvm-svn: 67594
-
- Mar 23, 2009
-
-
Anders Carlsson authored
More improvements to abstract type checking. Handle arrays correctly, and make sure to check parameter types before they decay. llvm-svn: 67550
-
Anders Carlsson authored
llvm-svn: 67542
-
Sebastian Redl authored
llvm-svn: 67492
-
- Mar 22, 2009
-
-
Sebastian Redl authored
llvm-svn: 67480
-
Anders Carlsson authored
llvm-svn: 67476
-
Anders Carlsson authored
Keep track of whether a class is abstract or not. This is currently only used for the __is_abstract type trait. llvm-svn: 67461
-
- Mar 19, 2009
-
-
Douglas Gregor authored
qualified name, e.g., foo::x so that we retain the nested-name-specifier as written in the source code and can reproduce that qualified name when printing the types back (e.g., in diagnostics). This is PR3493, which won't be complete until finished the other tasks mentioned near the end of this commit. The parser's representation of nested-name-specifiers, CXXScopeSpec, is now a bit fatter, because it needs to contain the scopes that precede each '::' and keep track of whether the global scoping operator '::' was at the beginning. For example, we need to keep track of the leading '::', 'foo', and 'bar' in ::foo::bar::x The Action's CXXScopeTy * is no longer a DeclContext *. It's now the opaque version of the new NestedNameSpecifier, which contains a single component of a nested-name-specifier (either a DeclContext * or a Type *, bitmangled). The new sugar type QualifiedNameType composes a sequence of NestedNameSpecifiers with a representation of the type we're actually referring to. At present, we only build QualifiedNameType nodes within Sema::getTypeName. This will be extended to other type-constructing actions (e.g., ActOnClassTemplateId). Also on the way: QualifiedDeclRefExprs will also store a sequence of NestedNameSpecifiers, so that we can print out the property nested-name-specifier. I expect to also use this for handling dependent names like Fibonacci<I - 1>::value. llvm-svn: 67265
-
- Mar 18, 2009
-
-
Douglas Gregor authored
Type pointer. This allows our nested-name-specifiers to retain more information about the actual spelling (e.g., which typedef did the user name, or what exact template arguments were used in the template-id?). It will also allow us to have dependent nested-name-specifiers that don't map to any DeclContext. llvm-svn: 67140
-
- Mar 17, 2009
-
-
Sebastian Redl authored
Almost complete implementation of rvalue references. One bug, and a few unclear areas. Maybe Doug can shed some light on some of the fixmes. llvm-svn: 67059
-
- Mar 15, 2009
-
-
Anders Carlsson authored
llvm-svn: 67031
-