diff options
Diffstat (limited to 'lib/Frontend/MultiplexConsumer.cpp')
| -rw-r--r-- | lib/Frontend/MultiplexConsumer.cpp | 90 | 
1 files changed, 59 insertions, 31 deletions
diff --git a/lib/Frontend/MultiplexConsumer.cpp b/lib/Frontend/MultiplexConsumer.cpp index 9cf68a5e9b25..0e933a3f165f 100644 --- a/lib/Frontend/MultiplexConsumer.cpp +++ b/lib/Frontend/MultiplexConsumer.cpp @@ -30,14 +30,14 @@ public:    // Does NOT take ownership of the elements in L.    MultiplexASTDeserializationListener(        const std::vector<ASTDeserializationListener*>& L); -  virtual void ReaderInitialized(ASTReader *Reader); -  virtual void IdentifierRead(serialization::IdentID ID, -                              IdentifierInfo *II); -  virtual void TypeRead(serialization::TypeIdx Idx, QualType T); -  virtual void DeclRead(serialization::DeclID ID, const Decl *D); -  virtual void SelectorRead(serialization::SelectorID iD, Selector Sel); -  virtual void MacroDefinitionRead(serialization::PreprocessedEntityID,  -                                   MacroDefinition *MD); +  void ReaderInitialized(ASTReader *Reader) override; +  void IdentifierRead(serialization::IdentID ID, +                      IdentifierInfo *II) override; +  void TypeRead(serialization::TypeIdx Idx, QualType T) override; +  void DeclRead(serialization::DeclID ID, const Decl *D) override; +  void SelectorRead(serialization::SelectorID iD, Selector Sel) override; +  void MacroDefinitionRead(serialization::PreprocessedEntityID, +                           MacroDefinition *MD) override;  private:    std::vector<ASTDeserializationListener*> Listeners;  }; @@ -89,25 +89,24 @@ class MultiplexASTMutationListener : public ASTMutationListener {  public:    // Does NOT take ownership of the elements in L.    MultiplexASTMutationListener(ArrayRef<ASTMutationListener*> L); -  virtual void CompletedTagDefinition(const TagDecl *D); -  virtual void AddedVisibleDecl(const DeclContext *DC, const Decl *D); -  virtual void AddedCXXImplicitMember(const CXXRecordDecl *RD, const Decl *D); -  virtual void AddedCXXTemplateSpecialization(const ClassTemplateDecl *TD, -                                    const ClassTemplateSpecializationDecl *D); -  virtual void -  AddedCXXTemplateSpecialization(const VarTemplateDecl *TD, -                                 const VarTemplateSpecializationDecl *D); -  virtual void AddedCXXTemplateSpecialization(const FunctionTemplateDecl *TD, -                                              const FunctionDecl *D); -  virtual void DeducedReturnType(const FunctionDecl *FD, QualType ReturnType); -  virtual void CompletedImplicitDefinition(const FunctionDecl *D); -  virtual void StaticDataMemberInstantiated(const VarDecl *D); -  virtual void AddedObjCCategoryToInterface(const ObjCCategoryDecl *CatD, -                                            const ObjCInterfaceDecl *IFD); -  virtual void AddedObjCPropertyInClassExtension(const ObjCPropertyDecl *Prop, -                                            const ObjCPropertyDecl *OrigProp, -                                            const ObjCCategoryDecl *ClassExt); -  void DeclarationMarkedUsed(const Decl *D) LLVM_OVERRIDE; +  void CompletedTagDefinition(const TagDecl *D) override; +  void AddedVisibleDecl(const DeclContext *DC, const Decl *D) override; +  void AddedCXXImplicitMember(const CXXRecordDecl *RD, const Decl *D) override; +  void AddedCXXTemplateSpecialization(const ClassTemplateDecl *TD, +                            const ClassTemplateSpecializationDecl *D) override; +  void AddedCXXTemplateSpecialization(const VarTemplateDecl *TD, +                               const VarTemplateSpecializationDecl *D) override; +  void AddedCXXTemplateSpecialization(const FunctionTemplateDecl *TD, +                                      const FunctionDecl *D) override; +  void DeducedReturnType(const FunctionDecl *FD, QualType ReturnType) override; +  void CompletedImplicitDefinition(const FunctionDecl *D) override; +  void StaticDataMemberInstantiated(const VarDecl *D) override; +  void AddedObjCCategoryToInterface(const ObjCCategoryDecl *CatD, +                                    const ObjCInterfaceDecl *IFD) override; +  void AddedObjCPropertyInClassExtension(const ObjCPropertyDecl *Prop, +                                    const ObjCPropertyDecl *OrigProp, +                                    const ObjCCategoryDecl *ClassExt) override; +  void DeclarationMarkedUsed(const Decl *D) override;  private:    std::vector<ASTMutationListener*> Listeners; @@ -184,10 +183,9 @@ void MultiplexASTMutationListener::DeclarationMarkedUsed(const Decl *D) {  }  // end namespace clang - -MultiplexConsumer::MultiplexConsumer(ArrayRef<ASTConsumer*> C) -    : Consumers(C.begin(), C.end()), -      MutationListener(0), DeserializationListener(0) { +MultiplexConsumer::MultiplexConsumer(ArrayRef<ASTConsumer *> C) +    : Consumers(C.begin(), C.end()), MutationListener(), +      DeserializationListener() {    // Collect the mutation listeners and deserialization listeners of all    // children, and create a multiplex listener each if so.    std::vector<ASTMutationListener*> mutationListeners; @@ -228,6 +226,11 @@ bool MultiplexConsumer::HandleTopLevelDecl(DeclGroupRef D) {    return Continue;  } +void MultiplexConsumer::HandleInlineMethodDefinition(CXXMethodDecl *D) { +  for (size_t i = 0, e = Consumers.size(); i != e; ++i) +    Consumers[i]->HandleInlineMethodDefinition(D); +} +  void  MultiplexConsumer::HandleCXXStaticMemberVarInstantiation(VarDecl *VD) {    for (size_t i = 0, e = Consumers.size(); i != e; ++i)      Consumers[i]->HandleCXXStaticMemberVarInstantiation(VD); @@ -248,6 +251,11 @@ void MultiplexConsumer::HandleTagDeclDefinition(TagDecl *D) {      Consumers[i]->HandleTagDeclDefinition(D);  } +void MultiplexConsumer::HandleTagDeclRequiredDefinition(const TagDecl *D) { +  for (size_t i = 0, e = Consumers.size(); i != e; ++i) +    Consumers[i]->HandleTagDeclRequiredDefinition(D); +} +  void MultiplexConsumer::HandleCXXImplicitFunctionInstantiation(FunctionDecl *D){    for (size_t i = 0, e = Consumers.size(); i != e; ++i)      Consumers[i]->HandleCXXImplicitFunctionInstantiation(D); @@ -258,6 +266,26 @@ void MultiplexConsumer::HandleTopLevelDeclInObjCContainer(DeclGroupRef D) {      Consumers[i]->HandleTopLevelDeclInObjCContainer(D);  } +void MultiplexConsumer::HandleImplicitImportDecl(ImportDecl *D) { +  for (size_t i = 0, e = Consumers.size(); i != e; ++i) +    Consumers[i]->HandleImplicitImportDecl(D); +} + +void MultiplexConsumer::HandleLinkerOptionPragma(llvm::StringRef Opts) { +  for (size_t i = 0, e = Consumers.size(); i != e; ++i) +    Consumers[i]->HandleLinkerOptionPragma(Opts); +} + +void MultiplexConsumer::HandleDetectMismatch(llvm::StringRef Name, llvm::StringRef Value) { +  for (size_t i = 0, e = Consumers.size(); i != e; ++i) +    Consumers[i]->HandleDetectMismatch(Name, Value); +} + +void MultiplexConsumer::HandleDependentLibrary(llvm::StringRef Lib) { +  for (size_t i = 0, e = Consumers.size(); i != e; ++i) +    Consumers[i]->HandleDependentLibrary(Lib); +} +  void MultiplexConsumer::CompleteTentativeDefinition(VarDecl *D) {    for (size_t i = 0, e = Consumers.size(); i != e; ++i)      Consumers[i]->CompleteTentativeDefinition(D);  | 
