[MSVC] Allow declaration of multi-dim 'property' array fields
authorMike Rice <michael.p.rice@intel.com>
Wed, 5 Apr 2023 15:10:57 +0000 (08:10 -0700)
committerMike Rice <michael.p.rice@intel.com>
Wed, 5 Apr 2023 17:29:37 +0000 (10:29 -0700)
commit57caadc57a30f2279099e5b86bb555b4aab621ce
tree04ad3d8c3dc52c0ca68e21a6bb93b2fd13040628
parentceacb3252416b450cb42a951eb531b6d66a89da8
[MSVC] Allow declaration of multi-dim 'property' array fields

MSVC allows declaration of multi-dim arrays like this:

__declspec(property(get=GetX, put=PutX)) int x[][][];

This syntax can appear in generated typelib headers.

Currently clang errors on declarators like this since it forms an array
type of incomplete array. Rather than try to handle such a type, ignore
adjacent empty chunks so this is treated as if there was only one empty
array chunk (i.e. int x[]).

The functionality to handle multi-dim subscripts of property fields
already works, but only if declared as a single-dim array.
clang/docs/ReleaseNotes.rst
clang/include/clang/Sema/ParsedAttr.h
clang/lib/Sema/SemaDeclCXX.cpp
clang/lib/Sema/SemaType.cpp
clang/test/CodeGenCXX/ms-property.cpp
clang/test/SemaCXX/ms-property-error.cpp
clang/test/SemaCXX/ms-property.cpp