1234567891011121314151617181920212223242526272829303132333435363738394041 |
- #include "error.hpp"
-
- const char* compiler_error::what() const noexcept {
- return "an error occured while compiling the program";
- }
-
- void compiler_error::print_about(std::ostream& to) {
- to << what() << ": ";
- to << description << std::endl;
- }
-
- void compiler_error::print_location(std::ostream& to, file_mgr& fm, bool highlight) {
- if(!loc) return;
- to << "occuring on line " << loc->begin.line << ":" << std::endl;
- fm.print_location(to, *loc, highlight);
- }
-
- void compiler_error::pretty_print(std::ostream& to, file_mgr& fm) {
- print_about(to);
- print_location(to, fm);
- }
-
- const char* type_error::what() const noexcept {
- return "an error occured while checking the types of the program";
- }
-
- void type_error::pretty_print(std::ostream& to, file_mgr& fm) {
- print_about(to);
- print_location(to, fm, true);
- }
-
- void unification_error::pretty_print(std::ostream& to, file_mgr& fm, type_mgr& mgr) {
- type_error::pretty_print(to, fm);
- to << "the expected type was:" << std::endl;
- to << " \033[34m";
- left->print(mgr, to);
- to << std::endl << "\033[0mwhile the actual type was:" << std::endl;
- to << " \033[32m";
- right->print(mgr, to);
- to << "\033[0m" << std::endl;
- }
|