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
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits