- Nov 10, 2008
-
-
Douglas Gregor authored
llvm-svn: 58989
-
Douglas Gregor authored
llvm-svn: 58988
-
Argyrios Kyrtzidis authored
Introduce ScopedDecl::getLexicalDeclContext() which is different from ScopedDecl::getDeclContext() when there are nested-names. e.g.: namespace A { void f(); // SemanticDC (getDeclContext) == LexicalDC (getLexicalDeclContext) == 'namespace A' } void A::f(); // SemanticDC == namespace 'A' // LexicalDC == global namespace llvm-svn: 58948
-
- Nov 08, 2008
-
-
Argyrios Kyrtzidis authored
llvm-svn: 58916
-
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
-
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
-
-
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
-
-
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
-
- 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
-
- 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
-
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 29, 2008
-
-
Sebastian Redl authored
llvm-svn: 58395
-
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
-
Douglas Gregor authored
of copy initialization. Other pieces of the puzzle: - Try/Perform-ImplicitConversion now handles implicit conversions that don't involve references. - Try/Perform-CopyInitialization uses CheckSingleAssignmentConstraints for C. PerformCopyInitialization is now used for all argument passing and returning values from a function. - Diagnose errors with declaring references and const values without an initializer. (Uses a new Action callback, ActOnUninitializedDecl). We do not yet have implicit conversion sequences for reference binding, which means that we don't have any overloading support for reference parameters yet. llvm-svn: 58353
-
- Oct 27, 2008
-
-
Douglas Gregor authored
- CastExpr is the root of all casts - ImplicitCastExpr is (still) used for all explicit casts - ExplicitCastExpr is now the root of all *explicit* casts - ExplicitCCastExpr (new name needed!?) is a C-style cast in C or C++ - CXXFunctionalCastExpr inherits from ExplicitCastExpr - CXXNamedCastExpr inherits from ExplicitCastExpr and is the root of all of the C++ named cast expression types (static_cast, dynamic_cast, etc.) - Added classes CXXStaticCastExpr, CXXDynamicCastExpr, CXXReinterpretCastExpr, and CXXConstCastExpr to Also, fixed returned-stack-addr.cpp, which broke once when we fixed reinterpret_cast to diagnose double->int* conversions and again when we eliminated implicit conversions to reference types. The fix is in both testcase and SemaChecking.cpp. Most of this patch is simply support for the renaming. There's very little actual change in semantics. llvm-svn: 58264
-
Sebastian Redl authored
llvm-svn: 58252
-
Douglas Gregor authored
When destroying a translation unit, deallocate its owned declarations in reverse order, because there may be dependencies among the declarations. llvm-svn: 58244
-
- Oct 25, 2008
-
-
Argyrios Kyrtzidis authored
Unbreak the test by.. removing a space. (clang protested that -verify only works on single input files). llvm-svn: 58123
-
- Oct 24, 2008
-
-
Argyrios Kyrtzidis authored
-Add withConst/withVolatile/withRestrict methods to QualType class, that return the QualType plus the respective qualifier. llvm-svn: 58120
-
Douglas Gregor authored
llvm-svn: 58100
-
Douglas Gregor authored
llvm-svn: 58094
-