================
@@ -5347,13 +5347,16 @@ static TypeSourceInfo 
*GetFullTypeForDeclarator(TypeProcessingState &state,
 
         case NestedNameSpecifier::TypeSpec:
         case NestedNameSpecifier::TypeSpecWithTemplate:
-          ClsType = QualType(NNS->getAsType(), 0);
+          const Type *NNSType = NNS->getAsType();
+          ClsType = QualType(NNSType, 0);
           // 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 (isa<TemplateSpecializationType>(NNS->getAsType()))
+          // TemplateSpecializationType or a RecordType, 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 (isa<TemplateSpecializationType>(NNSType) ||
+              (NNSPrefix && isa<RecordType>(NNSType)))
----------------
HighCommander4 wrote:

> We use an ElaboratedType with null prefix to represent a type which was 
> written without qualifiers, so it seems arbitrary to not add the elaboration 
> in this case.

Wrapping RecordTypes into ElaboratedTypes with a null prefix was causing a 
bunch of failures on the first draft of the patch.

For example, on this line:

https://github.com/llvm/llvm-project/blob/8cb44859cc31929521c09fc6a8add66d53db44de/clang/test/CXX/conv/conv.mem/p4.cpp#L22

the change has the effect of changing the way the derived type is printed from 
`test1::Derived` to just `Derived`, I guess because when the diagnostic 
formatter encounters an `ElaboratedType` it says "I know how the type was 
printed in the source, I will print it the same way in the diagnostic".

Should we accept changes like this to diagnostic output?

https://github.com/llvm/llvm-project/pull/118236
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to