[cfe-dev] Syntactic order of CXXBaseOrMemberInitializers

Abramo Bagnara abramo.bagnara at gmail.com
Thu May 20 10:26:56 PDT 2010


Il 20/05/2010 18:52, Douglas Gregor ha scritto:
> 
> 
> Sent from my iPhone
> 
> On May 19, 2010, at 4:40 AM, Abramo Bagnara <abramo.bagnara at gmail.com> wrote:
> 
>>
>> As currently the initializers are reordered to match member order in
>> record declaration there is no easy way for an AST consumer to know in
>> which order the initializers were written in the source file.
> 
> Originally, I had imagined that we would compare based on source locations, and perhaps add an "implicit" bit for implicitly-generated initializers. Does that not work?

We thought the same, but the fact that a sorting algorithm lead to a
worst case of O(n*log(n)) or O(n*2) calls to non trivial source location
comparison has worried us.

>> I'd suggest to insert an index field to each CXXBaseOrMemberInitializer
>> that is 1 for the first initializer, 2 for the second and so no. The
>> index is 0 for the initializers that are not present in source file.
>>
>> Can we proceed in this direction?
> 
> I would like to avoid adding an index field, if the source locations suffice. 

To tell you the truth we had considered that the smaller complexity
would pay the space cost.

However it's not a problem, should you accept a patch for adding

CXXConstructorDecl::getBaseOrMemberInitializersAsWritten()?



More information about the cfe-dev mailing list