- Nov 08, 2008
-
-
Argyrios Kyrtzidis authored
No Sema functionality change, just the signatures of the Action/Sema methods. llvm-svn: 58913
-
Sebastian Redl authored
Move named cast helpers out of Sema, as Chris requested. This requirse making a few functions public that weren't before. llvm-svn: 58906
-
Sebastian Redl authored
llvm-svn: 58873
-
- Nov 07, 2008
-
-
Douglas Gregor authored
llvm-svn: 58870
-
Argyrios Kyrtzidis authored
-When parsing declarators, don't depend on "CurScope->isCXXClassScope() == true" for constructors/destructors -For C++ member declarations, don't depend on "Declarator.getContext() == Declarator::MemberContext" llvm-svn: 58866
-
Douglas Gregor authored
functions in C++, e.g., struct X { operator bool() const; }; Note that these conversions don't actually do anything, since we don't yet have the ability to use them for implicit or explicit conversions. llvm-svn: 58860
-
Argyrios Kyrtzidis authored
void f() { int +; // crash here } llvm-svn: 58846
-
Douglas Gregor authored
operators. For example, one can now write "x + y" where x or y is a class or enumeration type, and Clang will perform overload resolution for "+" based on the overloaded operators it finds. The other kinds of overloadable operators in C++ will follow this same approach. Three major issues remain: 1) We don't find member operators 2) Since we don't have user-defined conversion operators, we can't call any of the built-in overloaded operators in C++ [over.built]. 3) Once we've done the semantic checks, we drop the overloaded operator on the floor; it doesn't get into the AST at all. llvm-svn: 58821
-
- Nov 06, 2008
-
-
Douglas Gregor authored
operators in C++. Overloaded operators can be called directly via their operator-function-ids, e.g., "operator+(foo, bar)", but we don't yet implement the semantics of operator overloading to handle, e.g., "foo + bar". llvm-svn: 58817
-
Sebastian Redl authored
llvm-svn: 58804
-
- Nov 05, 2008
-
-
Sebastian Redl authored
llvm-svn: 58770
-
Sebastian Redl authored
llvm-svn: 58769
-
Douglas Gregor authored
Implicit declaration of destructors (when necessary). Extended Declarator to store information about parsed constructors and destructors; this will be extended to deal with declarators that name overloaded operators (e.g., "operator +") and user-defined conversion operators (e.g., "operator int"). llvm-svn: 58767
-
Sebastian Redl authored
llvm-svn: 58762
-
Douglas Gregor authored
Keep track of whether a C++ class is an aggregate. Don't allow initialization of non-aggregates with initializer lists. llvm-svn: 58757
-
Douglas Gregor authored
duplication in the handling of copy-initialization by constructor, which occurs both for initialization of a declaration and for overloading. The initialization code is due for some refactoring. llvm-svn: 58756
-
Douglas Gregor authored
for constructor initializations, e.g., class A { }; class B : public A { int m; public: B() : A(), m(17) { }; }; llvm-svn: 58749
-
- Nov 04, 2008
-
-
Anders Carlsson authored
llvm-svn: 58705
-
Sebastian Redl authored
Some cleanup of the cast checkers. Don't canonicalize types when not needed. Use distinct diagnostics for distinct errors. llvm-svn: 58700
-
Douglas Gregor authored
Add a new expression class, ObjCSuperExpr, to handle the Objective-C 'super'. Remove ObjCThis from PredefinedExpr llvm-svn: 58698
-
Douglas Gregor authored
Create a new expression class, CXXThisExpr, to handle the C++ 'this' primary expression. Remove CXXThis from PredefinedExpr llvm-svn: 58695
-
Douglas Gregor authored
llvm-svn: 58692
-
Douglas Gregor authored
Diagnose use of 'this' in a C++ default argument. Thanks to Eli for correcting my bogus assertion about it already being handled llvm-svn: 58691
-
rdar://problem/6339636Steve Naroff authored
Fix <rdar://problem/6339636> clang ObjC rewriter: Assertion failed: FileID-1 < FileIDs.size() && "Invalid FileID!", file c:\cygwin\home\Administrator\llvm\tools\clang\include\clang/Basic/SourceManager.h, line 513 llvm-svn: 58654
-
- Nov 03, 2008
-
-
Douglas Gregor authored
llvm-svn: 58649
-
Douglas Gregor authored
X x(5, 7); llvm-svn: 58641
-
Douglas Gregor authored
cope with the case where a user-defined conversion is actually a copy construction, and therefore can be compared against other standard conversion sequences. While I called this a hack before, now I'm convinced that it's the right way to go. Compare overloads based on derived-to-base conversions that invoke copy constructors. Suppress user-defined conversions when attempting to call a user-defined conversion. llvm-svn: 58629
-
Douglas Gregor authored
when appropriate. Conversions for class types now make use of copy constructors. I've replaced the egregious hack allowing class-to-class conversions with a slightly less egregious hack calling these conversions standard conversions (for overloading reasons). llvm-svn: 58622
-
Douglas Gregor authored
reference-collapsing. Implement diagnostic for formation of a reference to cv void. Drop cv-qualifiers added to a reference type when the reference type comes from a typedef. llvm-svn: 58612
-
- Nov 02, 2008
-
-
Sebastian Redl authored
llvm-svn: 58570
-
- Oct 31, 2008
-
-
Douglas Gregor authored
llvm-svn: 58538
-
Douglas Gregor authored
conversions. Notes: - Overload resolution for converting constructors need to prohibit user-defined conversions (hence, the test isn't -verify safe yet). - We still use hacks for conversions from a class type to itself. This will be the case until we start implicitly declaring the appropriate special member functions. (That's next on my list) llvm-svn: 58513
-
Sebastian Redl authored
llvm-svn: 58509
-
Sanjiv Gupta authored
etc more generic. For some targets, long may not be equal to pointer size. For example: PIC16 has int as i16, ptr as i16 but long as i32. Also fixed a few build warnings in assert() functions in CFRefCount.cpp, CGDecl.cpp, SemaDeclCXX.cpp and ParseDeclCXX.cpp. llvm-svn: 58501
-
Douglas Gregor authored
Notes: - Constructors are never found by name lookup, so they'll never get pushed into any scope. Instead, they are stored as an OverloadedFunctionDecl in CXXRecordDecl for easy overloading. - There's a new action isCurrentClassName that determines whether an identifier is the name of the innermost class currently being defined; we use this to identify the declarator-id grammar rule that refers to a type-name. - MinimalAction does *not* support parsing constructors. - We now handle virtual and explicit function specifiers. llvm-svn: 58499
-
- Oct 30, 2008
-
-
Douglas Gregor authored
llvm-svn: 58404
-
- Oct 29, 2008
-
-
Douglas Gregor authored
- Allows definitions of overloaded functions :) - Eliminates extraneous error messages when we have a definition of a function that isn't an overload but doesn't have exactly the same type as the original. llvm-svn: 58382
-
Douglas Gregor authored
llvm-svn: 58381
-
Douglas Gregor authored
Temporary disable the const-object-declaration-without-initializer check, because it depends on linkage-specifier semantics we don't yet have llvm-svn: 58377
-
Douglas Gregor authored
ImplicitConversionSequence and, when doing so, following the specific rules of [over.best.ics]. The computation of the implicit conversion sequences implements C++ [over.ics.ref], but we do not (yet) have ranking for implicit conversion sequences that use reference binding. llvm-svn: 58357
-