Douglas Gregor
87f5406081
When implicitly declaring operators new, new[], delete, and delete[],
...
give them the appropriate exception specifications. This,
unfortunately, requires us to maintain and/or implicitly generate
handles to namespace "std" and the class "std::bad_alloc". However,
every other approach I've come up with was more hackish, and this
standard requirement itself is quite the hack.
Fixes PR4829.
llvm-svn: 81939
2009-09-15 22:30:29 +00:00
Anders Carlsson
c8bfc466f3
Add back the workaround since it lead to constructor conversion bugs :(
...
llvm-svn: 81917
2009-09-15 21:14:33 +00:00
Anders Carlsson
110b07b848
When performing an user defined conversion sequence, perform the initial standard conversion sequence. This lets us remove a workaround in SemaCompleteConstructorCall.
...
llvm-svn: 81847
2009-09-15 06:28:28 +00:00
John McCall
27b5c253d8
Skeletal support for friend class templates.
...
llvm-svn: 81801
2009-09-14 21:59:20 +00:00
Fariborz Jahanian
edca0bcf48
Removed Context argument from couple of methods which don't
...
need them.
llvm-svn: 81621
2009-09-12 19:02:34 +00:00
John McCall
2f212b3a72
Alter Action's friend interface to prepare for templated friend declarations and
...
to stop making promises we can't currently keep.
llvm-svn: 81571
2009-09-11 21:02:39 +00:00
Douglas Gregor
c732aba9a9
Cleanup and test C++ default arguments. Improvements include:
...
- Diagnose attempts to add default arguments to templates (or member
functions of templates) after the initial declaration (DR217).
- Improve diagnostics when a default argument is redefined. Now, the
note will always point at the place where the default argument was
previously defined, rather than pointing to the most recent
declaration of the function.
llvm-svn: 81548
2009-09-11 18:44:32 +00:00
Douglas Gregor
e61ef62cc2
When re-entering a template scope, we may be entering a class template
...
partial specialization rather than a subclass of TemplateDecl. Fixes a
crash in libstdc++ 4.2's <map>.
llvm-svn: 81407
2009-09-10 00:12:48 +00:00
Douglas Gregor
5d3507d39c
Improve handling of initialization by constructor, by ensuring that
...
such initializations properly convert constructor arguments and fill
in default arguments where necessary. This also makes the ownership
model more clear.
llvm-svn: 81394
2009-09-09 23:08:42 +00:00
Mike Stump
11289f4280
Remove tabs, and whitespace cleanups.
...
llvm-svn: 81346
2009-09-09 15:08:12 +00:00
John McCall
d8fe9af3a2
Support templateids in friend declarations. Fixes bug 4859.
...
llvm-svn: 81233
2009-09-08 17:47:29 +00:00
Anders Carlsson
6816affaa4
Handle variadic constructors better. Share code between BuildCXXConstructExpr and BuildCXXTemporaryObjectExpr.
...
llvm-svn: 81181
2009-09-08 01:48:42 +00:00
Anders Carlsson
5995a3e8fa
BuildCXXConstructExpr now takes a MultiExprArg.
...
llvm-svn: 81160
2009-09-07 22:23:31 +00:00
Anders Carlsson
faf1ced5ee
Reapply 81096, now with a fix. Spot the bug:
...
for (unsigned i = numargs; i < NumArgs; ++i)
Args[0] = 0;
;)
llvm-svn: 81123
2009-09-06 16:54:02 +00:00
Daniel Dunbar
94bcae46d5
Revert "Initialize default CXXConstructExpr arguments to 0. Fixes a crash when
...
destroying the CXXConstructExpr.", this is causing test failures across the
board.
llvm-svn: 81100
2009-09-06 01:31:23 +00:00
Anders Carlsson
8284d7caa3
Initialize default CXXConstructExpr arguments to 0. Fixes a crash when destroying the CXXConstructExpr.
...
llvm-svn: 81096
2009-09-05 22:51:06 +00:00
Anders Carlsson
1b4ebfab2b
Pass the ConstructLoc to BuildCXXConstructExpr.
...
llvm-svn: 81068
2009-09-05 07:40:38 +00:00
Douglas Gregor
d94105a1c2
Don't generate any code for an explicit call to a trivial destructor.
...
Now that parsing, semantic analysis, and (I think) code generation of
pseudo-destructor expressions and explicit destructor calls works,
update the example-dynarray.cpp test to destroy the objects it
allocates and update the test to actually compile + link.
The code seems correct, but the Clang-compiled version dies with a
malloc error. Time to debug!
llvm-svn: 81025
2009-09-04 19:04:08 +00:00
Fariborz Jahanian
37d065680b
Patch to instantiate destructors used to destruct
...
base and data members when they are needed.
llvm-svn: 80967
2009-09-03 23:18:17 +00:00
Fariborz Jahanian
59a1cd4a06
Mark constructors used in initialization of base(s) and fields
...
as referecned with location where they are used. Still
need to look at destructor aspects of them.
llvm-svn: 80950
2009-09-03 21:32:41 +00:00
Fariborz Jahanian
3501bcec7d
Issue diagnostics in variety of situations involving
...
reference/const data members when user has declared
the constructor. This necessitated some non-minor
refactoring.
llvm-svn: 80934
2009-09-03 19:36:46 +00:00
Fariborz Jahanian
cc043a7154
Minor refactoring of my last patch.
...
llvm-svn: 80847
2009-09-02 23:11:48 +00:00
Fariborz Jahanian
3117e2b9d4
Referenced instatiated default constructors
...
must be defined. Fixed pr4853.
llvm-svn: 80846
2009-09-02 23:02:57 +00:00
Fariborz Jahanian
fc60ca8801
Allow null initialization of scalara data members
...
in constructors's initializer list. pr4854
llvm-svn: 80802
2009-09-02 17:10:17 +00:00
Anders Carlsson
bcec05c9fd
Don't assume that a base is always a RecordType, it can also be a TemplateSpecializationType. Also, make sure to get the instantiated union member.
...
llvm-svn: 80662
2009-09-01 06:22:14 +00:00
John McCall
759e32bdc6
Fix bug 4784 and allow friend declarations to properly extend
...
existing declaration chains.
llvm-svn: 80636
2009-08-31 22:39:49 +00:00
Anders Carlsson
5167a4644d
Use DiagnoseMissingMember for UsingDecls.
...
llvm-svn: 80470
2009-08-30 00:58:45 +00:00
Anders Carlsson
896c230a19
Improve diagnostics for missing members. This renames the err_typecheck_no_member to err_typecheck_no_member_deprecated. The idea is that err_typecheck_no_member_deprecated should be phased out and any call sites that reference it should call DiagnoseMissingMember instead.
...
llvm-svn: 80469
2009-08-30 00:54:35 +00:00
Anders Carlsson
7b194b780d
Set the access specifier for using decls.
...
llvm-svn: 80435
2009-08-29 19:54:19 +00:00
John McCall
75c03bbb0c
For consistency, just make friend declarations AS_public.
...
llvm-svn: 80420
2009-08-29 03:50:18 +00:00
Anders Carlsson
1e172e068f
Store the SourceLocation of right parentheses in member initializers. Patch by Anders Johnsen!
...
llvm-svn: 80416
2009-08-29 01:31:33 +00:00
Anders Carlsson
d20e795a5b
Fix this for real.
...
llvm-svn: 80377
2009-08-28 16:57:08 +00:00
Anders Carlsson
228eea36a3
Pass InOverloadResolution all the way down to IsPointerConversion.
...
llvm-svn: 80368
2009-08-28 15:33:32 +00:00
Anders Carlsson
4bd7875b9c
Instantiate unresolved using declarations.
...
llvm-svn: 80366
2009-08-28 15:18:15 +00:00
John McCall
aa74a0c3b5
Omnibus friend decl refactoring. Instead of cloning AST classes for friend
...
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
2009-08-28 07:59:38 +00:00
Anders Carlsson
f038fc2c12
Create UnresolvedUsingDecls.
...
llvm-svn: 80346
2009-08-28 05:49:21 +00:00
Anders Carlsson
696a3f199b
Factor declaration building out to Sema::BuildUsingDeclaration.
...
llvm-svn: 80337
2009-08-28 05:40:36 +00:00
Anders Carlsson
5a9c5acf0f
More work on using declarations.
...
llvm-svn: 80333
2009-08-28 03:35:18 +00:00
Anders Carlsson
59140b3b86
Many improvements to using declarations.
...
llvm-svn: 80332
2009-08-28 03:16:11 +00:00
Anders Carlsson
271e3a4d47
Remove more default arguments.
...
llvm-svn: 80260
2009-08-27 17:30:43 +00:00
Anders Carlsson
ef4c72135f
Remove default arguments from TryImplicitConversion and fix a bug found in the process.
...
llvm-svn: 80258
2009-08-27 17:24:15 +00:00
Anders Carlsson
5ec4abf268
Revert the flags change for now, I have a better idea for this.
...
llvm-svn: 80255
2009-08-27 17:14:02 +00:00
Anders Carlsson
2f7e956f16
Add a OverloadResolutionFlags and start converting some of the overload methods over to using it instead of bools arguments.
...
llvm-svn: 80248
2009-08-27 16:01:18 +00:00
Anders Carlsson
35d6e3e710
Don't check member and base initializers if the constructor is dependent.
...
llvm-svn: 80211
2009-08-27 05:57:30 +00:00
Anders Carlsson
e0eebb3ee4
Use early returns to avoid indentation.
...
llvm-svn: 80209
2009-08-27 05:45:01 +00:00
Eli Friedman
561154dd6b
Stub out an error so we don't crash.
...
llvm-svn: 80207
2009-08-27 05:09:36 +00:00
Anders Carlsson
574315a0fa
Add a BuildCXXTemporaryObjectExpr and use it so default arguments will be instantiated correctly for temporary object expressions.
...
llvm-svn: 80206
2009-08-27 05:08:22 +00:00
Anders Carlsson
eabf770457
New RequireNonAbstractType function.
...
llvm-svn: 80183
2009-08-27 00:13:57 +00:00
Anders Carlsson
d624e16833
Bye-bye old RequireCompleteType.
...
llvm-svn: 80182
2009-08-26 23:45:07 +00:00
Douglas Gregor
402250f2f9
Implement support for C++ direct initializers that involve dependent
...
types or type-dependent expressions.
llvm-svn: 80143
2009-08-26 21:14:46 +00:00
Anders Carlsson
114056f22c
If a parameter has a default argument expression, make sure to instantiate the parameter type before checking that the expression is a valid initializer.
...
llvm-svn: 79986
2009-08-25 13:46:13 +00:00
Anders Carlsson
10ebe78730
Improved support for default arguments in constructors for class templates.
...
llvm-svn: 79984
2009-08-25 13:07:08 +00:00
Anders Carlsson
c1eb79b7c9
InitializeVarWithConstructor now returns true on failure.
...
llvm-svn: 79976
2009-08-25 05:18:00 +00:00
Anders Carlsson
6eb55575da
BuildCXXConstructExpr now returns an OwningExprResult.
...
llvm-svn: 79975
2009-08-25 05:12:04 +00:00
Anders Carlsson
4562f1f066
Basic support for default argument expressions for function templates.
...
llvm-svn: 79972
2009-08-25 03:18:48 +00:00
Anders Carlsson
c80a127c4d
Factor setting default arguments out into SetParamDefaultArgument.
...
llvm-svn: 79970
2009-08-25 02:29:20 +00:00
Anders Carlsson
5a532380a1
Use hasDefaultArg instead of getDefaultArg.
...
llvm-svn: 79967
2009-08-25 01:23:32 +00:00
Anders Carlsson
f1c2695d48
Check that the default argument is well-formed before checking the initializer types.
...
llvm-svn: 79964
2009-08-25 01:02:06 +00:00
Douglas Gregor
8a2e601917
Try to complete a type before looking for conversion functions within
...
that type. Note that we do not produce a diagnostic if the type is
incomplete; rather, we just don't look for conversion functions. Fixes PR4660.
llvm-svn: 79919
2009-08-24 15:23:48 +00:00
Douglas Gregor
c8c277a1b3
Make sure to adjust function template declarations to their templated
...
declarations (e.g., FunctionTemplateDecl -> CXXConstructorDecl) before
performing semantic analysis on the declarations. Fixes PR4761.
llvm-svn: 79911
2009-08-24 11:57:43 +00:00
Douglas Gregor
05155d8d7b
Implement conversion function templates, along with the ability to use
...
template argument deduction from a conversion function (C++
[temp.deduct.conv]) with implicit conversions.
llvm-svn: 79693
2009-08-21 23:19:43 +00:00
Douglas Gregor
e5bbb7d4ef
Fix parsing for out-of-line definitions of constructors and
...
destructors of class templates.
llvm-svn: 79678
2009-08-21 22:16:40 +00:00
Douglas Gregor
5ed5ae476e
Introduce support for constructor templates, which can now be declared
...
and will participate in overload resolution. Unify the instantiation
of CXXMethodDecls and CXXConstructorDecls, which had already gotten
out-of-sync.
llvm-svn: 79658
2009-08-21 18:42:58 +00:00
Argyrios Kyrtzidis
6032ef1aa3
Remove TypeSpecStartLocation from VarDecl/FunctionDecl/FieldDecl, and use DeclaratorInfo to get this information.
...
llvm-svn: 79584
2009-08-21 00:31:54 +00:00
Douglas Gregor
3447e76762
Initial support for parsing and representation of member function templates.
...
llvm-svn: 79570
2009-08-20 22:52:58 +00:00
John McCall
950aac085d
Add syntax examples for the friend declaration types.
...
Remove an assert trivialized by dominating code.
llvm-svn: 79520
2009-08-20 07:19:42 +00:00
Argyrios Kyrtzidis
c7148c974d
Use Sema's LocInfoType to pass and preserve type source info through the Parser.
...
llvm-svn: 79395
2009-08-19 01:28:28 +00:00
Argyrios Kyrtzidis
60ed560428
Introduce DeclaratorDecl and pass DeclaratorInfo through the Decl/Sema 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
2009-08-19 01:27:57 +00:00
John McCall
5ed6e8f54c
Teach Sema how to pop out of friend function definitions in nested classes.
...
llvm-svn: 79291
2009-08-18 00:00:49 +00:00
Anders Carlsson
250aada4b9
AddInitializerToDecl can't take a FullExprArg. Make it take an ExprArg, and create the CXXExprWithTemporaries before setting the initializer on the VarDecl.
...
llvm-svn: 79176
2009-08-16 05:13:48 +00:00
Anders Carlsson
f86a8d1030
BuildCXXConstructExpr doesn't need to take an ASTContext.
...
llvm-svn: 79149
2009-08-15 23:41:35 +00:00
Eli Friedman
c96d4963eb
Implement __is_empty. Patch by Sean Hunt.
...
llvm-svn: 79143
2009-08-15 21:55:26 +00:00
Anders Carlsson
e827123f08
Make the CXXDefaultArgExpr constructor protected and add a static Create function.
...
llvm-svn: 79013
2009-08-14 18:30:22 +00:00
Fariborz Jahanian
4985b33fd7
Patch to force synthesis of copy assignment operator
...
function in the order according to c++03. ir-gen
for copy assignment in the trivial case and the first
test case.
llvm-svn: 78938
2009-08-13 21:09:41 +00:00
Fariborz Jahanian
bbd5e8c2cf
More toward synthesizing copy assignments. SWIP.
...
llvm-svn: 78861
2009-08-12 23:34:46 +00:00
Fariborz Jahanian
de7d4c264a
Patch for synthesizing copy assignment operator.
...
WIP.
llvm-svn: 78841
2009-08-12 21:14:35 +00:00
John McCall
2658c4e2d9
Add a FriendClassDecl type for holding declarations of friend types in
...
the AST, and create such declarations.
llvm-svn: 78719
2009-08-11 21:13:21 +00:00
Fariborz Jahanian
b2197042b8
ir-gen support for anonymous union data member
...
copying in copy constructors and used in
default constructor's initializer list.
llvm-svn: 78700
2009-08-11 18:49:54 +00:00
John McCall
d1e9d835f3
Argument-dependent lookup for friend declarations. Add a new decl type,
...
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
2009-08-11 06:59:38 +00:00
John McCall
2c5206d22e
Drop the friend-inner-class diagnostic from an extwarn to an ext and don't
...
guard its report on GNUMode.
llvm-svn: 78338
2009-08-06 21:21:21 +00:00
John McCall
93343b9466
Permit a class to friend its members in C++0x, without restriction.
...
Permit a class to friend its class members in C++ 98, as long as extensions
are enabled (and even when they aren't, only give an extwarn about it).
llvm-svn: 78332
2009-08-06 20:49:32 +00:00
John McCall
07e91c04ba
First pass at friend semantics.
...
llvm-svn: 78274
2009-08-06 02:15:43 +00:00
Eli Friedman
44b83eea30
Get rid of "smart" quotes. Per report on cfe-dev.
...
llvm-svn: 78230
2009-08-05 19:21:58 +00:00
Fariborz Jahanian
d460cb4356
Handle destruction of temporaries used in default argument
...
construction of constructor calls.
llvm-svn: 78222
2009-08-05 18:17:32 +00:00
Fariborz Jahanian
aa890bf2f3
Patch to improve ir-gen for constructors with default argument
...
expressions and a test case.
llvm-svn: 78213
2009-08-05 17:03:54 +00:00
Douglas Gregor
2211d345d2
Introduce the canonical type smart pointers, and use them in a few places to
...
tighten up the static type system.
llvm-svn: 78164
2009-08-05 05:36:45 +00:00
Fariborz Jahanian
800f37262c
Support for use of default argument in constructors.
...
work in progress.
llvm-svn: 78132
2009-08-05 00:26:10 +00:00
Mike Stump
12b8ce168d
Canonicalize else.
...
llvm-svn: 78102
2009-08-04 21:02:39 +00:00
Fariborz Jahanian
6782844874
Minor renaming/refactoring. No change in functionality.
...
llvm-svn: 77985
2009-08-03 19:13:25 +00:00
Anders Carlsson
a076d14514
Add CK_DerivedToBase and use it PerformObjectMemberConversion.
...
llvm-svn: 77652
2009-07-31 01:23:52 +00:00
Ted Kremenek
c23c7e6a51
Change uses of:
...
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
2009-07-29 21:53:49 +00:00
Eli Friedman
8e1433b370
Refactor base/member initializers, and construct them correctly in cases
...
with dependent types. Fixes PR4621 and PR4627.
llvm-svn: 77498
2009-07-29 19:44:27 +00:00
Fariborz Jahanian
a5c335527d
More Sema check for constructor's member initializer along
...
with type conversion to fix ir-gen crash.
llvm-svn: 77000
2009-07-24 20:28:49 +00:00
Fariborz Jahanian
ca2f085a4e
Diagnose when base classes and members to be intialized
...
with constructors don't have a matching constructor.
llvm-svn: 76913
2009-07-23 23:32:59 +00:00
Fariborz Jahanian
0228bc1a41
Add constructor used to initialize base/member in
...
CXXBaseOrMemberInitializer AST node. Needed by
its clients to do the initialization.
llvm-svn: 76826
2009-07-23 00:42:24 +00:00
Douglas Gregor
b77af8f4aa
Fix some memory allocation/deallocation issues
...
llvm-svn: 76783
2009-07-22 20:55:49 +00:00
Douglas Gregor
8a27391190
"This patch implements the restrictions on union members detailed in
...
[class.union]p1", from John McCall!
llvm-svn: 76766
2009-07-22 18:25:24 +00:00
Fariborz Jahanian
5c14ec30cd
Allocate BaseOrMemberInitializers and CXXBaseSpecifier nodes
...
via ASTContext.
llvm-svn: 76758
2009-07-22 17:41:53 +00:00
Fariborz Jahanian
aee31ac316
Patch to accomodate Doug's comment on default
...
destruction of base/members for each destructor AST.
llvm-svn: 76663
2009-07-21 22:36:06 +00:00
Eli Friedman
952c15dd52
Misc fixes for -Wreorder:
...
1. Make it work correctly with anonymous unions.
2. Don't compute it if the warning isn't enabled.
3. Optimize the algorithm slightly to make it linear time in the
case where we don't produce any warnings.
llvm-svn: 76630
2009-07-21 19:28:10 +00:00
Ted Kremenek
8a286fbdb9
Per offline discussion with Steve Naroff, add back Type::getAsXXXType() methods
...
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
2009-07-17 17:50:17 +00:00
Ted Kremenek
b825c0ddc5
Replaced Type::getAsLValueReferenceType(), Type::getAsRValueReferenceType(), Type::getAsMemberPointerType(), Type::getAsTagType(), and Type::getAsRecordType() with their Type::getAs<XXX> equivalents.
...
llvm-svn: 76139
2009-07-17 01:20:38 +00:00
Ted Kremenek
3d486f08cb
Replace Type::getAsReferenceType() with Type::getAs<ReferenceType>().
...
llvm-svn: 76132
2009-07-17 01:01:15 +00:00
Ted Kremenek
e3fb4b6524
Add member template 'Type::getAs<T>', which converts a Type* to a respective T*.
...
This method is intended to eventually replace the individual
Type::getAsXXXType<> methods.
The motivation behind this change is twofold:
1) Reduce redundant implementations of Type::getAsXXXType() methods. Most of
them are basically copy-and-paste.
2) By centralizing the implementation of the getAs<Type> logic we can more
smoothly move over to Doug Gregor's proposed canonical type smart pointer
scheme.
Along with this patch:
a) Removed 'Type::getAsPointerType()'; now clients use getAs<PointerType>.
b) Removed 'Type::getAsBlockPointerTypE()'; now clients use getAs<BlockPointerType>.
llvm-svn: 76098
2009-07-16 19:58:26 +00:00
Fariborz Jahanian
16094c2467
Added ASTs to destructor decl AST for default destruction of object's
...
base/members.
llvm-svn: 75849
2009-07-15 22:34:08 +00:00
Fariborz Jahanian
49c81799b0
Patch to build AST for ctor's initializer list according to
...
semantics of order of construction [class.init].
llvm-svn: 75649
2009-07-14 18:24:21 +00:00
Fariborz Jahanian
3554b5a37c
Patch to build list of inherited virtual base classes
...
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
2009-07-10 20:13:23 +00:00
Fariborz Jahanian
341583c3ac
Sema check on out of order object initialization of
...
class object's base and members under -Wreorder flag.
llvm-svn: 75168
2009-07-09 19:59:47 +00:00
Anders Carlsson
17973e684d
Use getDeclName in DefineImplicitOverloadedAssign as well.
...
llvm-svn: 75152
2009-07-09 17:47:25 +00:00
Anders Carlsson
52b9180587
Pass the DeclName to the diagnostic builder so that member names will be quoted correctly.
...
llvm-svn: 75150
2009-07-09 17:37:12 +00:00
Sebastian Redl
86be854fa8
Implement checking of exception spec compatibility for overriding virtual functions.
...
llvm-svn: 74943
2009-07-07 20:29:57 +00:00
Sebastian Redl
4f4d7b5d8e
Catch function redeclarations with incompatible exception specifications.
...
llvm-svn: 74787
2009-07-04 11:39:00 +00:00
Fariborz Jahanian
9fa077c626
Patch to allocate list of bases in CXXRecordDecl
...
using ASTContxt allocation.
llvm-svn: 74717
2009-07-02 18:26:15 +00:00
Fariborz Jahanian
5c6af0a998
Use Destroy for member initializer list clean up.
...
Per Doug's comments. Doug please review.
llvm-svn: 74666
2009-07-01 23:35:25 +00:00
Fariborz Jahanian
c1fc3ec878
Patch to implement template types in ctor-initializer list.
...
Also has fix for bugzilla-4469.
llvm-svn: 74631
2009-07-01 19:21:19 +00:00
Fariborz Jahanian
302bb6661f
Patch to support optional nested-name-specifier in in ctor-initializer
...
list.
llvm-svn: 74571
2009-06-30 23:26:25 +00:00
Fariborz Jahanian
cae5482f6c
Diagnose multiple initialization of anonymous union
...
fields in the ctor-initializer list.
llvm-svn: 74554
2009-06-30 21:52:59 +00:00
Fariborz Jahanian
7baa71e2dd
More diagnostics related to initialization of direct bases
...
in ctor-initializer list.
llvm-svn: 74541
2009-06-30 17:34:52 +00:00
Fariborz Jahanian
5f12b5386c
Compute ending of iterator in for-loop once.
...
llvm-svn: 74533
2009-06-30 16:36:53 +00:00
Argyrios Kyrtzidis
cfbfe78e9e
De-ASTContext-ify DeclContext.
...
Remove ASTContext parameter from DeclContext's methods. This change cascaded down to other Decl's methods and changes to call sites started "escalating".
Timings using pre-tokenized "cocoa.h" showed only a ~1% increase in time run between and after this commit.
llvm-svn: 74506
2009-06-30 02:36:12 +00:00
Fariborz Jahanian
e853bfa970
Take care of Chris's comments.
...
llvm-svn: 74486
2009-06-30 00:17:27 +00:00
Fariborz Jahanian
651185bf47
A more detailed diagnosis of ill-formed ctor-initializer
...
list.
llvm-svn: 74480
2009-06-30 00:02:17 +00:00
Fariborz Jahanian
2be8bf44cd
Diagnose multiple initialzation of data-member/base
...
in the ctor-initializer list. More to come.
llvm-svn: 74465
2009-06-29 22:33:26 +00:00
Fariborz Jahanian
3fe6b61b23
Renamed MarcDestructorReferenced -> MarkDestructorReferenced
...
llvm-svn: 74386
2009-06-27 15:05:11 +00:00
Eli Friedman
173e0b7a96
Fix a bogus error overloading an operator where the only class
...
parameter has a dependent type.
llvm-svn: 74380
2009-06-27 05:59:59 +00:00
Anders Carlsson
74d7f0dd65
Make it possible for using decls to point to operators. Fixes PR4441.
...
llvm-svn: 74362
2009-06-27 00:27:47 +00:00
Fariborz Jahanian
24a175b37c
Patch to mark destructors when they are used.
...
llvm-svn: 74359
2009-06-26 23:49:16 +00:00
Fariborz Jahanian
ebe772e2f2
Minor change per Doug's comments.
...
- Fariborz
llvm-svn: 74287
2009-06-26 16:08:57 +00:00
Douglas Gregor
ad3f2fcf43
Improved semantic analysis and AST respresentation for function
...
templates.
For example, this now type-checks (but does not instantiate the body
of deref<int>):
template<typename T> T& deref(T* t) { return *t; }
void test(int *ip) {
int &ir = deref(ip);
}
Specific changes/additions:
* Template argument deduction from a call to a function template.
* Instantiation of a function template specializations (just the
declarations) from the template arguments deduced from a call.
* FunctionTemplateDecls are stored directly in declaration contexts
and found via name lookup (all forms), rather than finding the
FunctionDecl and then realizing it is a template. This is
responsible for most of the churn, since some of the core
declaration matching and lookup code assumes that all functions are
FunctionDecls.
llvm-svn: 74213
2009-06-25 22:08:12 +00:00
Fariborz Jahanian
41f792735f
Patch to diagnose and Mark use of implicit default assignment operator.
...
llvm-svn: 74205
2009-06-25 21:45:19 +00:00
Duncan Sands
323fc2a229
Explicit braces to avoid ambiguous ‘else’.
...
llvm-svn: 74171
2009-06-25 09:03:06 +00:00
Fariborz Jahanian
a83edb0cc1
Some changes to accomodate Doug's comment for
...
implicit copy constructor definition determination.
llvm-svn: 74025
2009-06-23 23:42:10 +00:00
Fariborz Jahanian
477d242a2e
patch to mark use of implicit copy constructors.
...
llvm-svn: 73922
2009-06-22 23:34:40 +00:00
Douglas Gregor
71a5718f2d
Robustify a bunch of C++-related declaration actions.
...
llvm-svn: 73918
2009-06-22 23:20:33 +00:00
Douglas Gregor
77b50e1126
Implement implicit instantiation of the member functions of a class template
...
specialization. At present, all implicit instantiations occur at the
end of the translation unit.
llvm-svn: 73915
2009-06-22 23:06:13 +00:00
Fariborz Jahanian
18eb69af79
Changes made per Doug's comments.
...
llvm-svn: 73897
2009-06-22 20:37:23 +00:00
Fariborz Jahanian
3a36343b88
Remove ImplicitMustBeDefined, use universal 'Used' flag
...
instead. Do the implicit default ctor checking in MarkDeclarationReferenced.
llvm-svn: 73888
2009-06-22 17:30:33 +00:00
Fariborz Jahanian
1c9d5d956c
Made improvements in c++'s object model patch on Doug's review.
...
llvm-svn: 73833
2009-06-20 20:23:38 +00:00
Douglas Gregor
fec52635f0
Parsing and AST support for using declarations, from John Thompson!
...
llvm-svn: 73812
2009-06-20 00:51:54 +00:00
Douglas Gregor
c9c02ed8f4
Keep track of when declarations are "used" according to C and
...
C++. This logic is required to trigger implicit instantiation of
function templates and member functions of class templates, which will
be implemented separately.
This commit includes support for -Wunused-parameter, printing warnings
for named parameters that are not used within a function/Objective-C
method/block. Fixes <rdar://problem/6505209>.
llvm-svn: 73797
2009-06-19 23:52:42 +00:00
Fariborz Jahanian
423a81f259
Patch for implementation of C++'s object model. This is
...
work in progress.
llvm-svn: 73782
2009-06-19 19:55:27 +00:00
Argyrios Kyrtzidis
7bcce49e04
Factor out some common code into Sema::EnterDeclaratorContext/ExitDeclaratorContext.
...
llvm-svn: 73655
2009-06-17 23:15:40 +00:00
Argyrios Kyrtzidis
3df1978270
Implement correct name lookup inside an initializer of a C++ class static data member.
...
Fixes "test/CXX/basic/basic.lookup/basic.lookup.unqual/p13.cpp" test case.
llvm-svn: 73652
2009-06-17 22:50:06 +00:00
Fariborz Jahanian
b1743254e7
Removed deadcode related to addition of constructor
...
decls to a class.
llvm-svn: 73650
2009-06-17 22:44:31 +00:00
Douglas Gregor
758a869b14
Support dependent extended vector types and template instantiation
...
thereof. Patch by Anders Johnsen!
llvm-svn: 73641
2009-06-17 21:51:59 +00:00
Anders Carlsson
a42ab8f3d5
Handle temporaries in default arguments.
...
llvm-svn: 73462
2009-06-16 03:37:31 +00:00
Anders Carlsson
84613c4eba
It's an error to use a function declared in a class definition as a default argument before the function has been declared.
...
llvm-svn: 73234
2009-06-12 16:51:40 +00:00
Anders Carlsson
8544647e9c
Make ParmVarDecl::getDefaultArg() more robust, it now asserts that the argument is not unparsed. Add a new hasDefaultArg() and use it in places where getDefaultArg() was called when the argument was unparsed.
...
llvm-svn: 72984
2009-06-06 04:14:07 +00:00
Anders Carlsson
4b2434da54
Remove VarDecl from CXXConstructExpr.
...
llvm-svn: 72633
2009-05-30 20:56:46 +00:00
Douglas Gregor
182319375a
Pretty printing and improved representation for namespace alias declarations
...
llvm-svn: 72616
2009-05-30 06:48:27 +00:00