Error reporting fix

This commit is contained in:
Bobby Lucero 2025-08-06 21:46:52 -04:00
parent 17c15e5bad
commit 43c5f081d7

View File

@ -406,8 +406,13 @@ Value Interpreter::visitCallExpr(const std::shared_ptr<CallExpr>& expression) {
if (callee.isFunction()) {
Function* function = callee.asFunction();
if (arguments.size() != function->params.size()) {
throw std::runtime_error("Expected " + std::to_string(function->params.size()) +
" arguments but got " + std::to_string(arguments.size()) + ".");
std::string errorMsg = "Expected " + std::to_string(function->params.size()) +
" arguments but got " + std::to_string(arguments.size()) + ".";
if (errorReporter) {
errorReporter->reportError(expression->paren.line, expression->paren.column, "Runtime Error",
errorMsg, "");
}
throw std::runtime_error(errorMsg);
}
// Check if this is a tail call
@ -476,7 +481,13 @@ Value Interpreter::visitCallExpr(const std::shared_ptr<CallExpr>& expression) {
}
}
throw std::runtime_error("Can only call functions and classes.");
// Provide better error message with type information
std::string errorMsg = "Can only call functions, got " + callee.getType();
if (errorReporter) {
errorReporter->reportError(expression->paren.line, expression->paren.column, "Runtime Error",
errorMsg, "");
}
throw std::runtime_error(errorMsg);
}
Value Interpreter::visitArrayLiteralExpr(const std::shared_ptr<ArrayLiteralExpr>& expr) {