| //===- ASTImportError.h - Define errors while importing AST -----*- C++ -*-===// |
| // |
| // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. |
| // See https://llvm.org/LICENSE.txt for license information. |
| // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // This file defines the ASTImportError class which basically defines the kind |
| // of error while importing AST . |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef LLVM_CLANG_AST_ASTIMPORTERROR_H |
| #define LLVM_CLANG_AST_ASTIMPORTERROR_H |
| |
| #include "llvm/Support/Error.h" |
| |
| namespace clang { |
| |
| class ASTImportError : public llvm::ErrorInfo<ASTImportError> { |
| public: |
| /// \brief Kind of error when importing an AST component. |
| enum ErrorKind { |
| NameConflict, /// Naming ambiguity (likely ODR violation). |
| UnsupportedConstruct, /// Not supported node or case. |
| Unknown /// Other error. |
| }; |
| |
| ErrorKind Error; |
| |
| static char ID; |
| |
| ASTImportError() : Error(Unknown) {} |
| ASTImportError(const ASTImportError &Other) : Error(Other.Error) {} |
| ASTImportError &operator=(const ASTImportError &Other) { |
| Error = Other.Error; |
| return *this; |
| } |
| ASTImportError(ErrorKind Error) : Error(Error) {} |
| |
| std::string toString() const; |
| |
| void log(llvm::raw_ostream &OS) const override; |
| std::error_code convertToErrorCode() const override; |
| }; |
| |
| } // namespace clang |
| |
| #endif // LLVM_CLANG_AST_ASTIMPORTERROR_H |