[cfe-commits] r61286 - in /cfe/trunk: include/clang/AST/Decl.h include/clang/AST/DeclBase.h lib/AST/Decl.cpp lib/AST/DeclSerialization.cpp
Fariborz Jahanian
fjahanian at apple.com
Sat Dec 20 15:06:10 PST 2008
On Dec 20, 2008, at 2:52 PM, Douglas Gregor wrote:
> On Dec 20, 2008, at 12:56 PM, Fariborz Jahanian wrote:
>
>> Author: fjahanian
>> Date: Sat Dec 20 14:56:12 2008
>> New Revision: 61286
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=61286&view=rev
>> Log:
>> introducing ParmVarWithOriginalTypeDecl class to
>> keep track of the original parameter decl. types.
>
> Great!
>
>>
>> +/// ParmVarWithOriginalTypeDecl - Represent a parameter to a
>> function, when
>> +/// the type of the parameter has been promoted. This node
>> represents the
>> +/// parameter to the function with its original type.
>> +///
>> +class ParmVarWithOriginalTypeDecl : public ParmVarDecl {
>> +private:
>> + QualType OriginalType;
>> +
>> + ParmVarWithOriginalTypeDecl(DeclContext *DC, SourceLocation L,
>> + IdentifierInfo *Id, QualType T,
>> + QualType OT, StorageClass S,
>> + Expr *DefArg, ScopedDecl *PrevDecl)
>> + : ParmVarDecl(DC, L, Id, T, S, DefArg, PrevDecl),
>> OriginalType(OT) {}
>> +public:
>> + static ParmVarWithOriginalTypeDecl *Create(ASTContext &C,
>> DeclContext *DC,
>> + SourceLocation L,IdentifierInfo *Id,
>> + QualType T, QualType OT,
>> + StorageClass S, Expr *DefArg,
>> + ScopedDecl *PrevDecl);
>> + QualType getQualType() const { return OriginalType; }
>
> I think getQualType should be removed. Instead, we add a member
> function getOriginalType() to ParmVarDecl that looks like this:
>
> QualType getOriginalType() const {
> if (const ParmVarWithOriginalTypeDecl *PVD =
> dyn_cast<ParmVarWithOriginalTypeDecl>(this))
> return PVD->OriginalType;
> return getType();
> }
Good point. I was doing this on the caller site. But will move it here.
>
>
> That way, ParmVarWithOriginalTypeDecl could be hidden almost
> completely from clients, who will won't need to ever name this type
> except when the parameter is originally created.
>
> Please make sure to update classof() in ParmVarDecl to account for
> this new subclass.
Yes. I did the change locally.
- Thanks, Fariborz
>
>
> - Doug
More information about the cfe-commits
mailing list