diff options
Diffstat (limited to 'contrib/llvm/tools/clang/include/clang/AST/DeclCXX.h')
-rw-r--r-- | contrib/llvm/tools/clang/include/clang/AST/DeclCXX.h | 42 |
1 files changed, 21 insertions, 21 deletions
diff --git a/contrib/llvm/tools/clang/include/clang/AST/DeclCXX.h b/contrib/llvm/tools/clang/include/clang/AST/DeclCXX.h index 027b41e..f7cb462 100644 --- a/contrib/llvm/tools/clang/include/clang/AST/DeclCXX.h +++ b/contrib/llvm/tools/clang/include/clang/AST/DeclCXX.h @@ -651,8 +651,8 @@ public: CXXRecordDecl *getCanonicalDecl() override { return cast<CXXRecordDecl>(RecordDecl::getCanonicalDecl()); } - virtual const CXXRecordDecl *getCanonicalDecl() const { - return cast<CXXRecordDecl>(RecordDecl::getCanonicalDecl()); + const CXXRecordDecl *getCanonicalDecl() const { + return const_cast<CXXRecordDecl*>(this)->getCanonicalDecl(); } CXXRecordDecl *getPreviousDecl() { @@ -1093,8 +1093,7 @@ public: /// \brief Get all conversion functions visible in current class, /// including conversion function templates. - std::pair<conversion_iterator, conversion_iterator> - getVisibleConversionFunctions(); + llvm::iterator_range<conversion_iterator> getVisibleConversionFunctions(); /// Determine whether this class is an aggregate (C++ [dcl.init.aggr]), /// which is a class with no user-declared constructors, no private @@ -1782,7 +1781,7 @@ public: CXXMethodDecl *getCanonicalDecl() override { return cast<CXXMethodDecl>(FunctionDecl::getCanonicalDecl()); } - const CXXMethodDecl *getCanonicalDecl() const override { + const CXXMethodDecl *getCanonicalDecl() const { return const_cast<CXXMethodDecl*>(this)->getCanonicalDecl(); } @@ -2085,7 +2084,7 @@ public: /// This can only be called once for each initializer; it cannot be called /// on an initializer having a positive number of (implicit) array indices. /// - /// This assumes that the initialzier was written in the source code, and + /// This assumes that the initializer was written in the source code, and /// ensures that isWritten() returns true. void setSourceOrder(int pos) { assert(!IsWritten && @@ -2150,7 +2149,7 @@ class CXXConstructorDecl : public CXXMethodDecl { /// \name Support for base and member initializers. /// \{ /// \brief The arguments used to initialize the base or member. - CXXCtorInitializer **CtorInitializers; + LazyCXXCtorInitializersPtr CtorInitializers; unsigned NumCtorInitializers; /// \} @@ -2189,7 +2188,7 @@ public: typedef CXXCtorInitializer **init_iterator; /// \brief Iterates through the member/base initializer list. - typedef CXXCtorInitializer * const * init_const_iterator; + typedef CXXCtorInitializer *const *init_const_iterator; typedef llvm::iterator_range<init_iterator> init_range; typedef llvm::iterator_range<init_const_iterator> init_const_range; @@ -2200,17 +2199,20 @@ public: } /// \brief Retrieve an iterator to the first initializer. - init_iterator init_begin() { return CtorInitializers; } + init_iterator init_begin() { + const auto *ConstThis = this; + return const_cast<init_iterator>(ConstThis->init_begin()); + } /// \brief Retrieve an iterator to the first initializer. - init_const_iterator init_begin() const { return CtorInitializers; } + init_const_iterator init_begin() const; /// \brief Retrieve an iterator past the last initializer. init_iterator init_end() { - return CtorInitializers + NumCtorInitializers; + return init_begin() + NumCtorInitializers; } /// \brief Retrieve an iterator past the last initializer. init_const_iterator init_end() const { - return CtorInitializers + NumCtorInitializers; + return init_begin() + NumCtorInitializers; } typedef std::reverse_iterator<init_iterator> init_reverse_iterator; @@ -2241,14 +2243,14 @@ public: NumCtorInitializers = numCtorInitializers; } - void setCtorInitializers(CXXCtorInitializer ** initializers) { - CtorInitializers = initializers; + void setCtorInitializers(CXXCtorInitializer **Initializers) { + CtorInitializers = Initializers; } /// \brief Determine whether this constructor is a delegating constructor. bool isDelegatingConstructor() const { return (getNumCtorInitializers() == 1) && - CtorInitializers[0]->isDelegatingInitializer(); + init_begin()[0]->isDelegatingInitializer(); } /// \brief When this constructor delegates to another, retrieve the target. @@ -2324,12 +2326,12 @@ public: /// \brief Set the constructor that this inheriting constructor is based on. void setInheritedConstructor(const CXXConstructorDecl *BaseCtor); - const CXXConstructorDecl *getCanonicalDecl() const override { - return cast<CXXConstructorDecl>(FunctionDecl::getCanonicalDecl()); - } CXXConstructorDecl *getCanonicalDecl() override { return cast<CXXConstructorDecl>(FunctionDecl::getCanonicalDecl()); } + const CXXConstructorDecl *getCanonicalDecl() const { + return const_cast<CXXConstructorDecl*>(this)->getCanonicalDecl(); + } // Implement isa/cast/dyncast/etc. static bool classof(const Decl *D) { return classofKind(D->getKind()); } @@ -2373,9 +2375,7 @@ public: bool isImplicitlyDeclared); static CXXDestructorDecl *CreateDeserialized(ASTContext & C, unsigned ID); - void setOperatorDelete(FunctionDecl *OD) { - cast<CXXDestructorDecl>(getFirstDecl())->OperatorDelete = OD; - } + void setOperatorDelete(FunctionDecl *OD); const FunctionDecl *getOperatorDelete() const { return cast<CXXDestructorDecl>(getFirstDecl())->OperatorDelete; } |