1#pragma once
2
3namespace taichi::lang {
4
5class IRModified {};
6
7class TaichiExceptionImpl : public std::exception {
8 std::string msg_;
9
10 public:
11 explicit TaichiExceptionImpl(const std::string msg) : msg_(msg) {
12 }
13 const char *what() const noexcept override {
14 return msg_.c_str();
15 }
16};
17
18class TaichiTypeError : public TaichiExceptionImpl {
19 using TaichiExceptionImpl::TaichiExceptionImpl;
20};
21
22class TaichiSyntaxError : public TaichiExceptionImpl {
23 using TaichiExceptionImpl::TaichiExceptionImpl;
24};
25
26class TaichiIndexError : public TaichiExceptionImpl {
27 using TaichiExceptionImpl::TaichiExceptionImpl;
28};
29
30class TaichiRuntimeError : public TaichiExceptionImpl {
31 using TaichiExceptionImpl::TaichiExceptionImpl;
32};
33
34class TaichiAssertionError : public TaichiExceptionImpl {
35 using TaichiExceptionImpl::TaichiExceptionImpl;
36};
37
38} // namespace taichi::lang
39