rsmith added a comment.

This looks like it's going in the right direction.



> Decl.cpp:2269-2272
> +      // If we have hit a point where the user provided a specialization of
> +      // this template, we're done looking.
> +      if (VarTemplate->isMemberSpecialization())
> +        break;

I think we need a similar check in the static data member case above.

> Decl.cpp:2278
> +            !isTemplateInstantiation(getTemplateSpecializationKind())) &&
> +           "couldn't find pattern for enum instantiation");
> +

enum?

> rsmith wrote in SemaTemplate.cpp:509
> `else if` doesn't make sense here -- we either need to produce a diagnostic 
> on all paths through here, or suppress the notes if we didn't produce a 
> diagnostic.

This function still appears to be able to return true (indicating to the caller 
that a diagnostic was produced) without actually producing a diagnostic.

> ASTWriterDecl.cpp:896-897
>    Record.push_back(D->getInitStyle());
> +  Record.push_back(D->isThisDeclarationADemotedDefinition());
>    if (!isa<ParmVarDecl>(D)) {
>      Record.push_back(D->isExceptionVariable());

Sink this flag into the "not for `ParmVarDecl`" block below.

> ASTWriterDecl.cpp:1965
> +  Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 2)); // TSCSpec
> +  Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 2)); // InitStyle
> +  Abv->Add(BitCodeAbbrevOp(BitCodeAbbrevOp::Fixed, 1)); // 
> IsThisDeclarationADemotedDefinition

Hmm. The width of the `InitStyle` field is definitely wrong right now, but 
should be fixed separately from this change. It looks like we don't hit this 
today because we don't use this abbreviation for a variable with an 
initializer. In addition to fixing the width of this field, we should also 
remove the `getInit() == nullptr` check when selecting the abbreviation in 
`ASTDeclWriter::VisitVarDecl`.

https://reviews.llvm.org/D24508



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to