1 // RUN: %clang_cc1 -verify -fms-compatibility %s -fsyntax-only -o -
5 __declspec(property(get
=GetX
,put
=PutX
)) int x
[];
6 int GetX(int i
, int j
) { return i
+j
; } // expected-note {{'GetX' declared here}}
7 void PutX(int i
, int j
, int k
) { j
= i
= k
; } // expected-note {{'PutX' declared here}}
14 __declspec(property(get
=GetX
,put
=PutX
)) T x
[];
15 T
GetX(T i
, T j
) { return i
+j
; } // expected-note 3 {{'GetX' declared here}}
16 T
PutX(T i
, T j
, T k
) { return j
= i
= k
; } // expected-note 2 {{'PutX' declared here}}
18 x
[1] = 0; // expected-error {{too few arguments to function call, expected 3, have 2}}
21 x
[1][2] = x
[3][4][5]; // expected-error {{too many arguments to function call, expected 2, have 3}}
22 ptr
= x
[1][2] = x
[3][4]; // expected-error {{incompatible integer to pointer conversion assigning to 'char *' from 'int'}}
27 int main(int argc
, char **argv
) {
30 St
<int> a
; // expected-note {{in instantiation of member function 'St<int>::~St' requested here}}
31 int j
= (p1
->x
)[223][11][2]; // expected-error {{too many arguments to function call, expected 2, have 3}}
32 (p1
->x
[23]) = argc
; // expected-error {{too few arguments to function call, expected 3, have 2}}
33 float j1
= (p2
->x
); // expected-error {{too few arguments to function call, expected 2, have 0}}
34 ((p2
->x
)[23])[1][2] = *argv
; // expected-error {{too many arguments to function call, expected 3, have 4}}
35 argv
= p2
->x
[11][22] = argc
; // expected-error {{assigning to 'char **' from incompatible type 'float'}}
36 return ++(((p2
->x
)[23])); // expected-error {{too few arguments to function call, expected 2, have 1}}