1*81ad6265SDimitry Andric //===- ASTImportError.h - Define errors while importing AST -----*- C++ -*-===// 2*81ad6265SDimitry Andric // 3*81ad6265SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4*81ad6265SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 5*81ad6265SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6*81ad6265SDimitry Andric // 7*81ad6265SDimitry Andric //===----------------------------------------------------------------------===// 8*81ad6265SDimitry Andric // 9*81ad6265SDimitry Andric // This file defines the ASTImportError class which basically defines the kind 10*81ad6265SDimitry Andric // of error while importing AST . 11*81ad6265SDimitry Andric // 12*81ad6265SDimitry Andric //===----------------------------------------------------------------------===// 13*81ad6265SDimitry Andric 14*81ad6265SDimitry Andric #ifndef LLVM_CLANG_AST_ASTIMPORTERROR_H 15*81ad6265SDimitry Andric #define LLVM_CLANG_AST_ASTIMPORTERROR_H 16*81ad6265SDimitry Andric 17*81ad6265SDimitry Andric #include "llvm/Support/Error.h" 18*81ad6265SDimitry Andric 19*81ad6265SDimitry Andric namespace clang { 20*81ad6265SDimitry Andric 21*81ad6265SDimitry Andric class ASTImportError : public llvm::ErrorInfo<ASTImportError> { 22*81ad6265SDimitry Andric public: 23*81ad6265SDimitry Andric /// \brief Kind of error when importing an AST component. 24*81ad6265SDimitry Andric enum ErrorKind { 25*81ad6265SDimitry Andric NameConflict, /// Naming ambiguity (likely ODR violation). 26*81ad6265SDimitry Andric UnsupportedConstruct, /// Not supported node or case. 27*81ad6265SDimitry Andric Unknown /// Other error. 28*81ad6265SDimitry Andric }; 29*81ad6265SDimitry Andric 30*81ad6265SDimitry Andric ErrorKind Error; 31*81ad6265SDimitry Andric 32*81ad6265SDimitry Andric static char ID; 33*81ad6265SDimitry Andric ASTImportError()34*81ad6265SDimitry Andric ASTImportError() : Error(Unknown) {} ASTImportError(const ASTImportError & Other)35*81ad6265SDimitry Andric ASTImportError(const ASTImportError &Other) : Error(Other.Error) {} 36*81ad6265SDimitry Andric ASTImportError &operator=(const ASTImportError &Other) { 37*81ad6265SDimitry Andric Error = Other.Error; 38*81ad6265SDimitry Andric return *this; 39*81ad6265SDimitry Andric } ASTImportError(ErrorKind Error)40*81ad6265SDimitry Andric ASTImportError(ErrorKind Error) : Error(Error) {} 41*81ad6265SDimitry Andric 42*81ad6265SDimitry Andric std::string toString() const; 43*81ad6265SDimitry Andric 44*81ad6265SDimitry Andric void log(llvm::raw_ostream &OS) const override; 45*81ad6265SDimitry Andric std::error_code convertToErrorCode() const override; 46*81ad6265SDimitry Andric }; 47*81ad6265SDimitry Andric 48*81ad6265SDimitry Andric } // namespace clang 49*81ad6265SDimitry Andric 50*81ad6265SDimitry Andric #endif // LLVM_CLANG_AST_ASTIMPORTERROR_H 51