<html>
    <head>
      <base href="https://llvm.org/bugs/" />
    </head>
    <body><table border="1" cellspacing="0" cellpadding="8">
        <tr>
          <th>Bug ID</th>
          <td><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW --- - MSVC __declspec(property) - Indexed accessor property not supported correctly (clang 4.2.1)"
   href="https://llvm.org/bugs/show_bug.cgi?id=25636">25636</a>
          </td>
        </tr>

        <tr>
          <th>Summary</th>
          <td>MSVC __declspec(property) - Indexed accessor property not supported correctly (clang 4.2.1)
          </td>
        </tr>

        <tr>
          <th>Product</th>
          <td>clang
          </td>
        </tr>

        <tr>
          <th>Version</th>
          <td>unspecified
          </td>
        </tr>

        <tr>
          <th>Hardware</th>
          <td>PC
          </td>
        </tr>

        <tr>
          <th>OS</th>
          <td>Windows NT
          </td>
        </tr>

        <tr>
          <th>Status</th>
          <td>NEW
          </td>
        </tr>

        <tr>
          <th>Severity</th>
          <td>normal
          </td>
        </tr>

        <tr>
          <th>Priority</th>
          <td>P
          </td>
        </tr>

        <tr>
          <th>Component</th>
          <td>C++
          </td>
        </tr>

        <tr>
          <th>Assignee</th>
          <td>unassignedclangbugs@nondot.org
          </td>
        </tr>

        <tr>
          <th>Reporter</th>
          <td>dsim@smallscript.com
          </td>
        </tr>

        <tr>
          <th>CC</th>
          <td>dgregor@apple.com, llvm-bugs@lists.llvm.org
          </td>
        </tr>

        <tr>
          <th>Classification</th>
          <td>Unclassified
          </td>
        </tr></table>
      <p>
        <div>
        <pre>Indexed accessor property not supported correctly
in clang "4.2.1 Compatible Clang 3.8.0 (trunk)"
-------------------------------------------------
//  See: <a href="https://msdn.microsoft.com/en-us/library/yhfk0thd.aspx">https://msdn.microsoft.com/en-us/library/yhfk0thd.aspx</a>
//  __declspec(property(get=GetX, put=PutX)) int x[];
//  The above statement indicates that x[] can be used with one or more 
//  array indices. In this case, i=p->x[a][b] will be turned into 
//  i=p->GetX(a, b), and p->x[a][b] = i will be turned into p->PutX(a, b, i);

Output from MSVC is as follows:
1>------ Rebuild All started: Project: LlvmMsVcProperties, Configuration: Debug
Win32 ------
1>  LlvmMsVcProperties.cpp
1>  LlvmMsVcProperties.vcxproj -> LlvmMsVcProperties.exe
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
< PropertyTest::PropertyTest(10)
<span class="quote">>x=10
>this->Y[1]             : 1
>this->Y[2][3]          : 6</span >
< set_a_y   as Y[4]=5   : 20
<span class="quote">>this->Y[4]=5           : 20</span >
< set_a_b_y as Y[6][7]=8: 336
<span class="quote">>this->Y[6][7]=8        : 336</span >
=================================================
=================================================
clang/clang-cl version: ...
#define __VERSION__ "4.2.1 Compatible Clang 3.8.0 (trunk)"
  -fms-compatibility

REPORTS:
lvmMsVcProperties.cpp(32,56): error : no matching member function for call to
'get_index_y'
        printf(">this->Y[1]             : %d\n", this->Y[1]);
                                                 ~~~~~~^
LlvmMsVcProperties.cpp(13,9) :  note: candidate function not viable: requires
single argument 'a', but no arguments were provided
    int get_index_y(int a) { return a; }
        ^
LlvmMsVcProperties.cpp(14,9) :  note: candidate function not viable: requires 2
arguments, but 0 were provided
    int get_index_y(int a, int b) { return a*b; }
        ^
lvmMsVcProperties.cpp(33,56): error : no matching member function for call to
'get_index_y'
        printf(">this->Y[2][3]          : %d\n", this->Y[2][3]);
                                                 ~~~~~~^
LlvmMsVcProperties.cpp(13,9) :  note: candidate function not viable: requires
single argument 'a', but no arguments were provided
    int get_index_y(int a) { return a; }
        ^
LlvmMsVcProperties.cpp(14,9) :  note: candidate function not viable: requires 2
arguments, but 0 were provided
    int get_index_y(int a, int b) { return a*b; }
        ^
lvmMsVcProperties.cpp(34,57): error : no matching member function for call to
'get_index_y'
        printf(">this->Y[4]=5           : %d\n", (this->Y[4]=5));
                                                  ~~~~~~^
LlvmMsVcProperties.cpp(13,9) :  note: candidate function not viable: requires
single argument 'a', but no arguments were provided
    int get_index_y(int a) { return a; }
        ^
LlvmMsVcProperties.cpp(14,9) :  note: candidate function not viable: requires 2
arguments, but 0 were provided
    int get_index_y(int a, int b) { return a*b; }
        ^
lvmMsVcProperties.cpp(35,57): error : no matching member function for call to
'get_index_y'
        printf(">this->Y[6][7]=8        : %d\n", (this->Y[6][7]=8));
                                                  ~~~~~~^
LlvmMsVcProperties.cpp(13,9) :  note: candidate function not viable: requires
single argument 'a', but no arguments were provided
    int get_index_y(int a) { return a; }
        ^
LlvmMsVcProperties.cpp(14,9) :  note: candidate function not viable: requires 2
arguments, but 0 were provided
    int get_index_y(int a, int b) { return a*b; }
        ^
4 errors generated.</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>