annotate clang/test/PCH/ms-if-exists.cpp @ 180:680fa57a2f20

fix compile errors.
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 30 May 2020 17:44:06 +0900
parents 1d019706d866
children 2e18cbf3894f
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 // RUN: %clang_cc1 -x c++ -fms-extensions -fsyntax-only -emit-pch -o %t %s
anatofuz
parents:
diff changeset
2 // RUN: %clang_cc1 -x c++ -fms-extensions -fsyntax-only -include-pch %t %s -verify
anatofuz
parents:
diff changeset
3
anatofuz
parents:
diff changeset
4 #ifndef HEADER
anatofuz
parents:
diff changeset
5 #define HEADER
anatofuz
parents:
diff changeset
6 template<typename T>
anatofuz
parents:
diff changeset
7 void f(T t) {
anatofuz
parents:
diff changeset
8 __if_exists(T::foo) {
anatofuz
parents:
diff changeset
9 { }
anatofuz
parents:
diff changeset
10 t.foo();
anatofuz
parents:
diff changeset
11 }
anatofuz
parents:
diff changeset
12
anatofuz
parents:
diff changeset
13 __if_not_exists(T::bar) {
anatofuz
parents:
diff changeset
14 int *i = t;
anatofuz
parents:
diff changeset
15 { }
anatofuz
parents:
diff changeset
16 }
anatofuz
parents:
diff changeset
17 }
anatofuz
parents:
diff changeset
18 #else
anatofuz
parents:
diff changeset
19 struct HasFoo {
anatofuz
parents:
diff changeset
20 void foo();
anatofuz
parents:
diff changeset
21 };
anatofuz
parents:
diff changeset
22 struct HasBar {
anatofuz
parents:
diff changeset
23 void bar(int);
anatofuz
parents:
diff changeset
24 void bar(float);
anatofuz
parents:
diff changeset
25 };
anatofuz
parents:
diff changeset
26
anatofuz
parents:
diff changeset
27 template void f(HasFoo); // expected-note{{in instantiation of function template specialization 'f<HasFoo>' requested here}}
anatofuz
parents:
diff changeset
28 // expected-error@14{{no viable conversion from 'HasFoo' to 'int *'}}
anatofuz
parents:
diff changeset
29 template void f(HasBar);
anatofuz
parents:
diff changeset
30 #endif