| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
| |
C++11 rules.
llvm-svn: 149641
|
|
|
|
|
|
| |
additional entry points are needed to implement C++11 odr-use marking correctly. No functional change in this patch; I'll actually make the change which fixes the odr-use marking in a followup patch.
llvm-svn: 149586
|
|
|
|
| |
llvm-svn: 149517
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
cleans up and improves a few things:
- We get rid of the ugly dance of computing all of the captures in
data structures that clone those of CapturingScopeInfo, centralizing
the logic for accessing/updating these data structures
- We re-use the existing capture logic for 'this', which actually
works now.
Cleaned up some diagnostic wording in minor ways as well.
llvm-svn: 149516
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Actually building the var -> capture mapping properly (there was an off-by-one error)
- Keeping track of the source location of each capture
- Minor QoI improvements, e.g, highlighing the prior capture if
there are multiple captures, pointing at the variable declaration we
found if we reject it.
As part of this, add standard citations for the various semantic
checks we perform, and note where we're not performing those checks as
we should.
llvm-svn: 149462
|
|
|
|
| |
llvm-svn: 149458
|
|
|
|
| |
llvm-svn: 149127
|
|
|
|
|
|
|
| |
canonical type directly and adding a fast path for the common case
that the type is directly a RecordType.
llvm-svn: 149039
|
|
|
|
|
|
| |
lvalue-to-rvalue conversion.
llvm-svn: 149003
|
|
|
|
| |
llvm-svn: 148921
|
|
|
|
| |
llvm-svn: 148920
|
|
|
|
|
|
| |
PR11833.
llvm-svn: 148893
|
|
|
|
|
|
| |
lvalue-to-rvalue conversion.
llvm-svn: 148874
|
|
|
|
|
|
|
| |
allocator to construct an object which declares more alignment than the default
allocator actually provides. Fixes PR9527!
llvm-svn: 148857
|
|
|
|
|
|
|
|
| |
Fix some review comments.
Add a test for deduction when std::initializer_list isn't available yet.
Fix redundant error messages. This fixes and outstanding FIXME too.
llvm-svn: 148735
|
|
|
|
| |
llvm-svn: 148683
|
|
|
|
|
|
| |
This matches cl.exe's behavior and fixes PR11791.
llvm-svn: 148682
|
|
|
|
|
|
| |
appropriate.
llvm-svn: 148673
|
|
|
|
|
|
| |
and less error-prone way of handling the relevant cases. Towards marking of whether a declaration is used more accurately.
llvm-svn: 148522
|
|
|
|
|
|
|
|
|
|
|
|
| |
No new unit tests yet as there is no behavioral change
(except for slightly more specific filtering in
Sema::ActOnStartOfLambdaDefinition). Tests will be added
as the code paths are traced in greater depth to determine
how to improve the results--there are at least one or two
known bugs that require those improvements. This commit
lays the groundwork for those changes.
llvm-svn: 148382
|
|
|
|
|
|
| |
appropriate or when GCC requires it)
llvm-svn: 148292
|
|
|
|
|
|
| |
declaration which is used is marked as used.
llvm-svn: 148253
|
|
|
|
|
|
|
|
| |
expression for an Objective-C object or pointer type, so that we don't
attempt to treat the member name as a template. Fixes
<rdar://problem/10672501>.
llvm-svn: 148028
|
|
|
|
|
|
| |
shared between lambda expressions and block literals.
llvm-svn: 147917
|
|
|
|
|
|
| |
new-expressions.
llvm-svn: 147900
|
|
|
|
|
|
| |
complicated, but we have to be careful about when exactly captures are marked given PotentiallyPotentiallyEvaluated contexts. (Actually, it's not 100% correct yet, but it's close enough for the moment.)
llvm-svn: 147723
|
|
|
|
|
|
| |
This patch (and some of my other commits related to lambdas) is heavily based off of John Freeman's work-in-progress patches.
llvm-svn: 147706
|
|
|
|
|
|
| |
lambda parameters work correctly, recording more information into the AST.
llvm-svn: 147650
|
|
|
|
|
|
| |
pieces to build the lambda class and its call operator. Create an actual scope for the lambda body.
llvm-svn: 147595
|
|
|
|
|
|
| |
BlockLiteralContext. Use it to ensure semantic analysis of types isn't confused by the lack of a type specifier.
llvm-svn: 147522
|
|
|
|
|
|
| |
use it. Unconditionally error on lambda expressions because they don't work in any meaningful way yet.
llvm-svn: 147515
|
|
|
|
|
|
| |
Reviewed by Eli Friedman.
llvm-svn: 146738
|
|
|
|
|
|
|
| |
expression with an unknown result type, assume that the result type is
'id'. Fixes <rdar://problem/10400663>.
llvm-svn: 146622
|
|
|
|
| |
llvm-svn: 146354
|
|
|
|
| |
llvm-svn: 146155
|
|
|
|
|
|
|
| |
a class is marked 'final', from Alberto Ganesh Barbati! Fixes
PR11462.
llvm-svn: 145775
|
|
|
|
|
|
|
|
|
|
| |
for some cast expressions.
Original commit message:
Removed useless ImplicitCast nodes in explicit cstyle and static casts
llvm-svn: 145447
|
|
|
|
| |
llvm-svn: 145244
|
|
|
|
|
|
| |
array of objects with non-trivial destructors. PR11365.
llvm-svn: 145203
|
|
|
|
| |
llvm-svn: 144850
|
|
|
|
| |
llvm-svn: 144796
|
|
|
|
| |
llvm-svn: 144561
|
|
|
|
|
|
|
| |
but it is sometimes useful to track blocks. Do so. Also
optimize the storage of these expressions.
llvm-svn: 144263
|
|
|
|
| |
llvm-svn: 143910
|
|
|
|
|
|
| |
aggregate class type and initializer list arguments.
llvm-svn: 143462
|
|
|
|
|
|
| |
GCC compiler workaround.
llvm-svn: 142931
|
|
|
|
|
|
| |
r142914: "Introduce a placeholder type for "pseudo object""
r142915: "Pull the pseudo-object stuff into its own file."
llvm-svn: 142921
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
expressions: expressions which refer to a logical rather
than a physical l-value, where the logical object is
actually accessed via custom getter/setter code.
A subsequent patch will generalize the AST for these
so that arbitrary "implementing" sub-expressions can
be provided.
Right now the only client is ObjC properties, but
this should be generalizable to similar language
features, e.g. Managed C++'s __property methods.
llvm-svn: 142914
|
|
|
|
|
|
|
|
|
| |
Microsoft __if_exists/__if_not_exists statement. Also note that we
weren't traversing DeclarationNameInfo *at all* within the
RecursiveASTVisitor, which would be rather fatal for variadic
templates.
llvm-svn: 142906
|
|
|
|
|
|
|
|
|
|
| |
statements. As noted in the documentation for the AST node, the
semantics of __if_exists/__if_not_exists are somewhat different from
the way Visual C++ implements them, because our parsed-template
representation can't accommodate VC++ semantics without serious
contortions. Hopefully this implementation is "good enough".
llvm-svn: 142901
|