annotate clang/test/SemaCXX/ms-iunknown.cpp @ 266:00f31e85ec16 default tip

Added tag current for changeset 31d058e83c98
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Sat, 14 Oct 2023 10:13:55 +0900
parents 1d019706d866
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
150
anatofuz
parents:
diff changeset
1 // RUN: %clang_cc1 -fsyntax-only -verify -fms-extensions %s
anatofuz
parents:
diff changeset
2
anatofuz
parents:
diff changeset
3 extern "C++" struct __declspec(uuid("00000000-0000-0000-C000-000000000046")) IUnknown {
anatofuz
parents:
diff changeset
4 void foo();
anatofuz
parents:
diff changeset
5 // Definitions aren't allowed, unless they are a template.
anatofuz
parents:
diff changeset
6 template<typename T>
anatofuz
parents:
diff changeset
7 void bar(T t){}
anatofuz
parents:
diff changeset
8 };
anatofuz
parents:
diff changeset
9
anatofuz
parents:
diff changeset
10 struct IPropertyPageBase : public IUnknown {};
anatofuz
parents:
diff changeset
11 struct IPropertyPage : public IPropertyPageBase {};
anatofuz
parents:
diff changeset
12 __interface ISfFileIOPropertyPage : public IPropertyPage {};
anatofuz
parents:
diff changeset
13
anatofuz
parents:
diff changeset
14
anatofuz
parents:
diff changeset
15 namespace NS {
anatofuz
parents:
diff changeset
16 struct __declspec(uuid("00000000-0000-0000-C000-000000000046")) IUnknown {};
anatofuz
parents:
diff changeset
17 // expected-error@+1 {{interface type cannot inherit from}}
anatofuz
parents:
diff changeset
18 __interface IPropertyPageBase : public IUnknown {};
anatofuz
parents:
diff changeset
19 }
anatofuz
parents:
diff changeset
20
anatofuz
parents:
diff changeset
21 namespace NS2 {
anatofuz
parents:
diff changeset
22 extern "C++" struct __declspec(uuid("00000000-0000-0000-C000-000000000046")) IUnknown {};
anatofuz
parents:
diff changeset
23 // expected-error@+1 {{interface type cannot inherit from}}
anatofuz
parents:
diff changeset
24 __interface IPropertyPageBase : public IUnknown{};
anatofuz
parents:
diff changeset
25 }
anatofuz
parents:
diff changeset
26
anatofuz
parents:
diff changeset
27 // expected-error@+1 {{interface type cannot inherit from}}
anatofuz
parents:
diff changeset
28 __interface IPropertyPageBase2 : public NS::IUnknown {};
anatofuz
parents:
diff changeset
29
anatofuz
parents:
diff changeset
30 __interface temp_iface {};
anatofuz
parents:
diff changeset
31 struct bad_base : temp_iface {};
anatofuz
parents:
diff changeset
32 // expected-error@+1 {{interface type cannot inherit from}}
anatofuz
parents:
diff changeset
33 __interface bad_inherit : public bad_base{};
anatofuz
parents:
diff changeset
34
anatofuz
parents:
diff changeset
35 struct mult_inher_base : temp_iface, IUnknown {};
anatofuz
parents:
diff changeset
36 // expected-error@+1 {{interface type cannot inherit from}}
anatofuz
parents:
diff changeset
37 __interface bad_inherit2 : public mult_inher_base{};
anatofuz
parents:
diff changeset
38
anatofuz
parents:
diff changeset
39 struct PageBase : public IUnknown {};
anatofuz
parents:
diff changeset
40 struct Page3 : public PageBase {};
anatofuz
parents:
diff changeset
41 struct Page4 : public PageBase {};
anatofuz
parents:
diff changeset
42 __interface PropertyPage : public Page4 {};
anatofuz
parents:
diff changeset
43
anatofuz
parents:
diff changeset
44 struct Page5 : public Page3, Page4{};
anatofuz
parents:
diff changeset
45 // expected-error@+1 {{interface type cannot inherit from}}
anatofuz
parents:
diff changeset
46 __interface PropertyPage2 : public Page5 {};
anatofuz
parents:
diff changeset
47
anatofuz
parents:
diff changeset
48 __interface IF1 {};
anatofuz
parents:
diff changeset
49 __interface PP : IUnknown, IF1{};
anatofuz
parents:
diff changeset
50 __interface PP2 : PP, Page3, Page4{};