Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion clang/lib/Basic/DiagnosticIDs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -832,7 +832,11 @@ bool DiagnosticIDs::isUnrecoverable(unsigned DiagID) const {
DiagID == diag::err_unavailable_message)
return false;

// Currently we consider all ARC errors as recoverable.
// Currently we consider all ARC errors except err_arc_may_not_respond as
// recoverable.
if (DiagID == diag::err_arc_may_not_respond)
return true;

if (isARCDiagnostic(DiagID))
return false;

Expand Down
7 changes: 6 additions & 1 deletion clang/test/SemaObjCXX/arc-0x.mm
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
// RUN: %clang_cc1 -std=c++11 -fsyntax-only -fobjc-arc -fobjc-runtime-has-weak -fobjc-weak -verify -fblocks -fobjc-exceptions %s
// RUN: %clang_cc1 -std=c++11 -fobjc-arc -fobjc-runtime-has-weak -fobjc-weak -verify -fblocks -fobjc-exceptions -emit-llvm -o - %s

// "Move" semantics, trivial version.
void move_it(__strong id &&from) {
Expand All @@ -14,6 +14,11 @@ @interface A
// don't warn about this
extern "C" A* MakeA();

void test_nonexistent_method(A *a) {
// This used to crash in codegen.
auto a1 = [a foo]; // expected-error {{no visible @interface for 'A' declares the selector 'foo'}}
}

// Ensure that deduction works with lifetime qualifiers.
void deduction(id obj) {
auto a = [[A alloc] init];
Expand Down
Loading