[cfe-commits] r127401 - /cfe/trunk/lib/Sema/SemaType.cpp

Douglas Gregor dgregor at apple.com
Thu Mar 10 07:39:41 PST 2011


On Mar 10, 2011, at 2:18 AM, Abramo Bagnara wrote:

> Author: abramo
> Date: Thu Mar 10 04:18:27 2011
> New Revision: 127401
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=127401&view=rev
> Log:
> Fixed class type generation for MemberPointerType.
> 
> Modified:
>    cfe/trunk/lib/Sema/SemaType.cpp
> 
> Modified: cfe/trunk/lib/Sema/SemaType.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaType.cpp?rev=127401&r1=127400&r2=127401&view=diff
> ==============================================================================
> --- cfe/trunk/lib/Sema/SemaType.cpp (original)
> +++ cfe/trunk/lib/Sema/SemaType.cpp Thu Mar 10 04:18:27 2011
> @@ -1935,11 +1935,12 @@
>         case NestedNameSpecifier::TypeSpec:
>         case NestedNameSpecifier::TypeSpecWithTemplate:
>           ClsType = QualType(NNS->getAsType(), 0);
> -          // Note: if NNS is dependent, then its prefix (if any) is already
> -          // included in ClsType; this does not hold if the NNS is
> -          // nondependent: in this case (if there is indeed a prefix)
> -          // ClsType needs to be wrapped into an elaborated type.
> -          if (NNSPrefix && !NNS->isDependent())
> +          // Note: if the NNS has a prefix and ClsType is a nondependent
> +          // TemplateSpecializationType, then the NNS prefix is NOT included
> +          // in ClsType; hence we wrap ClsType into an ElaboratedType.
> +          // NOTE: in particular, no wrap occurs if ClsType already is an
> +          // Elaborated, DependentName, or DependentTemplateSpecialization.
> +          if (NNSPrefix && isa<TemplateSpecializationType>(NNS->getAsType()))
>             ClsType = Context.getElaboratedType(ETK_None, NNSPrefix, ClsType);
>           break;
>         }

Do you have a test case for this?

	- Doug



More information about the cfe-commits mailing list