diff options
author | Timothy Flynn <trflynn89@pm.me> | 2021-10-31 08:20:21 -0400 |
---|---|---|
committer | Linus Groh <mail@linusgroh.de> | 2021-10-31 15:48:36 +0100 |
commit | 1939c72ecc4acb3c13e10d6cdc5cb99457109613 (patch) | |
tree | 286dc471d75d7a38e01297a6580e3f9c1edd250a /Userland | |
parent | 7653be606213542da06658ed8192b5559703e841 (diff) | |
download | serenity-1939c72ecc4acb3c13e10d6cdc5cb99457109613.zip |
Spreadsheet: Convert JSIntegration to ThrowCompletionOr
Diffstat (limited to 'Userland')
-rw-r--r-- | Userland/Applications/Spreadsheet/JSIntegration.cpp | 197 | ||||
-rw-r--r-- | Userland/Applications/Spreadsheet/JSIntegration.h | 14 |
2 files changed, 80 insertions, 131 deletions
diff --git a/Userland/Applications/Spreadsheet/JSIntegration.cpp b/Userland/Applications/Spreadsheet/JSIntegration.cpp index 24ab6c4fc2..681fa4d9d9 100644 --- a/Userland/Applications/Spreadsheet/JSIntegration.cpp +++ b/Userland/Applications/Spreadsheet/JSIntegration.cpp @@ -151,12 +151,12 @@ void SheetGlobalObject::initialize_global_object() { Base::initialize_global_object(); u8 attr = JS::Attribute::Configurable | JS::Attribute::Writable | JS::Attribute::Enumerable; - define_old_native_function("get_real_cell_contents", get_real_cell_contents, 1, attr); - define_old_native_function("set_real_cell_contents", set_real_cell_contents, 2, attr); - define_old_native_function("parse_cell_name", parse_cell_name, 1, attr); - define_old_native_function("current_cell_position", current_cell_position, 0, attr); - define_old_native_function("column_arithmetic", column_arithmetic, 2, attr); - define_old_native_function("column_index", column_index, 1, attr); + define_native_function("get_real_cell_contents", get_real_cell_contents, 1, attr); + define_native_function("set_real_cell_contents", set_real_cell_contents, 2, attr); + define_native_function("parse_cell_name", parse_cell_name, 1, attr); + define_native_function("current_cell_position", current_cell_position, 0, attr); + define_native_function("column_arithmetic", column_arithmetic, 2, attr); + define_native_function("column_index", column_index, 1, attr); } void SheetGlobalObject::visit_edges(Visitor& visitor) @@ -169,32 +169,24 @@ void SheetGlobalObject::visit_edges(Visitor& visitor) } } -JS_DEFINE_OLD_NATIVE_FUNCTION(SheetGlobalObject::get_real_cell_contents) +JS_DEFINE_NATIVE_FUNCTION(SheetGlobalObject::get_real_cell_contents) { - auto* this_object = TRY_OR_DISCARD(vm.this_value(global_object).to_object(global_object)); + auto* this_object = TRY(vm.this_value(global_object).to_object(global_object)); - if (!is<SheetGlobalObject>(this_object)) { - vm.throw_exception<JS::TypeError>(global_object, JS::ErrorType::NotAnObjectOfType, "SheetGlobalObject"); - return {}; - } + if (!is<SheetGlobalObject>(this_object)) + return vm.throw_completion<JS::TypeError>(global_object, JS::ErrorType::NotAnObjectOfType, "SheetGlobalObject"); auto sheet_object = static_cast<SheetGlobalObject*>(this_object); - if (vm.argument_count() != 1) { - vm.throw_exception<JS::TypeError>(global_object, "Expected exactly one argument to get_real_cell_contents()"); - return {}; - } + if (vm.argument_count() != 1) + return vm.throw_completion<JS::TypeError>(global_object, "Expected exactly one argument to get_real_cell_contents()"); auto name_value = vm.argument(0); - if (!name_value.is_string()) { - vm.throw_exception<JS::TypeError>(global_object, "Expected a String argument to get_real_cell_contents()"); - return {}; - } + if (!name_value.is_string()) + return vm.throw_completion<JS::TypeError>(global_object, "Expected a String argument to get_real_cell_contents()"); auto position = sheet_object->m_sheet.parse_cell_name(name_value.as_string().string()); - if (!position.has_value()) { - vm.throw_exception<JS::TypeError>(global_object, "Invalid cell name"); - return {}; - } + if (!position.has_value()) + return vm.throw_completion<JS::TypeError>(global_object, "Invalid cell name"); const auto* cell = sheet_object->m_sheet.at(position.value()); if (!cell) @@ -206,38 +198,28 @@ JS_DEFINE_OLD_NATIVE_FUNCTION(SheetGlobalObject::get_real_cell_contents) return JS::js_string(vm, cell->data()); } -JS_DEFINE_OLD_NATIVE_FUNCTION(SheetGlobalObject::set_real_cell_contents) +JS_DEFINE_NATIVE_FUNCTION(SheetGlobalObject::set_real_cell_contents) { - auto* this_object = TRY_OR_DISCARD(vm.this_value(global_object).to_object(global_object)); + auto* this_object = TRY(vm.this_value(global_object).to_object(global_object)); - if (!is<SheetGlobalObject>(this_object)) { - vm.throw_exception<JS::TypeError>(global_object, JS::ErrorType::NotAnObjectOfType, "SheetGlobalObject"); - return {}; - } + if (!is<SheetGlobalObject>(this_object)) + return vm.throw_completion<JS::TypeError>(global_object, JS::ErrorType::NotAnObjectOfType, "SheetGlobalObject"); auto sheet_object = static_cast<SheetGlobalObject*>(this_object); - if (vm.argument_count() != 2) { - vm.throw_exception<JS::TypeError>(global_object, "Expected exactly two arguments to set_real_cell_contents()"); - return {}; - } + if (vm.argument_count() != 2) + return vm.throw_completion<JS::TypeError>(global_object, "Expected exactly two arguments to set_real_cell_contents()"); auto name_value = vm.argument(0); - if (!name_value.is_string()) { - vm.throw_exception<JS::TypeError>(global_object, "Expected the first argument of set_real_cell_contents() to be a String"); - return {}; - } + if (!name_value.is_string()) + return vm.throw_completion<JS::TypeError>(global_object, "Expected the first argument of set_real_cell_contents() to be a String"); auto position = sheet_object->m_sheet.parse_cell_name(name_value.as_string().string()); - if (!position.has_value()) { - vm.throw_exception<JS::TypeError>(global_object, "Invalid cell name"); - return {}; - } + if (!position.has_value()) + return vm.throw_completion<JS::TypeError>(global_object, "Invalid cell name"); auto new_contents_value = vm.argument(1); - if (!new_contents_value.is_string()) { - vm.throw_exception<JS::TypeError>(global_object, "Expected the second argument of set_real_cell_contents() to be a String"); - return {}; - } + if (!new_contents_value.is_string()) + return vm.throw_completion<JS::TypeError>(global_object, "Expected the second argument of set_real_cell_contents() to be a String"); auto& cell = sheet_object->m_sheet.ensure(position.value()); auto& new_contents = new_contents_value.as_string().string(); @@ -245,26 +227,20 @@ JS_DEFINE_OLD_NATIVE_FUNCTION(SheetGlobalObject::set_real_cell_contents) return JS::js_null(); } -JS_DEFINE_OLD_NATIVE_FUNCTION(SheetGlobalObject::parse_cell_name) +JS_DEFINE_NATIVE_FUNCTION(SheetGlobalObject::parse_cell_name) { - auto* this_object = TRY_OR_DISCARD(vm.this_value(global_object).to_object(global_object)); + auto* this_object = TRY(vm.this_value(global_object).to_object(global_object)); - if (!is<SheetGlobalObject>(this_object)) { - vm.throw_exception<JS::TypeError>(global_object, JS::ErrorType::NotAnObjectOfType, "SheetGlobalObject"); - return {}; - } + if (!is<SheetGlobalObject>(this_object)) + return vm.throw_completion<JS::TypeError>(global_object, JS::ErrorType::NotAnObjectOfType, "SheetGlobalObject"); auto sheet_object = static_cast<SheetGlobalObject*>(this_object); - if (vm.argument_count() != 1) { - vm.throw_exception<JS::TypeError>(global_object, "Expected exactly one argument to parse_cell_name()"); - return {}; - } + if (vm.argument_count() != 1) + return vm.throw_completion<JS::TypeError>(global_object, "Expected exactly one argument to parse_cell_name()"); auto name_value = vm.argument(0); - if (!name_value.is_string()) { - vm.throw_exception<JS::TypeError>(global_object, "Expected a String argument to parse_cell_name()"); - return {}; - } + if (!name_value.is_string()) + return vm.throw_completion<JS::TypeError>(global_object, "Expected a String argument to parse_cell_name()"); auto position = sheet_object->m_sheet.parse_cell_name(name_value.as_string().string()); if (!position.has_value()) return JS::js_undefined(); @@ -276,19 +252,15 @@ JS_DEFINE_OLD_NATIVE_FUNCTION(SheetGlobalObject::parse_cell_name) return object; } -JS_DEFINE_OLD_NATIVE_FUNCTION(SheetGlobalObject::current_cell_position) +JS_DEFINE_NATIVE_FUNCTION(SheetGlobalObject::current_cell_position) { - if (vm.argument_count() != 0) { - vm.throw_exception<JS::TypeError>(global_object, "Expected no arguments to current_cell_position()"); - return {}; - } + if (vm.argument_count() != 0) + return vm.throw_completion<JS::TypeError>(global_object, "Expected no arguments to current_cell_position()"); - auto* this_object = TRY_OR_DISCARD(vm.this_value(global_object).to_object(global_object)); + auto* this_object = TRY(vm.this_value(global_object).to_object(global_object)); - if (!is<SheetGlobalObject>(this_object)) { - vm.throw_exception<JS::TypeError>(global_object, JS::ErrorType::NotAnObjectOfType, "SheetGlobalObject"); - return {}; - } + if (!is<SheetGlobalObject>(this_object)) + return vm.throw_completion<JS::TypeError>(global_object, JS::ErrorType::NotAnObjectOfType, "SheetGlobalObject"); auto sheet_object = static_cast<SheetGlobalObject*>(this_object); auto* current_cell = sheet_object->m_sheet.current_evaluated_cell(); @@ -304,72 +276,55 @@ JS_DEFINE_OLD_NATIVE_FUNCTION(SheetGlobalObject::current_cell_position) return object; } -JS_DEFINE_OLD_NATIVE_FUNCTION(SheetGlobalObject::column_index) +JS_DEFINE_NATIVE_FUNCTION(SheetGlobalObject::column_index) { - if (vm.argument_count() != 1) { - vm.throw_exception<JS::TypeError>(global_object, "Expected exactly one argument to column_index()"); - return {}; - } + if (vm.argument_count() != 1) + return vm.throw_completion<JS::TypeError>(global_object, "Expected exactly one argument to column_index()"); auto column_name = vm.argument(0); - if (!column_name.is_string()) { - vm.throw_exception<JS::TypeError>(global_object, JS::ErrorType::NotAnObjectOfType, "String"); - return {}; - } + if (!column_name.is_string()) + return vm.throw_completion<JS::TypeError>(global_object, JS::ErrorType::NotAnObjectOfType, "String"); auto& column_name_str = column_name.as_string().string(); - auto* this_object = TRY_OR_DISCARD(vm.this_value(global_object).to_object(global_object)); + auto* this_object = TRY(vm.this_value(global_object).to_object(global_object)); - if (!is<SheetGlobalObject>(this_object)) { - vm.throw_exception<JS::TypeError>(global_object, JS::ErrorType::NotAnObjectOfType, "SheetGlobalObject"); - return {}; - } + if (!is<SheetGlobalObject>(this_object)) + return vm.throw_completion<JS::TypeError>(global_object, JS::ErrorType::NotAnObjectOfType, "SheetGlobalObject"); auto sheet_object = static_cast<SheetGlobalObject*>(this_object); auto& sheet = sheet_object->m_sheet; auto column_index = sheet.column_index(column_name_str); - if (!column_index.has_value()) { - vm.throw_exception(global_object, JS::TypeError::create(global_object, String::formatted("'{}' is not a valid column", column_name_str))); - return {}; - } + if (!column_index.has_value()) + return vm.throw_completion<JS::TypeError>(global_object, String::formatted("'{}' is not a valid column", column_name_str)); return JS::Value((i32)column_index.value()); } -JS_DEFINE_OLD_NATIVE_FUNCTION(SheetGlobalObject::column_arithmetic) +JS_DEFINE_NATIVE_FUNCTION(SheetGlobalObject::column_arithmetic) { - if (vm.argument_count() != 2) { - vm.throw_exception<JS::TypeError>(global_object, "Expected exactly two arguments to column_arithmetic()"); - return {}; - } + if (vm.argument_count() != 2) + return vm.throw_completion<JS::TypeError>(global_object, "Expected exactly two arguments to column_arithmetic()"); auto column_name = vm.argument(0); - if (!column_name.is_string()) { - vm.throw_exception<JS::TypeError>(global_object, JS::ErrorType::NotAnObjectOfType, "String"); - return {}; - } + if (!column_name.is_string()) + return vm.throw_completion<JS::TypeError>(global_object, JS::ErrorType::NotAnObjectOfType, "String"); auto& column_name_str = column_name.as_string().string(); - auto offset = TRY_OR_DISCARD(vm.argument(1).to_number(global_object)); - + auto offset = TRY(vm.argument(1).to_number(global_object)); auto offset_number = offset.as_i32(); - auto* this_object = TRY_OR_DISCARD(vm.this_value(global_object).to_object(global_object)); + auto* this_object = TRY(vm.this_value(global_object).to_object(global_object)); - if (!is<SheetGlobalObject>(this_object)) { - vm.throw_exception<JS::TypeError>(global_object, JS::ErrorType::NotAnObjectOfType, "SheetGlobalObject"); - return {}; - } + if (!is<SheetGlobalObject>(this_object)) + return vm.throw_completion<JS::TypeError>(global_object, JS::ErrorType::NotAnObjectOfType, "SheetGlobalObject"); auto sheet_object = static_cast<SheetGlobalObject*>(this_object); auto& sheet = sheet_object->m_sheet; auto new_column = sheet.column_arithmetic(column_name_str, offset_number); - if (!new_column.has_value()) { - vm.throw_exception(global_object, JS::TypeError::create(global_object, String::formatted("'{}' is not a valid column", column_name_str))); - return {}; - } + if (!new_column.has_value()) + return vm.throw_completion<JS::TypeError>(global_object, String::formatted("'{}' is not a valid column", column_name_str)); return JS::js_string(vm, new_column.release_value()); } @@ -387,7 +342,7 @@ WorkbookObject::~WorkbookObject() void WorkbookObject::initialize(JS::GlobalObject& global_object) { Object::initialize(global_object); - define_old_native_function("sheet", sheet, 1, JS::default_attributes); + define_native_function("sheet", sheet, 1, JS::default_attributes); } void WorkbookObject::visit_edges(Visitor& visitor) @@ -397,24 +352,18 @@ void WorkbookObject::visit_edges(Visitor& visitor) visitor.visit(&sheet.global_object()); } -JS_DEFINE_OLD_NATIVE_FUNCTION(WorkbookObject::sheet) +JS_DEFINE_NATIVE_FUNCTION(WorkbookObject::sheet) { - if (vm.argument_count() != 1) { - vm.throw_exception<JS::TypeError>(global_object, "Expected exactly one argument to sheet()"); - return {}; - } + if (vm.argument_count() != 1) + return vm.throw_completion<JS::TypeError>(global_object, "Expected exactly one argument to sheet()"); auto name_value = vm.argument(0); - if (!name_value.is_string() && !name_value.is_number()) { - vm.throw_exception<JS::TypeError>(global_object, "Expected a String or Number argument to sheet()"); - return {}; - } + if (!name_value.is_string() && !name_value.is_number()) + return vm.throw_completion<JS::TypeError>(global_object, "Expected a String or Number argument to sheet()"); - auto* this_object = TRY_OR_DISCARD(vm.this_value(global_object).to_object(global_object)); + auto* this_object = TRY(vm.this_value(global_object).to_object(global_object)); - if (!is<WorkbookObject>(this_object)) { - vm.throw_exception<JS::TypeError>(global_object, JS::ErrorType::NotAnObjectOfType, "WorkbookObject"); - return {}; - } + if (!is<WorkbookObject>(this_object)) + return vm.throw_completion<JS::TypeError>(global_object, JS::ErrorType::NotAnObjectOfType, "WorkbookObject"); auto& workbook = static_cast<WorkbookObject*>(this_object)->m_workbook; @@ -425,7 +374,7 @@ JS_DEFINE_OLD_NATIVE_FUNCTION(WorkbookObject::sheet) return JS::Value(&sheet.global_object()); } } else { - auto index = TRY_OR_DISCARD(name_value.to_length(global_object)); + auto index = TRY(name_value.to_length(global_object)); if (index < workbook.sheets().size()) return JS::Value(&workbook.sheets()[index].global_object()); } diff --git a/Userland/Applications/Spreadsheet/JSIntegration.h b/Userland/Applications/Spreadsheet/JSIntegration.h index 4519f22f88..c82070eee9 100644 --- a/Userland/Applications/Spreadsheet/JSIntegration.h +++ b/Userland/Applications/Spreadsheet/JSIntegration.h @@ -32,12 +32,12 @@ public: virtual JS::ThrowCompletionOr<bool> internal_set(JS::PropertyKey const&, JS::Value value, JS::Value receiver) override; virtual void initialize_global_object() override; - JS_DECLARE_OLD_NATIVE_FUNCTION(get_real_cell_contents); - JS_DECLARE_OLD_NATIVE_FUNCTION(set_real_cell_contents); - JS_DECLARE_OLD_NATIVE_FUNCTION(parse_cell_name); - JS_DECLARE_OLD_NATIVE_FUNCTION(current_cell_position); - JS_DECLARE_OLD_NATIVE_FUNCTION(column_index); - JS_DECLARE_OLD_NATIVE_FUNCTION(column_arithmetic); + JS_DECLARE_NATIVE_FUNCTION(get_real_cell_contents); + JS_DECLARE_NATIVE_FUNCTION(set_real_cell_contents); + JS_DECLARE_NATIVE_FUNCTION(parse_cell_name); + JS_DECLARE_NATIVE_FUNCTION(current_cell_position); + JS_DECLARE_NATIVE_FUNCTION(column_index); + JS_DECLARE_NATIVE_FUNCTION(column_arithmetic); private: virtual void visit_edges(Visitor&) override; @@ -54,7 +54,7 @@ public: virtual void initialize(JS::GlobalObject&) override; - JS_DECLARE_OLD_NATIVE_FUNCTION(sheet); + JS_DECLARE_NATIVE_FUNCTION(sheet); private: virtual void visit_edges(Visitor&) override; |