Nico Weber
24b2a822dd
PR9037: Allow override, final, and new as an extension on inline members.
...
llvm-svn: 124477
2011-01-28 06:07:34 +00:00
Anders Carlsson
e30621b626
Get rid of [[hiding]], [[override]] and [[base_check]].
...
llvm-svn: 124087
2011-01-23 21:33:18 +00:00
Anders Carlsson
19588aa40b
Get rid of the [[final]] C++0x attribute.
...
llvm-svn: 124083
2011-01-23 21:07:30 +00:00
Anders Carlsson
5a72fdb05b
Accept the C++0x override control keywords as an extension in C++98. This is OK since the new syntax is unambiguous and can't be confused with C++98 syntax. If anyone disagrees, please shout!
...
llvm-svn: 124048
2011-01-22 23:01:49 +00:00
Anders Carlsson
fc1eef4898
Mark classes as final or explicit. Diagnose when a class marked 'final' is used as a base.
...
llvm-svn: 124039
2011-01-22 17:51:53 +00:00
Anders Carlsson
4b63d0e0a7
Parse class-virt-specifier-seqs.
...
llvm-svn: 124036
2011-01-22 16:56:46 +00:00
Anders Carlsson
f2ca389205
More work on ClassVirtSpecifiers.
...
llvm-svn: 124035
2011-01-22 15:58:16 +00:00
Anders Carlsson
db36b8055e
Pass the VirtSpecifiers along to Sema::ActOnCXXMemberDeclarator.
...
llvm-svn: 123878
2011-01-20 03:57:25 +00:00
Anders Carlsson
428803b58a
Lazily initialize the 'final' and 'override' contextual keywords as suggested by Doug.
...
llvm-svn: 123876
2011-01-20 03:47:08 +00:00
Douglas Gregor
8a4db83041
Parse the optional semicolon after a C++ in-class member function
...
definition, rather than complaining about it. Problem reported by
Marshall Clow.
llvm-svn: 123835
2011-01-19 16:41:58 +00:00
Jeffrey Yasskin
8dfa5f1776
Fix warnings found by gcc-4.6, from -Wunused-but-set-variable and
...
-Wint-to-pointer-cast.
llvm-svn: 123719
2011-01-18 02:00:16 +00:00
Anders Carlsson
0acd4cfc33
Remove dead code.
...
llvm-svn: 123612
2011-01-17 03:13:24 +00:00
Anders Carlsson
5610490cdf
Change ParseOptionalCXX0XVirtSpecifierSeq to take a VirtSpecifiers struct.
...
Enforce C++[class.mem]p8:
A virt-specifier-seq shall contain at most one of each virt-specifier.
llvm-svn: 123611
2011-01-17 03:05:47 +00:00
Anders Carlsson
11fdbbc1ad
Begin work on supporting "N3206: Override control: Eliminating Attributes", from
...
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2010/n3206.htm
This lands support for parsing virt-specifier-seq after member functions, including the
contextual keywords 'final', and 'override'. The keywords are not yet used for anything.
llvm-svn: 123606
2011-01-16 23:56:42 +00:00
Alexis Hunt
1d7926502f
Renamed CXXBaseOrMemberInitializer to CXXCtorInitializer. This is both shorter,
...
more accurate, and makes it make sense for it to hold a delegating constructor
call.
llvm-svn: 123084
2011-01-08 20:30:50 +00:00
Douglas Gregor
44e7df67d9
Implement pack expansion of base initializers, so that we can
...
initialize those lovely mixins that come from pack expansions of base
specifiers.
llvm-svn: 122793
2011-01-04 00:32:56 +00:00
Douglas Gregor
752a595655
Implement pack expansions whose pattern is a base-specifier.
...
llvm-svn: 122782
2011-01-03 22:36:02 +00:00
John McCall
53fa71476d
Refactor how we collect attributes during parsing, and add slots for attributes
...
on array and function declarators. This is pretty far from complete, and I'll
revisit it later if someone doesn't beat me to it.
llvm-svn: 122535
2010-12-24 02:08:15 +00:00
Douglas Gregor
830837da53
Extend the parser to support pack expansions within exception
...
specifications. We can't yet instantiate them, however, since I
tripped over PR8835.
llvm-svn: 122292
2010-12-20 23:57:46 +00:00
Abramo Bagnara
924a8f3573
Added ParenType type node.
...
llvm-svn: 121488
2010-12-10 16:29:40 +00:00
Abramo Bagnara
0e05e24e9c
Added struct/class syntactic info for c++0x scoped enum.
...
llvm-svn: 120828
2010-12-03 18:54:17 +00:00
Craig Silverstein
9bc166ac86
In some situations, TemplateArgumentLoc wasn't setting TypeSourceLoc (see
...
http://llvm.org/bugs/show_bug.cgi?id=8558 ). This patch fixes it. Thanks to
rjmccall for all the coaching!
Approved by rjmccall
llvm-svn: 119697
2010-11-18 08:32:02 +00:00
Ted Kremenek
5eec2b0bd3
Region-allocate all AttributeList objects from a factory object instead of manually managing them
...
using new/delete and OwningPtrs. After memory profiling Clang, I witnessed periodic leaks of these
objects; digging deeper into the code, it was clear that our management of these objects was a mess. The ownership rules were murky at best, and not always followed. Worse, there are plenty of error paths where we could screw up.
This patch introduces AttributeList::Factory, which is a factory class that creates AttributeList
objects and then blows them away all at once. While conceptually simple, most of the changes in
this patch just have to do with migrating over to the new interface. Most of the changes have resulted in some nice simplifications.
This new strategy currently holds on to all AttributeList objects during the lifetime of the Parser
object. This is easily tunable. If we desire to have more bound the lifetime of AttributeList
objects more precisely, we can have the AttributeList::Factory object (in Parser) push/pop its
underlying allocator as we enter/leave key methods in the Parser. This means that we get
simple memory management while still having the ability to finely control memory use if necessary.
Note that because AttributeList objects are now BumpPtrAllocated, we may reduce malloc() traffic
in many large files with attributes.
This fixes the leak reported in: <rdar://problem/8650003>
llvm-svn: 118675
2010-11-10 05:59:39 +00:00
John McCall
9b72f89f0f
Diagnose attempst to template using declarations and using directives.
...
Recover from the latter and fail early for the former. Fixes PR8022.
llvm-svn: 118669
2010-11-10 02:40:36 +00:00
Chris Lattner
8ea6442f92
tidy up
...
llvm-svn: 118626
2010-11-09 20:15:55 +00:00
Chris Lattner
0786544ac5
fix PR8380, a crash on invalid due to an illogical DeclSpec SourceRange being constructed.
...
llvm-svn: 118625
2010-11-09 20:14:26 +00:00
John McCall
32723e9198
Tag references shouldn't ever get template parameter lists.
...
Fixes rdar://problem/8568507
llvm-svn: 116843
2010-10-19 18:40:57 +00:00
John McCall
ace48cd872
Redirect templated friend class decls to a new Sema callback and
...
construct an unsupported friend when there's a friend with a templated
scope specifier. Fixes a consistency crash, rdar://problem/8540527
llvm-svn: 116786
2010-10-19 01:40:49 +00:00
Douglas Gregor
efc469587a
Parse default arguments within member functions in source order, from
...
Manuel Klimek! Fixes PR7715.
llvm-svn: 116311
2010-10-12 16:25:54 +00:00
Francois Pichet
c2bc5ac149
Add parsing support for Microsoft attributes. MS attributes will just be skipped and not inserted into the AST for now.
...
llvm-svn: 116203
2010-10-11 12:59:39 +00:00
Douglas Gregor
0bf3140424
Implement C++0x scoped enumerations, from Daniel Wallin! (and tweaked a
...
bit by me).
llvm-svn: 116122
2010-10-08 23:50:27 +00:00
Douglas Gregor
7fb25418ed
Implement the C++0x "trailing return type" feature, e.g.,
...
auto f(int) -> int
from Daniel Wallin!
(With a few minor bug fixes from me).
llvm-svn: 115322
2010-10-01 18:44:50 +00:00
Anders Carlsson
991285e425
Allow the use of C++0x deleted functions as an extension in C++98.
...
llvm-svn: 114762
2010-09-24 21:25:25 +00:00
Douglas Gregor
ce5aa33385
Eliminate the comma locations from all of the Sema routines that deal
...
with comma-separated lists. We never actually used the comma
locations, nor did we store them in the AST, but we did manage to
waste time during template instantiation to produce fake locations.
llvm-svn: 113495
2010-09-09 16:33:13 +00:00
Douglas Gregor
45d6bdfa88
Improve recovery when there is a stray ']' or ')' before the ';' at
...
the end of a statement. Fixes <rdar://problem/6896493>.
llvm-svn: 113202
2010-09-07 15:23:11 +00:00
Douglas Gregor
ce66d02877
Improve recovery when a comma is missing between enumerators in an
...
enumeration definition. Fixes <rdar://problem/7159693>.
llvm-svn: 113201
2010-09-07 14:51:08 +00:00
Douglas Gregor
3465e26102
Improve diagnostic and recovery when missing a comma between base or
...
member initializers in a C++ constructor. Fixes <rdar://problem/7796492>.
llvm-svn: 113199
2010-09-07 14:35:10 +00:00
Sebastian Redl
5a5f2c76b6
Enable inline namespaces in C++03 as an extension.
...
llvm-svn: 112566
2010-08-31 00:36:45 +00:00
Douglas Gregor
eaeeca9afe
Basic code completion support for the base and member initializers in
...
a constructor.
llvm-svn: 112330
2010-08-28 00:00:50 +00:00
Sebastian Redl
6766794c0b
Parser support for inline namespaces
...
llvm-svn: 112320
2010-08-27 23:12:46 +00:00
John McCall
faf5fb4b78
One who seeks knowledge learns something new every day.
...
One who seeks the Tao unlearns something new every day.
Less and less remains until you arrive at non-action.
When you arrive at non-action,
nothing will be left undone.
llvm-svn: 112244
2010-08-26 23:41:50 +00:00
Douglas Gregor
117db7e95a
Parse all kinds of declarations as part of a linkage-specification,
...
from Francois Pichet! Fixes PR7754.
llvm-svn: 111912
2010-08-24 14:14:45 +00:00
John McCall
dadc575b1e
OwningExprResult -> ExprResult. This patch brought to you by
...
M-x query-replace-regexp
\(Sema::\|Action::\|Parser::\|\)Owning\(Expr\|Stmt\)Result -> \2Result
llvm-svn: 111903
2010-08-24 06:29:42 +00:00
John McCall
ba7bf59503
Abstract out passing around types and kill off ActionBase.
...
llvm-svn: 111901
2010-08-24 05:47:05 +00:00
John McCall
b268a282a4
Kill off ExprArg (now just Expr*) and StmtArg (now just Stmt*).
...
llvm-svn: 111863
2010-08-23 23:25:46 +00:00
John McCall
3e56fd4d22
Push DeclGroupRefs and TemplateNames in an opaque but type-safe way
...
through the parser.
llvm-svn: 111800
2010-08-23 07:28:44 +00:00
John McCall
37ad551a25
Sundry incremental steps towards killing off Action.
...
llvm-svn: 111795
2010-08-23 06:44:23 +00:00
John McCall
4887165193
DeclPtrTy -> Decl *
...
llvm-svn: 111733
2010-08-21 09:40:31 +00:00
John McCall
8b0666cf79
Another step in the process of making the parser depend on Sema:
...
- move DeclSpec &c into the Sema library
- move ParseAST into the Parse library
Reflect this change in a thousand different includes.
Reflect this change in the link orders.
llvm-svn: 111667
2010-08-20 18:27:03 +00:00
Argyrios Kyrtzidis
3084a61e98
-Make TokenID of IdentifierInfo read-only, remove setTokenID().
...
-There are 2 instances that change the TokenID for GNU libstdc++ 4.2 compatibility.
To handler those cases introduce a RevertedTokenID bitfield, RevertTokenIDToIdentifier() and hasRevertedTokenIDToIdentifier() methods.
Store the bitfield in PCH.
llvm-svn: 110868
2010-08-11 22:55:12 +00:00