1 #include <msp/debug/demangle.h>
2 #include <msp/strings/format.h>
10 data_error::data_error(const string &s, unsigned l, const string &w):
11 runtime_error(make_what(s, l, w)),
16 data_error::data_error(const string &s, unsigned l, const exception &e):
17 runtime_error(make_what(s, l, format("%s (%s)", Debug::demangle(typeid(e).name()), e.what()))),
22 string data_error::make_what(const string &s, unsigned l, const string &w)
25 return format("%s:%d: %s", s, l, w);
27 return format("%s: %s", s, w);
31 parse_error::parse_error(const string &t):
32 runtime_error(t.empty() ? "at end of input" : format("after '%s'", t))
36 syntax_error::syntax_error(const string &t):
37 runtime_error(t.empty() ? "at end of input" : format("at '%s'", t))
41 bad_definition::bad_definition(const string &w):
46 nesting_error::nesting_error(const string &w):
51 unknown_keyword::unknown_keyword(const string &k):
56 invalid_signature::invalid_signature(const string &k, const string &s):
57 runtime_error(format("%s %s", k, s))
61 no_collection::no_collection(const type_info &t):
62 runtime_error(Debug::demangle(t.name()))
65 } // namespace DataFile