1e5dd7070Spatrick //===--- ByteCodeGenError.h - Byte code generation error ----------*- C -*-===// 2e5dd7070Spatrick // 3e5dd7070Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4e5dd7070Spatrick // See https://llvm.org/LICENSE.txt for license information. 5e5dd7070Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6e5dd7070Spatrick // 7e5dd7070Spatrick //===----------------------------------------------------------------------===// 8e5dd7070Spatrick 9e5dd7070Spatrick #ifndef LLVM_CLANG_AST_INTERP_BYTECODEGENERROR_H 10e5dd7070Spatrick #define LLVM_CLANG_AST_INTERP_BYTECODEGENERROR_H 11e5dd7070Spatrick 12e5dd7070Spatrick #include "clang/AST/Decl.h" 13e5dd7070Spatrick #include "clang/AST/Stmt.h" 14e5dd7070Spatrick #include "clang/Basic/SourceLocation.h" 15e5dd7070Spatrick #include "llvm/Support/Error.h" 16e5dd7070Spatrick 17e5dd7070Spatrick namespace clang { 18e5dd7070Spatrick namespace interp { 19e5dd7070Spatrick 20e5dd7070Spatrick /// Error thrown by the compiler. 21e5dd7070Spatrick struct ByteCodeGenError : public llvm::ErrorInfo<ByteCodeGenError> { 22e5dd7070Spatrick public: ByteCodeGenErrorByteCodeGenError23*12c85518Srobert ByteCodeGenError(SourceRange Range) : Range(Range) {} ByteCodeGenErrorByteCodeGenError24*12c85518Srobert ByteCodeGenError(const Stmt *S) : ByteCodeGenError(S->getSourceRange()) {} ByteCodeGenErrorByteCodeGenError25*12c85518Srobert ByteCodeGenError(const Decl *D) : ByteCodeGenError(D->getSourceRange()) {} 26e5dd7070Spatrick logByteCodeGenError27e5dd7070Spatrick void log(raw_ostream &OS) const override { OS << "unimplemented feature"; } 28e5dd7070Spatrick getRangeByteCodeGenError29*12c85518Srobert const SourceRange &getRange() const { return Range; } 30e5dd7070Spatrick 31e5dd7070Spatrick static char ID; 32e5dd7070Spatrick 33e5dd7070Spatrick private: 34*12c85518Srobert // Range of the item where the error occurred. 35*12c85518Srobert SourceRange Range; 36e5dd7070Spatrick 37e5dd7070Spatrick // Users are not expected to use error_code. convertToErrorCodeByteCodeGenError38e5dd7070Spatrick std::error_code convertToErrorCode() const override { 39e5dd7070Spatrick return llvm::inconvertibleErrorCode(); 40e5dd7070Spatrick } 41e5dd7070Spatrick }; 42e5dd7070Spatrick 43e5dd7070Spatrick } // namespace interp 44e5dd7070Spatrick } // namespace clang 45e5dd7070Spatrick 46e5dd7070Spatrick #endif 47