// This Source Code Form is subject to the terms of the Mozilla Public License // v. 2.0. If a copy of the MPL was not distributed with this file, You can // obtain one at http://mozilla.org/MPL/2.0/. #include "elna/source/result.h" namespace elna { namespace source { error::error(const char *path, const struct position position) : position(position), path(path) { } std::size_t error::line() const noexcept { return this->position.line; } std::size_t error::column() const noexcept { return this->position.column; } name_collision::name_collision(const std::string& name, const char *path, const struct position current, const struct position previous) : error(path, current), name(name), previous(previous) { } std::string name_collision::what() const { return "Name '" + name + "' was already defined"; } type_mismatch::type_mismatch(std::shared_ptr got, operation kind, const char *path, const struct position position) : error(path, position), kind(kind), got(got) { } std::string type_mismatch::what() const { return "Type cannot be used here."; } } }