Peter Collingbourne
7d33cd3a2f
Fix grammar for C++11 alignment specifiers, and add a few FIXMEs.
...
llvm-svn: 142760
2011-10-23 20:07:52 +00:00
Richard Smith
09f76ee63c
Improve the diagnostic when a comma ends up at the end of a declarator group
...
instead of a semicolon (as sometimes happens during refactorings). When such a
comma is seen at the end of a line, and is followed by something which can't
possibly be a declarator (or even something which might be a plausible typo for
a declarator), suggest that a semicolon was intended.
llvm-svn: 142544
2011-10-19 21:33:05 +00:00
Douglas Gregor
e248eea214
Improve the warning for cv-qualifiers on free functions, from Ahmed Charles!
...
llvm-svn: 142478
2011-10-19 06:04:55 +00:00
Fariborz Jahanian
7f73302b4f
objc: allow class name qualified with protocols in
...
iboutletcollection attribute. But ignore protocol
list. // rdar://10296078
llvm-svn: 142459
2011-10-18 23:13:50 +00:00
Fariborz Jahanian
6b70865ec0
objc: diagnose invalid argument to an
...
iboutletcollection attribute intead of crashing.
// rdar://10296078
llvm-svn: 142364
2011-10-18 17:11:10 +00:00
Richard Smith
b12bf69769
Refactor __attribute__ parsing, and add a diagnostic if the r_paren at the end
...
of an attrib is missing. gcc does not allow the closing parenthesis to be omitted.
llvm-svn: 142255
2011-10-17 21:20:17 +00:00
Richard Smith
5d164bc5e0
Implement -Wc++98-compat warnings for the parser.
...
llvm-svn: 142056
2011-10-15 05:09:34 +00:00
Anton Korobeynikov
f0c267e6e0
Provide half floating point support as a storage only type.
...
Lack of half FP was a regression compared to llvm-gcc.
llvm-svn: 142016
2011-10-14 23:23:15 +00:00
Douglas Gregor
e7a8e3b612
Introduce BalancedDelimiterTracker, to better track open/close
...
delimiter pairs and detect when we exceed the implementation limit for
nesting depth, from Aaron Ballman!
llvm-svn: 141782
2011-10-12 16:37:45 +00:00
Kaelyn Uhrain
85308c6ecd
Add typo correction for type names.
...
The main motivation was to do typo correction in C++ "new" statements,
though picking it up in other places where type names are expected was
pretty much a freebie.
llvm-svn: 141621
2011-10-11 01:02:41 +00:00
Eli Friedman
0dfb889575
Support for C1x _Atomic specifier (see testcase). This is primarily being committed at the moment to help support C++0x <atomic>, but it should be a solid base for implementing the full specification of C1x _Atomic.
...
Thanks to Jeffrey Yasskin for the thorough review!
llvm-svn: 141330
2011-10-06 23:00:33 +00:00
Peter Collingbourne
485b80fecc
OpenCL: add a non-standard extension, cl_clang_storage_class_specifiers,
...
which enables support for C99 storage-class specifiers.
This extension is intended to be used by implementations to implement
OpenCL C built-in functions.
llvm-svn: 141271
2011-10-06 03:01:00 +00:00
John McCall
a55902bf98
Parse attributes written in an ObjC method parameter type as
...
attributes on the parameter declaration.
llvm-svn: 140944
2011-10-01 09:56:14 +00:00
Peter Collingbourne
2f3cf4b158
Add support for alignment-specifiers in C1X and C++11, remove
...
support for the C++0x draft [[align]] attribute and add the C1X
standard header file stdalign.h
llvm-svn: 140796
2011-09-29 18:04:28 +00:00
Peter Collingbourne
70188b3fc2
Add support for parsing the optional attribute-specifier-seq at the
...
end of a decl-specifier-seq
llvm-svn: 140793
2011-09-29 18:03:57 +00:00
David Blaikie
751c558d8e
ArrayRef-ifying the fields passed to Sema::ActOnFields
...
llvm-svn: 140293
2011-09-22 02:58:26 +00:00
Francois Pichet
0706d203cf
Rename LangOptions::Microsoft to LangOptions::MicrosoftExt to make it clear that this flag must be used only for Microsoft extensions and not emulation; to avoid confusion with the new LangOptions::MicrosoftMode flag.
...
Many of the code now under LangOptions::MicrosoftExt will eventually be moved under the LangOptions::MicrosoftMode flag.
llvm-svn: 139987
2011-09-17 17:15:52 +00:00
Argyrios Kyrtzidis
635a9b4dcf
Record the full source range of an attribute.
...
llvm-svn: 139599
2011-09-13 16:05:53 +00:00
Douglas Gregor
2820e6923a
__module_private__ is inherited by redeclarations of an entity, and
...
must also be present of the first declaration of that entity.
llvm-svn: 139384
2011-09-09 19:05:14 +00:00
Douglas Gregor
26701a4371
Modules: introduce the __module_private__ declaration specifier, which
...
indicates that a declaration is only visible within the module it is
declared in.
llvm-svn: 139348
2011-09-09 02:06:17 +00:00
Caitlin Sadowski
990d571226
Thread safety: added support for function scopes in attribute arguments.
...
This patch was written by DeLesley Hutchins.
llvm-svn: 139302
2011-09-08 17:42:31 +00:00
Caitlin Sadowski
9385dd7415
Thread Safety: Patch to implement delayed parsing of attributes within a
...
class scope.
This patch was also written by DeLesley Hutchins.
llvm-svn: 139301
2011-09-08 17:42:22 +00:00
Douglas Gregor
8b7d403684
Allow C++0x enumerations with a fixed underlying type in
...
Objective-C. The @encode'ing of such an enumeration type is the same
as its underlying type. <rdar://problem/5276348>.
llvm-svn: 139297
2011-09-08 17:18:35 +00:00
Richard Smith
5065864151
PR10458: Last part of providing 'auto' type specifier as an extension in C++98: permit it within type-ids.
...
llvm-svn: 139103
2011-09-04 20:24:20 +00:00
Richard Smith
58c7433709
PR10458: Finesse behaviour of C++0x features when in pre-0x mode. Accept for-range and auto with an ExtWarn, and produce a -Wc++0x-compat warning in C++98 mode when auto is used as a storage class.
...
llvm-svn: 139102
2011-09-04 19:54:14 +00:00
Argyrios Kyrtzidis
5cec2aea3f
Support code-completion for C++ inline methods and ObjC buffering methods.
...
Previously we would cut off the source file buffer at the code-completion
point; this impeded code-completion inside C++ inline methods and,
recently, with buffering ObjC methods.
Have the code-completion inserted into the source buffer so that it can
be buffered along with a method body. When we actually hit the code-completion
point the cut-off lexing or parsing.
Fixes rdar://10056932&8319466
llvm-svn: 139086
2011-09-04 03:32:15 +00:00
Fariborz Jahanian
59b75285f6
objc - fixes a regression in declaring c decls nested in
...
objective-c containers due to recent changes to objc decl
contexts. // rdar://10041908
llvm-svn: 138803
2011-08-30 17:10:52 +00:00
Francois Pichet
f2fb411d4a
Add support for Microsoft __ptr32 keyword.
...
Patch by Chris Cudmore!
llvm-svn: 138533
2011-08-25 00:36:46 +00:00
Fariborz Jahanian
8d382dc781
Restore patch I reversed in r138040. Known buildbot
...
failures are resolved.
llvm-svn: 138234
2011-08-22 15:54:49 +00:00
Fariborz Jahanian
9a3b269ea1
Revers r138040. Need to look at a few buildbot failures.
...
llvm-svn: 138049
2011-08-19 18:02:47 +00:00
Fariborz Jahanian
d6d866d6fa
objective-c: Bring objective-c handling of decl context
...
to modernity. Instead of passing down individual
context objects from parser to sema, establish decl
context in parser and have sema access current context
as needed. I still need to take of Doug's comment for
minor cleanups.
llvm-svn: 138040
2011-08-19 16:06:57 +00:00
Francois Pichet
17ed020569
Add support for MSVC __unaligned attribute. Necessary to parse MSVC headers in 64-bit mode (ie: when _M_IA64 or _M_AMD64 is defined)
...
more info: http://msdn.microsoft.com/en-us/library/ms177389.aspx
llvm-svn: 137935
2011-08-18 09:59:55 +00:00
Caitlin Sadowski
4b1e8399c2
Thread Safety: Added basic argument parsing for all new attributes.
...
This patch special cases the parser for thread safety attributes so that all
attribute arguments are put in the argument list (instead of a special
parameter) since arguments may not otherwise resolve correctly without two-token
lookahead.
This patch also adds checks to make sure that attribute arguments are
lockable objects.
llvm-svn: 137130
2011-08-09 17:59:31 +00:00
Douglas Gregor
db0b9f1264
Parsing of C++0x lambda expressions, from John Freeman with help from
...
David Blaikie!
llvm-svn: 136876
2011-08-04 15:30:47 +00:00
Chris Lattner
0e62c1cc0b
remove unneeded llvm:: namespace qualifiers on some core types now that LLVM.h imports
...
them into the clang namespace.
llvm-svn: 135852
2011-07-23 10:55:15 +00:00
Douglas Gregor
ad69e65a39
Add 'mutable' to the function declarator chunk, to be used when
...
parsing lambda expressions, from John Freeman!
llvm-svn: 135090
2011-07-13 21:47:47 +00:00
John McCall
cb432faf6d
Properly protect colons when parsing a nested-name-specifier as part
...
of an enum specifier in dialects which permit fixed underlying types.
Fixes the rejects-valid part of PR10264.
llvm-svn: 134468
2011-07-06 05:58:41 +00:00
Douglas Gregor
9e66af44ad
Clean up and refactor ParseFunctionDeclarator to reduce code
...
repetition and better reflect the actual grammar, from John Freeman!
llvm-svn: 134417
2011-07-05 16:44:18 +00:00
Richard Smith
cd1c055528
Fix AST representations of alias-declarations which define tag types. Inside classes, the tag types need to have an associated access specifier, and inside function definitions, they need to be included in the declarations of the DeclStmt. These issues manifested as assertions during template instantiation, and also in a WIP constexpr patch.
...
llvm-svn: 134250
2011-07-01 19:46:12 +00:00
Argyrios Kyrtzidis
c0c5dd2651
Introduce DelayedCleanupPool useful for simplifying clean-up of certain resources that, while their
...
lifetime is well-known and restricted, cleaning them up manually is easy to miss and cause a leak.
Use it to plug the leaking of TemplateIdAnnotation objects. rdar://9634138.
llvm-svn: 133610
2011-06-22 06:09:49 +00:00
Francois Pichet
e878cb6bd1
Handle decltype keyword in Parser::isDeclarationSpecifier.
...
Fixes PR10154. Found by parsing MFC 2010 code with clang.
llvm-svn: 133380
2011-06-19 08:02:06 +00:00
John McCall
31168b077c
Automatic Reference Counting.
...
Language-design credit goes to a lot of people, but I particularly want
to single out Blaine Garst and Patrick Beard for their contributions.
Compiler implementation credit goes to Argyrios, Doug, Fariborz, and myself,
in no particular order.
llvm-svn: 133103
2011-06-15 23:02:42 +00:00
Sebastian Redl
3da3489e49
Parse C++0x generalized initializers.
...
llvm-svn: 132662
2011-06-05 12:23:16 +00:00
Alexis Hunt
4a2570792c
Implement __underlying_type for libc++.
...
llvm-svn: 131633
2011-05-19 05:37:45 +00:00
Alexis Hunt
5a7fa250ab
Properly parse the 'default' and 'delete' keywords.
...
They are actually grammatically considered definitions and parsed
accordingly.
This fixes the outstanding bugs regarding defaulting functions after
their declarations.
We now really nicely diagnose the following construct (try it!)
int foo() = delete, bar;
Still todo: Defaulted functions other than default constructors
Test cases (including for the above construct)
llvm-svn: 131228
2011-05-12 06:15:49 +00:00
Francois Pichet
dcf88932a2
Don't fail at parsing __declspec(property(get=get_func_name)). Just skip everything inside property() for now while we wait for the BoostPro people to provide a complete patch.
...
llvm-svn: 131053
2011-05-07 19:04:49 +00:00
Alexis Hunt
83dc3e89c3
Per Richard's suggestion, rename DefLoc to DefaultLoc where it appears.
...
llvm-svn: 131018
2011-05-06 21:24:28 +00:00
Alexis Hunt
5dafebc89f
Do defaulted constructors properly.
...
Explictly defaultedness is correctly reflected on the AST, but there are
no changes to how that affects the definition of functions or much else
really.
llvm-svn: 130974
2011-05-06 01:42:00 +00:00
Alexis Hunt
58dad7d978
Revert r130912 in order to approach defaulted functions from the other
...
direction and not introduce things in the wrong place three different
times.
llvm-svn: 130968
2011-05-06 00:11:07 +00:00
Alexis Hunt
1adeff92bc
Implement some framework for defaulted constructors.
...
There's some unused stuff for now.
llvm-svn: 130912
2011-05-05 03:36:28 +00:00