xref: /minix3/external/bsd/llvm/dist/clang/test/SemaObjCXX/parameters.mm (revision f4a2713ac843a11c696ec80c0a5e3e5d80b4d338)
1*f4a2713aSLionel Sambuc// RUN: %clang_cc1 -verify %s
2*f4a2713aSLionel Sambuc
3*f4a2713aSLionel Sambuc@interface A
4*f4a2713aSLionel Sambuc@end
5*f4a2713aSLionel Sambuc
6*f4a2713aSLionel Sambuctemplate<typename T>
7*f4a2713aSLionel Sambucstruct X0 {
8*f4a2713aSLionel Sambuc  void f(T); // expected-error{{interface type 'A' cannot be passed by value}}
9*f4a2713aSLionel Sambuc};
10*f4a2713aSLionel Sambuc
11*f4a2713aSLionel SambucX0<A> x0a; // expected-note{{instantiation}}
12*f4a2713aSLionel Sambuc
13*f4a2713aSLionel Sambuc
14*f4a2713aSLionel Sambucstruct test2 { virtual void foo() = 0; }; // expected-note {{unimplemented}}
15*f4a2713aSLionel Sambuc@interface Test2
16*f4a2713aSLionel Sambuc- (void) foo: (test2) foo; // expected-error {{parameter type 'test2' is an abstract class}}
17*f4a2713aSLionel Sambuc@end
18*f4a2713aSLionel Sambuc
19*f4a2713aSLionel Sambuctemplate<typename T> void r1(__restrict T);
20*f4a2713aSLionel Sambucvoid r2(__restrict id x) { r1(x); }
21