[cfe-dev] Better type-specifier representation
Ted Kremenek
kremenek at apple.com
Fri Sep 12 16:25:18 PDT 2008
On Sep 12, 2008, at 4:17 PM, Argiris Kirtzidis wrote:
> These are good points, I agree. Putting type-spec info in the type
> is the wrong way to go.
>
> Daniel Dunbar wrote:
>> If we want to explicitly represent the type specifier, what is
>> wrong with
>> actually making this a separate node (not a Type and not a Decl).
>> We can
>> probably present the abstraction that the AST has TypeSpecifier nodes
>> without actually creating them (by encoding in DeclGroup or other
>> tricks).
>>
>> This also gives a clear place to attach source range, makes clear
>> what the
>> representation of sizeof(type) is (a SizeofAlignOfTypeExpr which
>> points to
>> a TypeSpecifier which in turn points to the type), and should make
>> ownership
>> clear.
>
> This is a great idea!
>
> How about using something like this:
>
> -In the AST, Decls do not have Types, they have TypeSpecifiers.
> Exprs have Types.
> -TypeSpecifiers can own RecordDecls
> -DeclGroups are used for declaration lists:
> int x,y,z; -> DeclGroup
> but not for parameters. If the ParmVarDecl has a TypeSpecifier, we
> don't have to use a DeclGroup in its place.
>
>
> Let me know what you think.
>
> -Argiris
This sounds like the right approach to me!
The one outstanding grossness that I can think of right now is VLAs.
How should we represent:
int x[foo()][bar()][...], y;
Right now, the type for the VLA owns the expressions foo(), bar(), and
so on. Both DeclGroups and TypeSpecifiers don't solve this problem (I
believe).
More information about the cfe-dev
mailing list