hanchenye-llvm-project/clang/test/SemaObjCXX
Akira Hatanaka c482acd2e5 [ObjC] Enter a new evaluation context before calling
BuildBlockForLambdaConversion.

Previously, clang would build an incorrect AST for the following code:

id test() {
  return @{@"a": [](){}, @"b": [](){}};
}

ReturnStmt 0x10d080448
`-ExprWithCleanups 0x10d080428
  |-cleanup Block 0x10d0801f0 // points to the second BlockDecl
    ...
    -BlockDecl 0x10d07f150 // First block
    ...
    -BlockDecl 0x10d0801f0 // Second block
    ...
     `-ExprWithCleanups 0x10d0801d0
       |-cleanup Block 0x10d07f150 // points to the first BlockDecl

To fix the bug, this commit enters a new evaluation context to reset
ExprNeedsCleanups before each block is parsed.

rdar://problem/16879958

Differential Revision: http://reviews.llvm.org/D18815

llvm-svn: 268527
2016-05-04 18:07:20 +00:00
..
Inputs Fix inference of _Nullable for weak Objective-C properties. 2015-10-09 20:36:17 +00:00
NSString-type.mm
abstract-class-type-ivar.mm
arc-0x.mm
arc-bool-conversion.mm
arc-bridged-cast.mm Recognize objc_bridge(id) on bridged casts to CF types. 2015-03-10 18:41:23 +00:00
arc-libstdcxx.mm
arc-memfunc.mm
arc-nsconsumed-errors.mm Improve some infrastructure for extended parameter infos and 2016-03-03 00:10:03 +00:00
arc-objc-lifetime.mm
arc-overloading.mm
arc-ppe.mm Adding a -Wunused-value warning for expressions with side effects used in an unevaluated expression context, such as sizeof(), or decltype(). Also adds a similar warning when the expression passed to typeid() *is* evaluated, since it is equally likely that the user would expect the expression operand to be unevaluated in that case. 2014-12-17 21:57:17 +00:00
arc-system-header.mm Refine r251469 to give better (and more localizable) diagnostics 2015-10-28 05:03:19 +00:00
arc-templates.mm Improve some infrastructure for extended parameter infos and 2016-03-03 00:10:03 +00:00
arc-type-conversion.mm Some minor ARC diagnostic improvements. 2015-10-21 18:06:38 +00:00
arc-type-traits.mm
arc-unavailable-for-weakref.mm
arc-unbridged-cast.mm
argument-dependent-lookup.mm
base-type-as-written.mm [Sema] Remove assert in TreeTransform<Derived>::TransformObjCObjectType. 2016-02-25 07:08:33 +00:00
block-cleanup.mm [ObjC] Enter a new evaluation context before calling 2016-05-04 18:07:20 +00:00
block-for-lambda-conversion.mm ObjCXX: fix a crash during typo correction. 2016-02-02 22:23:03 +00:00
blocks.mm
boxing-illegal-types.mm
capturing-flexible-array-in-block.mm
category-lookup.mm
composite-objc-pointertype.mm
conditional-expr.mm
const-cast.mm
contextual-convert-to-id.mm
conversion-ranking.mm
conversion-to-objc-pointer-2.mm
conversion-to-objc-pointer.mm
crash.mm [Lit Test] Updated 26 Lit tests to be C++11 compatible. 2015-11-11 19:34:47 +00:00
cstyle-block-pointer-cast.mm
cstyle-cast.mm
cxx1y-lambda.mm Perform Objective-C lifetime adjustments before comparing deduced lambda result types. 2015-10-01 20:20:47 +00:00
cxxoperator-selector.mm
debugger-cast-result-to-id.mm
debugger-support.mm
decltype.mm
deduction.mm
delay-parsing-cfunctions.mm
delay-parsing-cplusfuncs.mm
delay-parsing-func-tryblock.mm Add a new frontend warning for referencing members from the handler of a constructor or destructor function-try-block, which is UB in C++. 2015-09-01 14:49:24 +00:00
exceptions-fragile.mm
exceptions.mm [Sema] Be consistent about diagnostic wording: always use "cannot". 2015-08-15 15:23:14 +00:00
expr-objcxx.mm
foreach-block.mm
foreach.mm
format-strings.mm
fragile-abi-object-assign.m
function-pointer-void-star.mm
gc-attributes.mm
goto.mm
instancetype.mm
instantiate-expr.mm
instantiate-message.mm
instantiate-method-return.mm
instantiate-property-access.mm
instantiate-stmt.mm
ivar-construct.mm
ivar-lookup.mm
ivar-reference-type.mm
ivar-struct.mm
linkage-spec.mm
lit.local.cfg
literals.mm
message.mm [Lit Test] Updated 20 Lit tests to be C++11 compatible. 2015-12-10 01:07:17 +00:00
microsoft-abi-byval.mm
missing-lhs-gun-extension.mm
namespace-lookup.mm
null_objc_pointer.mm
nullability-consistency.mm Replace __double_underscored type nullability qualifiers with _Uppercase_underscored 2015-06-24 22:02:08 +00:00
nullability-pragmas.mm Substitute type arguments into uses of Objective-C interface members. 2015-07-07 03:57:53 +00:00
nullptr.mm
objc-boxed-expressions-nsvalue.mm Cleanup ObjCInterfaceDecl lookup for ObjC literals 2015-07-24 05:09:40 +00:00
objc-container-subscripting.mm
objc-decls-inside-namespace.mm
objc-extern-c.mm
objc-pointer-conv.mm
objc2-merge-gc-attribue-decl.mm [Sema] Emit a better diagnostic when variable redeclarations disagree 2015-07-14 20:08:49 +00:00
objcbridge-attribute-arc.mm [Objective-C Sema] Fixes a typo which did not allow 2015-04-10 22:07:47 +00:00
objcbridge-attribute.mm [Objective-C Sema] Fixes a typo which did not allow 2015-04-10 22:07:47 +00:00
objcbridge-related-attribute.mm
objcbridge-static-cast.mm [Objective-C Sema] Fixes a typo which did not allow 2015-04-10 22:07:47 +00:00
old-style-cast.mm
overload-gc.mm
overload.mm
parameterized_classes.mm Handle Objective-C type arguments. 2015-07-07 03:57:35 +00:00
parameterized_classes_arc.mm Forbid qualifiers on ObjC generic parameters and arguments, but 2015-09-23 22:14:21 +00:00
parameterized_classes_subst.mm Implement variance for Objective-C type parameters. 2015-07-07 03:58:54 +00:00
parameters.mm
pointer-to-objc-pointer-conv.mm
propert-dot-error.mm Update error message text. 2015-01-18 19:05:48 +00:00
properties.mm
property-invalid-type.mm Stop back-patching 'readonly' Objective-C properties with 'readwrite' ones. 2015-11-03 01:15:46 +00:00
property-reference.mm
property-synthesis-error.mm
property-type-mismatch.mm Objective-C properties: fix bogus use of "isa<>" on a QualType. 2015-12-08 22:45:17 +00:00
protocol-lookup.mm
pseudo-destructor.mm Allow pseudo-destructor calls on forward-declared Objective-C class pointers. 2015-12-14 19:12:54 +00:00
references.mm
reinterpret-cast-objc-pointertype.mm
related-result-type-inference.mm
reserved-keyword-methods.mm
sel-address.mm Don't crash when passing &@selector to a _Nonnull parameter. Fixes PR24774. 2015-09-15 23:17:17 +00:00
standard-conversion-to-bool.mm
static-cast.mm
synchronized.mm Allow @synchronized to contextually convert a C++ object to an ObjC object pointer. 2014-08-12 16:20:36 +00:00
typeloc-data-alignment.mm [Sema] Fix bug in TypeLocBuilder::pushImpl 2016-02-18 21:05:09 +00:00
typo-correction.mm [ObjCXX] Warn undeclared identifiers. 2016-03-25 18:43:46 +00:00
unknown-anytype.mm
vararg-non-pod.mm [Lit Test] Updated 26 Lit tests to be C++11 compatible. 2015-11-11 19:34:47 +00:00
vla.mm
void_to_obj.mm
warn-missing-super.mm
warn-objc-literal-conversion.mm
warn-strict-selector-match.mm