diff --git a/compiler/src/ast/ast_printer.cpp b/compiler/src/ast/ast_printer.cpp index 928f72ce..c82f279f 100644 --- a/compiler/src/ast/ast_printer.cpp +++ b/compiler/src/ast/ast_printer.cpp @@ -101,8 +101,7 @@ void ast_printer::visit_let_stmt(let_stmt *obj) { text_ << ")"; } void ast_printer::visit_assign_expr(assign_expr *obj) { - text_ << "(" - << "assign " << obj->name_->token_ << " "; + text_ << "(" << "assign " << obj->name_->token_ << " "; obj->right_->accept(this); text_ << ")"; } diff --git a/compiler/src/ast/ast_vis.cpp b/compiler/src/ast/ast_vis.cpp index 2843f8f8..f49d054d 100644 --- a/compiler/src/ast/ast_vis.cpp +++ b/compiler/src/ast/ast_vis.cpp @@ -315,8 +315,7 @@ void ast_vis::visit_ccode_stmt(ccode_stmt *obj) { text_ << "
"
         << ::string_utils::html_escape(
                string_utils::unescape(obj->code_str_->token_))
-        << "
" - << "
"; + << "" << "
"; end_block(); } void ast_vis::visit_import_stmt(import_stmt *obj) { @@ -348,8 +347,7 @@ void ast_vis::visit_nativeconst_stmt(nativeconst_stmt *obj) { text_ << "
"
           << ::string_utils::html_escape(
                  string_utils::unescape(obj->code_str_->token_))
-          << "
" - << "
"; + << "" << "
"; end_block(); } end_block(); @@ -359,8 +357,7 @@ void ast_vis::visit_runtimefeature_stmt(runtimefeature_stmt *obj) { text_ << "
"
         << ::string_utils::html_escape(
                string_utils::unescape(obj->feature_->token_))
-        << "
" - << "
"; + << "" << "
"; end_block(); } void ast_vis::visit_foreach_stmt(foreach_stmt *obj) { diff --git a/compiler/src/builtins/builtins.cpp b/compiler/src/builtins/builtins.cpp index b026a0b7..25b152ce 100644 --- a/compiler/src/builtins/builtins.cpp +++ b/compiler/src/builtins/builtins.cpp @@ -1268,7 +1268,6 @@ struct builtin_iif : builtin { const std::string &filepath, slot_matcher *dt_slot_matcher) override { std::stringstream message{}; auto o = ykobject(dt_pool); - if (args.size() != 3) { o.string_val_ = "iif() builtin expects 3 arguments"; } else if (!(args[0].datatype_->const_unwrap()->is_bool())) { @@ -1287,7 +1286,8 @@ struct builtin_iif : builtin { o.datatype_ = dt_pool->create("sr"); } if (args[1].is_a_function()) { - auto datatype_for_function = dt_slot_matcher->function_to_datatype_or_null(args[1]); + auto datatype_for_function = + dt_slot_matcher->function_to_datatype_or_null(args[1]); if (datatype_for_function != nullptr) { o.datatype_ = datatype_for_function; } else { diff --git a/compiler/src/compiler/entry_struct_func_compiler.cpp b/compiler/src/compiler/entry_struct_func_compiler.cpp index 6689c8a8..c6614d57 100644 --- a/compiler/src/compiler/entry_struct_func_compiler.cpp +++ b/compiler/src/compiler/entry_struct_func_compiler.cpp @@ -49,9 +49,8 @@ const std::vector> REPLACEMENTS = { using namespace yaksha; entry_struct_func_compiler::entry_struct_func_compiler(ykdt_pool *pool) : pool_(pool), counter_(0), counter_bin_data_(0), autogen_bin_data_(), - bin_data_(), name_improvements_(), errors_(), - structure_pool_(), structures_(), - reverse_name_improvements_() {} + bin_data_(), name_improvements_(), errors_(), structure_pool_(), + structures_(), reverse_name_improvements_() {} std::string entry_struct_func_compiler::compile(ykdatatype *entry_dt, datatype_compiler *dtc) { std::string repr = entry_dt->as_string(); @@ -69,7 +68,8 @@ std::string entry_struct_func_compiler::compile(ykdatatype *entry_dt, d->a_ = pool_->create("str"); d->b_ = entry_dt->args_[0]; } else { - errors_.emplace_back("Invalid entry datatype: " + entry_dt->as_string_simplified(), nullptr); + errors_.emplace_back( + "Invalid entry datatype: " + entry_dt->as_string_simplified(), nullptr); return "<><>"; } std::stringstream code{}; @@ -122,15 +122,15 @@ void entry_struct_func_compiler::compile_structures(std::stringstream &target) { if (!it->permanent_mark_) { bool cycle = this->visit(it, topo_sorted_types); if (cycle) { - errors_.emplace_back("Cycle detected in structure: " + it->dt_->as_string_simplified(), nullptr); + errors_.emplace_back("Cycle detected in structure: " + + it->dt_->as_string_simplified(), + nullptr); return; } } } // Forward declarations of classes - for (auto *it : sorted) { - target << it->prefixed_full_name_ << ";\n"; - } + for (auto *it : sorted) { target << it->prefixed_full_name_ << ";\n"; } // Topologically sorted structures for (auto *it : topo_sorted_types) { target << it->code_; } // Classes @@ -212,7 +212,9 @@ entry_struct_func_compiler::compile_function_dt(ykdatatype *function_dt, code << dtc->convert_dt(d->b_->args_[0], datatype_location::STRUCT, "", "") << " "; } else { - errors_.emplace_back("Invalid function output datatype: " + d->b_->as_string_simplified(), nullptr); + errors_.emplace_back("Invalid function output datatype: " + + d->b_->as_string_simplified(), + nullptr); code << "<><>"; } std::string name = @@ -320,7 +322,9 @@ entry_struct_func_compiler::compile_fixed_array(ykdatatype *fixed_array_dt, fixed_array_dt->args_.size() != 2 || fixed_array_dt->args_[0]->is_sm_entry() || fixed_array_dt->args_[1]->is_m_entry()) { - errors_.emplace_back("Invalid fixed array datatype: " + fixed_array_dt->as_string_simplified(), nullptr); + errors_.emplace_back("Invalid fixed array datatype: " + + fixed_array_dt->as_string_simplified(), + nullptr); return "<><>"; } // -- convert diff --git a/compiler/src/compiler/slot_matcher.h b/compiler/src/compiler/slot_matcher.h index 964a51ba..bc4d367f 100644 --- a/compiler/src/compiler/slot_matcher.h +++ b/compiler/src/compiler/slot_matcher.h @@ -52,9 +52,11 @@ namespace yaksha { */ struct slot_matcher : function_datatype_extractor { ~slot_matcher() override = default; - - virtual type_match_result slot_match_with_result(ykdatatype *datatype, const ykobject &provided_arg) = 0; - virtual type_match_result rvalue_match(const ykobject& left_side, const ykobject& right_side) = 0; + virtual type_match_result + slot_match_with_result(ykdatatype *datatype, + const ykobject &provided_arg) = 0; + virtual type_match_result rvalue_match(const ykobject &left_side, + const ykobject &right_side) = 0; /** * Match given two data types, taking auto-casting into account * @param required_datatype datatype that we require (LHS) @@ -62,9 +64,13 @@ namespace yaksha { * @param primitive_or_obj true if provided data is a primitive/object, false otherwise * @return type_match_result struct */ - virtual type_match_result type_match(ykdatatype* required_datatype, ykdatatype* provided_datatype, bool primitive_or_obj) = 0; - virtual bool is_identical_type(ykdatatype* required_datatype, ykdatatype* provided_datatype) = 0; - virtual bool is_not_identical_type(ykdatatype* required_datatype, ykdatatype* provided_datatype) = 0; + virtual type_match_result type_match(ykdatatype *required_datatype, + ykdatatype *provided_datatype, + bool primitive_or_obj) = 0; + virtual bool is_identical_type(ykdatatype *required_datatype, + ykdatatype *provided_datatype) = 0; + virtual bool is_not_identical_type(ykdatatype *required_datatype, + ykdatatype *provided_datatype) = 0; }; }// namespace yaksha #endif diff --git a/compiler/src/compiler/to_c_compiler.h b/compiler/src/compiler/to_c_compiler.h index aab909aa..6a897213 100644 --- a/compiler/src/compiler/to_c_compiler.h +++ b/compiler/src/compiler/to_c_compiler.h @@ -133,7 +133,8 @@ namespace yaksha { const std::pair &rhs, const ykdatatype *rhs_datatype, const ykdatatype *lhs_datatype) override; - [[nodiscard]] std::string wrap_in_paren(const std::string &code) const override; + [[nodiscard]] std::string + wrap_in_paren(const std::string &code) const override; void visit_cfor_stmt(cfor_stmt *obj) override; void visit_enum_stmt(enum_stmt *obj) override; void visit_union_stmt(union_stmt *obj) override; diff --git a/compiler/src/compiler/type_checker.h b/compiler/src/compiler/type_checker.h index f30b4093..fcd5e9da 100644 --- a/compiler/src/compiler/type_checker.h +++ b/compiler/src/compiler/type_checker.h @@ -48,7 +48,6 @@ #include "return_checker.h" #include "utilities/ykobject.h" namespace yaksha { - struct type_checker : expr_visitor, stmt_visitor, slot_matcher { explicit type_checker(std::string filepath, codefiles *cf, def_class_visitor *dcv, ykdt_pool *pool, @@ -61,8 +60,11 @@ namespace yaksha { type_match_result type_match(ykdatatype *required_datatype, ykdatatype *provided_datatype, bool primitive_or_obj) override; - type_match_result slot_match_with_result(ykdatatype *datatype, const ykobject &provided_arg) override; - type_match_result rvalue_match(const ykobject& left_side, const ykobject& right_side) override; + type_match_result + slot_match_with_result(ykdatatype *datatype, + const ykobject &provided_arg) override; + type_match_result rvalue_match(const ykobject &left_side, + const ykobject &right_side) override; ykdatatype *function_to_datatype_or_null(const ykobject &arg) override; void check(const std::vector &statements); void visit_assign_expr(assign_expr *obj) override; diff --git a/compiler/src/utilities/cpp_util.h b/compiler/src/utilities/cpp_util.h index ebed4aad..8dd53ff4 100644 --- a/compiler/src/utilities/cpp_util.h +++ b/compiler/src/utilities/cpp_util.h @@ -216,7 +216,7 @@ namespace yaksha { static inline void intentionally_ignored(const T &) {} // Reference: https://codereview.stackexchange.com/a/238646/47826 static inline std::size_t levenshtein_distance(const std::string &string_a, - const std::string &string_b) { + const std::string &string_b) { const auto size_a = string_a.size(); const auto size_b = string_b.size(); std::vector distances(size_b + 1); diff --git a/compiler/src/utilities/error_printer.cpp b/compiler/src/utilities/error_printer.cpp index c777ccdb..6711dbaf 100644 --- a/compiler/src/utilities/error_printer.cpp +++ b/compiler/src/utilities/error_printer.cpp @@ -85,21 +85,27 @@ namespace yaksha::errors { } } } - std::string - error_printer::errors_to_json_lines(const std::vector &errors) { + std::string error_printer::errors_to_json_lines( + const std::vector &errors) { std::stringstream ss{}; for (auto &err : errors) { ss << "{"; if (err.token_set_) { - ss << "\"file\":\"" << string_utils::escape_json(err.tok_.file_) << "\","; - auto relative_file = std::filesystem::relative(err.tok_.file_, "./").string(); - ss << "\"relative_file\":\"" << string_utils::escape_json(relative_file) << "\","; + ss << "\"file\":\"" << string_utils::escape_json(err.tok_.file_) + << "\","; + auto relative_file = + std::filesystem::relative(err.tok_.file_, "./").string(); + ss << "\"relative_file\":\"" << string_utils::escape_json(relative_file) + << "\","; ss << "\"line\":" << err.tok_.line_ + 1 << ","; ss << "\"pos\":" << err.tok_.pos_ << ","; - ss << "\"message\":\"" << string_utils::escape_json(err.message_) << "\","; - ss << "\"token\":\"" << string_utils::escape_json(err.tok_.original_) << "\""; + ss << "\"message\":\"" << string_utils::escape_json(err.message_) + << "\","; + ss << "\"token\":\"" << string_utils::escape_json(err.tok_.original_) + << "\""; } else { - ss << "\"message\":\"" << string_utils::escape_json(err.message_) << "\""; + ss << "\"message\":\"" << string_utils::escape_json(err.message_) + << "\""; } ss << "}\n"; } diff --git a/compiler/src/utilities/ykdatatype.cpp b/compiler/src/utilities/ykdatatype.cpp index c44a5a64..a118cee2 100644 --- a/compiler/src/utilities/ykdatatype.cpp +++ b/compiler/src/utilities/ykdatatype.cpp @@ -306,7 +306,7 @@ bool ykdatatype::is_dimension() const { return !is_primitive() && builtin_type_ == ykbuiltin::DIMENSION; } bool yaksha::internal_is_identical_type(ykdatatype *required_datatype, - ykdatatype *provided_datatype) { + ykdatatype *provided_datatype) { if (required_datatype != nullptr && provided_datatype != nullptr) { if (required_datatype->is_primitive() && provided_datatype->is_primitive()) { diff --git a/compiler/src/utilities/ykdatatype.h b/compiler/src/utilities/ykdatatype.h index b8a1580d..49040f27 100644 --- a/compiler/src/utilities/ykdatatype.h +++ b/compiler/src/utilities/ykdatatype.h @@ -101,7 +101,6 @@ namespace yaksha { bool lhs_mutates, bool assignment); [[nodiscard]] std::string as_string() const; [[nodiscard]] std::string as_string_simplified() const; - // meta type [[nodiscard]] bool is_c_primitive() const; [[nodiscard]] bool is_primitive() const; diff --git a/compiler/src/yaksha_lisp/yaksha_lisp.cpp b/compiler/src/yaksha_lisp/yaksha_lisp.cpp index e0056c36..df62c191 100644 --- a/compiler/src/yaksha_lisp/yaksha_lisp.cpp +++ b/compiler/src/yaksha_lisp/yaksha_lisp.cpp @@ -454,12 +454,11 @@ yaksha_lisp_value *yaksha_envmap::get(const std::string &symbol) { #ifdef YAKSHA_LISP_EVAL_DEBUG_IS_PRINTED auto v = get_internal(symbol); if (v == nullptr) { - std::cout << indent_ << ">>> " - << "env(" << this << ")." << symbol << " -> " + std::cout << indent_ << ">>> " << "env(" << this << ")." << symbol << " -> " << "NULL" << std::endl; } else { - std::cout << indent_ << ">>> " - << "env(" << this << ")." << symbol << " -> " << v << std::endl; + std::cout << indent_ << ">>> " << "env(" << this << ")." << symbol << " -> " + << v << std::endl; } return v; #else @@ -476,8 +475,8 @@ void yaksha_envmap::set(const std::string &symbol, yaksha_lisp_value *value, } LOG_COMP("not locked can try setting to this env"); #ifdef YAKSHA_LISP_EVAL_DEBUG_IS_PRINTED - std::cout << indent_ << ">>> " - << "env(" << this << ")." << symbol << " = " << value << std::endl; + std::cout << indent_ << ">>> " << "env(" << this << ")." << symbol << " = " + << value << std::endl; #endif // Define if not defined // Do not define in closure, only in current env