| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| |
|
|
| |
llvm-svn: 80377
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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
|
| |
|
|
| |
llvm-svn: 80336
|
| |
|
|
|
|
| |
Fixes pr4771.
llvm-svn: 79999
|
| |
|
|
| |
llvm-svn: 79975
|
| |
|
|
| |
llvm-svn: 79923
|
| |
|
|
|
|
|
| |
template argument deduction from a conversion function (C++
[temp.deduct.conv]) with implicit conversions.
llvm-svn: 79693
|
| |
|
|
|
|
|
|
| |
and will participate in overload resolution. Unify the instantiation
of CXXMethodDecls and CXXConstructorDecls, which had already gotten
out-of-sync.
llvm-svn: 79658
|
| |
|
|
| |
llvm-svn: 79587
|
| |
|
|
|
|
|
|
|
|
|
|
| |
interfaces.
DeclaratorDecl contains a DeclaratorInfo* to keep type source info.
Subclasses of DeclaratorDecl are FieldDecl, FunctionDecl, and VarDecl.
EnumConstantDecl still inherits from ValueDecl since it has no need for DeclaratorInfo.
Decl/Sema interfaces accept a DeclaratorInfo as parameter but no DeclaratorInfo is created yet.
llvm-svn: 79392
|
| |
|
|
| |
llvm-svn: 79145
|
| |
|
|
| |
llvm-svn: 78861
|
| |
|
|
|
|
| |
the AST, and create such declarations.
llvm-svn: 78719
|
| |
|
|
|
|
|
| |
copying in copy constructors and used in
default constructor's initializer list.
llvm-svn: 78700
|
| |
|
|
|
|
|
|
|
|
|
|
| |
FriendFunctionDecl, and create instances as appropriate.
The design of FriendFunctionDecl is still somewhat up in the air; you can
befriend arbitrary types of functions --- methods, constructors, etc. ---
and it's not clear that this representation captures that very well.
We'll have a better picture when we start consuming this data in access
control.
llvm-svn: 78653
|
| |
|
|
| |
llvm-svn: 78624
|
| |
|
|
|
|
| |
bunch of FIXMEs for their is-gen.
llvm-svn: 78623
|
| |
|
|
| |
llvm-svn: 78393
|
| |
|
|
|
|
| |
tighten up the static type system.
llvm-svn: 78164
|
| |
|
|
|
|
| |
happy.
llvm-svn: 77850
|
| |
|
|
|
|
| |
ENABLE_EXPENSIVE_CHECKS clean on x86_64-.*-darwin10.
llvm-svn: 77831
|
| |
|
|
| |
llvm-svn: 77699
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
1) Allow the Index library (and any other interested client) to walk
the set of declarations for a given tag (enum, union, class,
whatever). At the moment, this information is not readily available.
2) Reduce our dependence on TagDecl::TypeForDecl being mapped down
to a TagType (for which getDecl() will return the tag definition, if
one exists). This property won't exist for class template partial
specializations.
3) Make the canonical declaration of a TagDecl actually canonical,
e.g., so that it does not change when the tag is defined.
llvm-svn: 77523
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Type::getAsReferenceType() -> Type::getAs<ReferenceType>()
Type::getAsRecordType() -> Type::getAs<RecordType>()
Type::getAsPointerType() -> Type::getAs<PointerType>()
Type::getAsBlockPointerType() -> Type::getAs<BlockPointerType>()
Type::getAsLValueReferenceType() -> Type::getAs<LValueReferenceType>()
Type::getAsRValueReferenceType() -> Type::getAs<RValueReferenceType>()
Type::getAsMemberPointerType() -> Type::getAs<MemberPointerType>()
Type::getAsReferenceType() -> Type::getAs<ReferenceType>()
Type::getAsTagType() -> Type::getAs<TagType>()
And remove Type::getAsReferenceType(), etc.
This change is similar to one I made a couple weeks ago, but that was partly
reverted pending some additional design discussion. With Doug's pending smart
pointer changes for Types, it seemed natural to take this approach.
llvm-svn: 77510
|
| |
|
|
| |
llvm-svn: 77030
|
| |
|
|
|
|
| |
in constructors.
llvm-svn: 76980
|
| |
|
|
|
|
|
|
| |
and __has_trivial_constructor builtin pseudo-functions and
additionally implements __has_trivial_copy and __has_trivial_assign,
from John McCall!
llvm-svn: 76916
|
| |
|
|
|
|
| |
with constructors don't have a matching constructor.
llvm-svn: 76913
|
| |
|
|
|
|
|
| |
CXXBaseOrMemberInitializer AST node. Needed by
its clients to do the initialization.
llvm-svn: 76826
|
| |
|
|
| |
llvm-svn: 76783
|
| |
|
|
|
|
| |
ctor's initialization of bases and fields.
llvm-svn: 76776
|
| |
|
|
|
|
| |
[class.union]p1", from John McCall!
llvm-svn: 76766
|
| |
|
|
|
|
| |
via ASTContext.
llvm-svn: 76758
|
| |
|
|
| |
llvm-svn: 76708
|
| |
|
|
|
|
| |
destruction of base/members for each destructor AST.
llvm-svn: 76663
|
| |
|
|
|
|
| |
Zaffanella, with tweaks from Abramo Bagnara.
llvm-svn: 76576
|
| |
|
|
|
|
|
|
|
| |
until Doug Gregor's Type smart pointer code lands (or more discussion occurs).
These methods just call the new Type::getAs<XXX> methods, so we still have
reduced implementation redundancy. Having explicit getAsXXXType() methods makes
it easier to set breakpoints in the debugger.
llvm-svn: 76193
|
| |
|
|
|
|
| |
Type::getAsMemberPointerType(), Type::getAsTagType(), and Type::getAsRecordType() with their Type::getAs<XXX> equivalents.
llvm-svn: 76139
|
| |
|
|
|
|
| |
base/members.
llvm-svn: 75849
|
| |
|
|
| |
llvm-svn: 75692
|
| |
|
|
|
|
| |
ctor-initializer AST build.
llvm-svn: 75662
|
| |
|
|
| |
llvm-svn: 75651
|
| |
|
|
|
|
| |
semantics of order of construction [class.init].
llvm-svn: 75649
|
| |
|
|
|
|
| |
scope of loop. Rename variable to j.
llvm-svn: 75365
|
| |
|
|
| |
llvm-svn: 75291
|
| |
|
|
|
|
|
|
| |
in their order of construction for each class and use it
to to check on propery order of base class construction
under -Wreorder option.
llvm-svn: 75270
|
| |
|
|
| |
llvm-svn: 74999
|
| |
|
|
|
|
| |
- Fariborz
llvm-svn: 74909
|
| |
|
|
|
|
| |
using ASTContxt allocation.
llvm-svn: 74717
|
| |
|
|
|
|
| |
Per Doug's comments. Doug please review.
llvm-svn: 74666
|