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