[cfe-dev] [RFC] Preliminary patch to support MSVC __declspec(property)

endlessroad1991 at gmail.com endlessroad1991 at gmail.com
Thu Dec 6 20:20:12 PST 2012


Thanks for the advice.

Dillon has explained property is a widely used feature.

This patch is far from complete, and I've brought it up here to discuss the
best way to implement the property feature. After we get a solution, I will
make sure the patch conform to LLVM & Clang coding standards :-)


On Fri, Dec 7, 2012 at 6:16 AM, Nikola Smiljanic <popizdeh at gmail.com> wrote:

> Clang has a policy of only supporting compatibility features that are
> widely used. Is there a large codebase that depends on this, and has
> this been discussed?
>
> As for the patch itself, the test should be a part of it, I can't
> comment the implementation. Have a look at the existing test, it
> should have something like this at he top
>
> // RUN: %clang_cc1 -fsyntax-only -verify %s -ms-compatibility
> // expected-no-diagnostics
>
>
> On Fri, Dec 7, 2012 at 4:52 AM, endlessroad1991 at gmail.com
> <endlessroad1991 at gmail.com> wrote:
> > Hey guys, I've worked out a preliminary patch to support MSVC
> > __declspec(property), based on 3.2RC2.
> > Patch and a simple test cpp file attached. Please compile the test case
> with
> > -fms-extensions.
> >
> > Current status:
> > - Support getter/setter
> > - Support template (see attached test file)
> > - No support for +=, -=, etc
> > - No support for implicit type conversion for arguments of getter/setter
> > functions
> >
> > Brief introduction on implementation:
> > 1. Let Parser parse property declaration.
> > 2. Add a "PropertyAttr" class to store getter/putter function names.
> > 3. Notice that there can be "[]" after property declaration, and number
> of
> > "[]" indicates number of args for getter/setter function(see attached
> test
> > file). Add a field to QualType to store number of "[]". I know it's
> > horrible, but for a working prototype, that's enough.
> > 4. Add a "MSPropertyExpr". When we encounter property usage in Parser, we
> > don't know whether it's get or set. So we have to add an action AFTER
> Sema,
> > or do it in CodeGen. Either way, while parsing, all we know is arguments
> for
> > getter/setter.
> > 5. In CodeGen, deal with "MSPropertyExpr". If it's "scalar" in CodeGen,
> it's
> > a get, replace it with a CallExpr to getter. If it's "LValue" on the left
> > side of an assignment, replace the whole assignment with a CallExpr to
> > setter.
> >
> > I know the timing is really bad..
> > But, any comments?
> >
> > --
> > Best Regards, Tong Shen (沈彤)
> >
> > _______________________________________________
> > cfe-dev mailing list
> > cfe-dev at cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev
> >
>



-- 
Best Regards, Tong Shen (沈彤)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20121207/872ff15e/attachment.html>


More information about the cfe-dev mailing list