Improve 'not implemented' error messages
This commit is contained in:
parent
7f574eabbd
commit
0541068c2b
2 changed files with 12 additions and 7 deletions
|
|
@ -6,7 +6,7 @@ namespace pslang::interpreter
|
||||||
|
|
||||||
value exec_foreign(context & context, void * pointer, types::type const & return_type, std::vector<value> args)
|
value exec_foreign(context & context, void * pointer, types::type const & return_type, std::vector<value> args)
|
||||||
{
|
{
|
||||||
throw std::runtime_error("Not implemented");
|
throw std::runtime_error("exec_foreign is not implemented");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -9,6 +9,7 @@
|
||||||
#include <type_traits>
|
#include <type_traits>
|
||||||
#include <unordered_map>
|
#include <unordered_map>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <sstream>
|
||||||
|
|
||||||
namespace pslang::jit::aarch64
|
namespace pslang::jit::aarch64
|
||||||
{
|
{
|
||||||
|
|
@ -256,7 +257,7 @@ namespace pslang::jit::aarch64
|
||||||
template <typename T>
|
template <typename T>
|
||||||
void apply(T const &)
|
void apply(T const &)
|
||||||
{
|
{
|
||||||
throw std::runtime_error("Not implemented");
|
throw std::runtime_error(std::string("reg_extend_visitor is not implemented for ") + typeid(T).name());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -298,7 +299,7 @@ namespace pslang::jit::aarch64
|
||||||
template <typename Node>
|
template <typename Node>
|
||||||
void apply(Node const &)
|
void apply(Node const &)
|
||||||
{
|
{
|
||||||
throw std::runtime_error("Not implemented");
|
throw std::runtime_error(std::string("compile_function_visitor is not implemented for ") + typeid(Node).name());
|
||||||
}
|
}
|
||||||
|
|
||||||
void apply(ast::bool_literal const & node)
|
void apply(ast::bool_literal const & node)
|
||||||
|
|
@ -477,7 +478,7 @@ namespace pslang::jit::aarch64
|
||||||
break;
|
break;
|
||||||
case ast::binary_operation_type::remainder:
|
case ast::binary_operation_type::remainder:
|
||||||
// TODO: implement via div & mul & sub
|
// TODO: implement via div & mul & sub
|
||||||
throw std::runtime_error("Not implemented");
|
throw std::runtime_error("remainder operator is not implemented");
|
||||||
case ast::binary_operation_type::binary_and:
|
case ast::binary_operation_type::binary_and:
|
||||||
builder.and_reg(1, 0, 0);
|
builder.and_reg(1, 0, 0);
|
||||||
break;
|
break;
|
||||||
|
|
@ -599,7 +600,11 @@ namespace pslang::jit::aarch64
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
throw std::runtime_error("Not implemented");
|
{
|
||||||
|
std::ostringstream os;
|
||||||
|
os << "binary operation " << node.type << " is not implemented";
|
||||||
|
throw std::runtime_error(os.str());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -709,7 +714,7 @@ namespace pslang::jit::aarch64
|
||||||
{
|
{
|
||||||
auto identifier = std::get_if<ast::identifier>(node.lhs.get());
|
auto identifier = std::get_if<ast::identifier>(node.lhs.get());
|
||||||
if (!identifier)
|
if (!identifier)
|
||||||
throw std::runtime_error("Not implemented");
|
throw std::runtime_error("assignment for non-identifier lhs is not implemented");
|
||||||
|
|
||||||
apply(*node.rhs);
|
apply(*node.rhs);
|
||||||
|
|
||||||
|
|
@ -923,7 +928,7 @@ namespace pslang::jit::aarch64
|
||||||
template <typename Statement>
|
template <typename Statement>
|
||||||
void apply(Statement const &)
|
void apply(Statement const &)
|
||||||
{
|
{
|
||||||
throw std::runtime_error("Not implemented");
|
throw std::runtime_error(std::string("compile_visitor is not implemented for ") + typeid(Statement).name());
|
||||||
}
|
}
|
||||||
|
|
||||||
void apply(ast::function_definition const & node)
|
void apply(ast::function_definition const & node)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue