1acfbe9e1SPatrick Beard// RUN: %clang_cc1 -fsyntax-only -verify -Wno-objc-root-class %s
2c6e68daaSAndy Gibbs// expected-no-diagnostics
333e148f6SFariborz Jahanian
433e148f6SFariborz Jahanian@interface Foo
533e148f6SFariborz Jahanian@end
633e148f6SFariborz Jahanian
733e148f6SFariborz Jahanian@implementation Foo
833e148f6SFariborz Jahanian- (id)test {
933e148f6SFariborz Jahanian        id bar;
1033e148f6SFariborz Jahanian    Class cl;
1133e148f6SFariborz Jahanian    Foo *f;
1233e148f6SFariborz Jahanian
1333e148f6SFariborz Jahanian    (void)((bar!= 0) ? bar : 0);
1433e148f6SFariborz Jahanian    (void)((cl != 0) ? cl : 0);
1533e148f6SFariborz Jahanian    (void)((f != 0) ? 0 : f);
1633e148f6SFariborz Jahanian    return (0 == 1) ? 0 : bar;
1733e148f6SFariborz Jahanian}
1833e148f6SFariborz Jahanian@end
1933e148f6SFariborz Jahanian
20*9a6f4d45SRichard Smith@class A;
21*9a6f4d45SRichard Smith
22*9a6f4d45SRichard Smithvoid multilevel() {
23*9a6f4d45SRichard Smith  A **p;
24*9a6f4d45SRichard Smith  const A **q;
25*9a6f4d45SRichard Smith
26*9a6f4d45SRichard Smith  using T = decltype(true ? q : p);
27*9a6f4d45SRichard Smith  using T = const A * const *;
28*9a6f4d45SRichard Smith}
29*9a6f4d45SRichard Smith
30