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
Douglas Gregor
3bc6e4c72a
Printing for using directives, e.g.,
...
using namespace std::debug;
Extended UsingDirectiveDecl to store the nested-name-specifier that
precedes the nominated namespace.
llvm-svn: 72614
2009-05-30 06:31:56 +00:00
Douglas Gregor
e44a2adf41
Reimplement much of the way that we track nested classes in the
...
parser. Rather than placing all of the delayed member function
declarations and inline definitions into a single bucket corresponding
to the top-level class, we instead mirror the nesting structure of the
nested classes and place the delayed member functions into their
appropriate place. Then, when we actually parse the delayed member
function declarations, set up the scope stack the same way as it was
when we originally saw the declaration, so that we can find, e.g.,
template parameters that are in scope.
llvm-svn: 72502
2009-05-27 23:11:45 +00:00
Sebastian Redl
5068f77ac7
Reintroduce the home for exception specs, and make Sema fill it. However, keep the spec out of the canonical type this time. Net effect is currently nothing, because the spec isn't checked anywhere.
...
llvm-svn: 72498
2009-05-27 22:11:52 +00:00
Douglas Gregor
31cf12c0a6
When evaluating a VarDecl as a constant or determining whether it is
...
an integral constant expression, maintain a cache of the value and the
is-an-ICE flag within the VarDecl itself. This eliminates
exponential-time behavior of the Fibonacci template metaprogram.
llvm-svn: 72428
2009-05-26 18:54:04 +00:00
Anders Carlsson
97c793ad1c
When assigning from an rvalue to a const reference, the implicit cast from T -> const T is not an lvalue cast.
...
llvm-svn: 72082
2009-05-19 00:38:24 +00:00