// RUN: %clang_cc1 -fblocks -fobjc-arc -fobjc-runtime-has-weak %s -verify
// rdar://21612439
@class Forward;
@class Forward2;
// Tests for generic arguments.
void
void
void
// Test that this doesn't completely kill downstream type-checking.
void
void
void
// Typedefs are fine, just silently ignore them.
typedef __strong id StrongID;
void
typedef __strong Forward *StrongForward;
void
// These aren't really ARC-specific, but they're the same basic idea.
void
void
void
// Template-specific tests.
PC1<T> *;
void
void
void
void
void
void
PC1<const T> *; // expected-error {{type argument 'const T' cannot be qualified with 'const'}}
PC1<__strong T> *; // expected-error {{type argument '__strong T' cannot be qualified with '__strong'}}
// Tests for generic parameter bounds.
// These aren't really ARC-specific, but they're the same basic idea.