diff options
Diffstat (limited to 'clang/lib/Serialization/ASTReaderDecl.cpp')
| -rw-r--r-- | clang/lib/Serialization/ASTReaderDecl.cpp | 29 | 
1 files changed, 22 insertions, 7 deletions
| diff --git a/clang/lib/Serialization/ASTReaderDecl.cpp b/clang/lib/Serialization/ASTReaderDecl.cpp index 96a7d5ae0a31c..093b69ab19d03 100644 --- a/clang/lib/Serialization/ASTReaderDecl.cpp +++ b/clang/lib/Serialization/ASTReaderDecl.cpp @@ -375,6 +375,7 @@ namespace clang {      void VisitNonTypeTemplateParmDecl(NonTypeTemplateParmDecl *D);      DeclID VisitTemplateDecl(TemplateDecl *D);      void VisitConceptDecl(ConceptDecl *D); +    void VisitRequiresExprBodyDecl(RequiresExprBodyDecl *D);      RedeclarableResult VisitRedeclarableTemplateDecl(RedeclarableTemplateDecl *D);      void VisitClassTemplateDecl(ClassTemplateDecl *D);      void VisitBuiltinTemplateDecl(BuiltinTemplateDecl *D); @@ -2037,6 +2038,9 @@ void ASTDeclReader::VisitConceptDecl(ConceptDecl *D) {    mergeMergeable(D);  } +void ASTDeclReader::VisitRequiresExprBodyDecl(RequiresExprBodyDecl *D) { +} +  ASTDeclReader::RedeclarableResult  ASTDeclReader::VisitRedeclarableTemplateDecl(RedeclarableTemplateDecl *D) {    RedeclarableResult Redecl = VisitRedeclarable(D); @@ -2313,12 +2317,12 @@ void ASTDeclReader::VisitTemplateTypeParmDecl(TemplateTypeParmDecl *D) {    D->setDeclaredWithTypename(Record.readInt()); -  if (Record.readInt()) { +  if (Record.readBool()) {      NestedNameSpecifierLoc NNS = Record.readNestedNameSpecifierLoc();      DeclarationNameInfo DN = Record.readDeclarationNameInfo(); -    ConceptDecl *NamedConcept = cast<ConceptDecl>(Record.readDecl()); +    ConceptDecl *NamedConcept = Record.readDeclAs<ConceptDecl>();      const ASTTemplateArgumentListInfo *ArgsAsWritten = nullptr; -    if (Record.readInt()) +    if (Record.readBool())          ArgsAsWritten = Record.readASTTemplateArgumentListInfo();      Expr *ImmediatelyDeclaredConstraint = Record.readExpr();      D->setTypeConstraint(NNS, DN, /*FoundDecl=*/nullptr, NamedConcept, @@ -2336,6 +2340,8 @@ void ASTDeclReader::VisitNonTypeTemplateParmDecl(NonTypeTemplateParmDecl *D) {    // TemplateParmPosition.    D->setDepth(Record.readInt());    D->setPosition(Record.readInt()); +  if (D->hasPlaceholderTypeConstraint()) +    D->setPlaceholderTypeConstraint(Record.readExpr());    if (D->isExpandedParameterPack()) {      auto TypesAndInfos =          D->getTrailingObjects<std::pair<QualType, TypeSourceInfo *>>(); @@ -3819,13 +3825,19 @@ Decl *ASTReader::ReadDeclRecord(DeclID ID) {                                                   HasTypeConstraint);      break;    } -  case DECL_NON_TYPE_TEMPLATE_PARM: -    D = NonTypeTemplateParmDecl::CreateDeserialized(Context, ID); +  case DECL_NON_TYPE_TEMPLATE_PARM: { +    bool HasTypeConstraint = Record.readInt(); +    D = NonTypeTemplateParmDecl::CreateDeserialized(Context, ID, +                                                    HasTypeConstraint);      break; -  case DECL_EXPANDED_NON_TYPE_TEMPLATE_PARM_PACK: +  } +  case DECL_EXPANDED_NON_TYPE_TEMPLATE_PARM_PACK: { +    bool HasTypeConstraint = Record.readInt();      D = NonTypeTemplateParmDecl::CreateDeserialized(Context, ID, -                                                    Record.readInt()); +                                                    Record.readInt(), +                                                    HasTypeConstraint);      break; +  }    case DECL_TEMPLATE_TEMPLATE_PARM:      D = TemplateTemplateParmDecl::CreateDeserialized(Context, ID);      break; @@ -3839,6 +3851,9 @@ Decl *ASTReader::ReadDeclRecord(DeclID ID) {    case DECL_CONCEPT:      D = ConceptDecl::CreateDeserialized(Context, ID);      break; +  case DECL_REQUIRES_EXPR_BODY: +    D = RequiresExprBodyDecl::CreateDeserialized(Context, ID); +    break;    case DECL_STATIC_ASSERT:      D = StaticAssertDecl::CreateDeserialized(Context, ID);      break; | 
